Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: 1cacalvo en 13 de Marzo de 2008, 12:06:37 PM

Título: Matematicas y planos
Publicado por: 1cacalvo en 13 de Marzo de 2008, 12:06:37 PM
Una preguntilla sobre matematicas..

Cual es la forma mas optima de realizar un cambio de coordenadas de un plano...

Es decir yo tengo

Ax + By + Cz + D = 0

y quisiera aplicarle un cambio de coordenadas para ello dispongo de la matriz ModelView.

Pd: Estoy hablando de OpenGl

Pd2: Estoy codificando FrustumCulling y tengo los planos sacados mediante la ProyectionMatrix pero necesito aplicarle tambien la ModelView.
Título: Matematicas y planos
Publicado por: Zaelsius en 13 de Marzo de 2008, 01:54:51 PM
¿Por qué no multiplicas la ProjectionMatrix por la ModelView antes de calcular los planos?

Explicación: http://www.lighthouse3d.com/opengl/viewfrustum/index.php?clipspace
Título: Matematicas y planos
Publicado por: 1cacalvo en 13 de Marzo de 2008, 03:30:28 PM
Si ya habia visto esa solución, pero es que debido a la manera de que esta estructurado el motorcillo, me era mas fácil calcular primero los planos y luego realizarle un cambio de coordenadas dependiendo de cada objeto...

Gracias de todos modos!!!

Igual debiera replantearme el <donde y el como>
Título: Matematicas y planos
Publicado por: Elvis Enmanuel en 23 de Marzo de 2008, 11:31:44 PM
A ver si te vale esto...


   //! Transforms a 3d plane
   TPlane3d<type> transform(const TPlane3d<type> &p,const TMat4 &m) const {
       TPlane3d<type> result;
       result.normal.x = (p.normal.x*m.M00 + p.normal.y*m.M10 + p.normal.z*m.M20 + p.d*m.M30);
       result.normal.y = (p.normal.x*m.M01 + p.normal.y*m.M11 + p.normal.z*m.M21 + p.d*m.M31);
       result.normal.z = (p.normal.x*m.M02 + p.normal.y*m.M12 + p.normal.z*m.M22 + p.d*m.M32);
       result.d        = (p.normal.x*m.M03 + p.normal.y*m.M13 + p.normal.z*m.M23 + p.d*m.M33);
       return result;
   }