(Sé que esto es geometría y no programación, pero seguro que alguno tenéis conocimientos para ayudarme.)
Estoy haciendo un "motor" (Una chorradilla) 3d, pero tengo un problemilla. Tengo definido un plano que actúa como cámara. El vector normal del plano es la dirección en la que mira la cámara, y D del plano (Ax+By+Cz+D=0) indica la posición de esta.
¿Cómo puedo hacer una función que, dado otro vector que define un punto en 3 dimensiones, me devuelva un vector en 2 dimensiones que corresponda a un pixel de la pantalla? Como referencia, el origen de coordenadas está en el centro, por lo que los vectores pueden tomar valores negativos y seguir teniendo sentido.
He pensado en hacer una transformación vectorial para que la cámara sea el nuevo origen de coordenadas y, con los nuevos vectores, actuar de forma normal, pero el cerebro me explota ya siquiera para saber si está bien pensado, despues de todo el trabajo que llevo.
http://www.kaod.es/Release.rar para el que quiera ver lo que llevo hecho De momento proyecta ortogonalmente, así que los cubos no se alejan y se ve, como bien me ha comentado un colega mío, como si los cubos fueran "subnormales".