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.
¿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
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>
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;
}