Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Degiik en 01 de Enero de 2005, 01:39:30 PM

Título: Distancias...
Publicado por: Degiik en 01 de Enero de 2005, 01:39:30 PM
 Hola la pregunta es simple, a ver la respuesta...

Me gustaria saber la distancia que hay desde el punto del observador de cualquier poligono, para así ordenarlos. Un saludo.
Título: Distancias...
Publicado por: BeRSeRKeR en 01 de Enero de 2005, 04:25:49 PM
 Ten en cuenta que puede que se produzca un solapamiento de polígonos de forma que un polígono esté delante y detrás al mismo tiempo. Lo que se suele utilizar en estos caso es un arbol BSP y seccionar dichos polígonos. De esta forma podrías renderizar los polígonos de atrás hacia adelante y viceversa.

De todas formas, para calcular la distancia (perpendicular) de un punto a un plano (en este caso el plano sobre el que yace el polígono) sería:

distancia = dot(normal_del_plano, (punto_sobre_el_plano - posicion_camara))

En este caso la normal del plano también es la normal del polígono y el punto sobre el plano es cualquier vértice del polígono. "dot" es la operación producto escalar (dot product).

Saludos.
Título: Distancias...
Publicado por: Trancos en 01 de Enero de 2005, 09:27:21 PM
 Pero ¿ cual es la pregunta ?

1. Distancia desde la cámara hasta el plano en el que está contenido el polígono.
Respuesta: ( lo que dijo Berserker )

2. Distancia desde la cámara hasta el centro geométrico del polígono.
Respuesta: en primer lugar sacar el centro geométrico del polígono por la media ponderada de sus vértices.
en segundo lugar: donde P es la posición (del centro geométrico) del polígono y C la posición de la cámara.
sqrt( (Px-Cx)*(Px-Cx) + (Py-Cy)*(Py-Cy) + (Pz-Cz)*(Pz-Cz) );
Título: Distancias...
Publicado por: Degiik en 02 de Enero de 2005, 06:17:44 PM
  :lol: Gracias.