Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sacar La D Del Plano

Iniciado por _Grey, 04 de Octubre de 2005, 06:29:58 AM

« anterior - próximo »

_Grey

 Para obtener el plano de un poligono se saca la normal de este y luego se resuelve "d".

Pero resulta que me parece que la forma de sacar d, puede variar, lo encuentro basicamente asi:

d=dot(n,p);
d=-dot(n,p);

n es la normal, p un punto en el plano y dot() la funcion de dot product. La segunda la suelo encontrar en temas de OpenGL (mano derecha), y la primera en sistemas que parece ser que tiran de mano izquierda.

Estoy en un error y solo una es valida?? por que el resultado para calcular colisiones puede cambiar del todo, y si es asi, cual es valida??? o se usan segun el sistema de coordenadas!??!?

(nooo)  (nooo) (asco) En fin esta es una de esas cosas tan entretenidas como los vectores fila y los vectores columnas y su mania de hacer las cosas del reves el uno del otro.... y yo que no los sigo.....

Gracias, y saludos.  

gdl

 Creo que depende de si la ecuación es implícita o explícita:

ax+by+cz+d=0

ax+by+cz=d

Como sabras el vector (a,b,c) es la normal y, si el punto (x,y,z) pertenece al plano, entonces ax+by+cz es dot(n,p). Sustituyendo en las ecuaciones de arriba

dot(n,p)+d=0  =>  dot(n,p)=-d

dot(n,p)=d

Espero que te sirva de algo.

CoLSoN2

 Normalmente la ecuación que se utiliza es ax+by+cz+d=0, así que ya sabes.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

_Grey

 Bien, usare la "-dot(n,p);" como norma habitual..... espero hacer bien... :rolleyes:

Saludos.

PD:Cualquier comentario filosofico matematico o de standares bla bla bla es bien venido.

misscelan

 Metidos en esto me ha asaltado una duda básica.

Si hubiese sabido en clase de matemáticas que me hubiera servido para esto habría prestado más atención, en fin, me jodo por payaso...

D es la distancia del plano al origen (0,0,0).  Encontes como hay que interpretar el resultado del producto escalar (ax+by+cz) para que sumado a D de 0. ¿es la distancia de ese punto al origen pero de signo opuesto?

Iluminarme please!!!

Un saludo.

CoLSoN2

 Si no recuerdo mal, la "d" es igual a la distancia (mínima) del plano al origen dividido por la magnitud de la normal (a,b,c). Luego si esta está normalizada, d = distancia al origen.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

gdl

 En efecto, no es la distancia a no ser que la normal sea un vector unitario. Además, eso explica por qué aparece un signo negativo en la ecuación implícita.

misscelan

 Pongo un post que he visto en gamedev:


I recently changed my math code base about it due to SIMD optimizations. So I just wondered :

Question what convention are you using ?

(1) Plane.N * P + Plane.d; // (* P.w), * being the dot prod
or
(2) Plane.N * P - Plane.d

In other words, for you, does the signed distance d (projected on the normal
axis) mean :

Plane to Origin (1)
or
Origin to plane (2)

Por lo que dice aquí parece que es por convención.

Gracias por la anterior aclaración Colson.

Un saludo.

_Grey

 Osea que :

d=dot(n,p); -> Es de plano al origen

y

d=-dot(n,p); -> Es de origen al plano

Si entiendo bien....

gdl

 No siempre porque la normal puede orientarse hacia dos sentidos distintos. Sólo cuando esté orientada hacia el origen será verdad lo que has dicho.

CoLSoN2

Cita de: "_Grey"Osea que :

d=dot(n,p); -> Es de plano al origen

y

d=-dot(n,p); -> Es de origen al plano

Si entiendo bien....
De plano al origen o de origen a plano ¿el qué? Si te refieres a la distancia, una distancia siempre es positiva, así que toma el valor absoluto y ya está.

¿O es que si de Madrid a Barcelona hay X  kilómetros, de Barcelona a Madrid hay -X?
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

misscelan

 A ver...

---------O
---------|\
---------|-\
-------N |--\r
-------d |--- \
---------|-----\
**********P***********plano    !Vaya gráfico!

O = Origen(0,0,0)
N = Normal al plano
d = Distancia del plano en su punto más cercano (la perpendicular)
r = Vector OP o PO
P = Punto del plano

Proyectando el vector r sobre N obtenemos d:

        d =N.r/|N|
       
       Tomando R como (P - O) entonces R = P

       d*|N| = N1r1 +N2r2 + N3r3  que es lo mismo que D = Ax + By + Cz;

       Si tomamos R como (O - P) entonces es -R

       d*|N| = -N1r1 -N2r2 -N3r3  que es lo mismo que  Ax + By + Cz = -D

A todo esto si la normal está normalizada por un buen normalizador  D sería igual a d.
     
Bueno que esto lo revise un matemático de verdad y me ponga verde.

Un saludo






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.