Este problema me molesta a mí y probablemente a todos los desarrolladores en el campo de la infografía desde entonces. Coge dos bibliotecas/marcos gráficos cualquiera y puedes estar casi seguro de que utilizan una definición de sistema de coordenadas diferente. Los ejemplos más famosos son, por supuesto, DirectX y OpenGL.
DirectX utiliza un sistema de mano izquierda en el que
positive X = (1, 0, 0) points to the right
positive Y = (0, 1, 0) to the top and
positive Z = (0, 0, 1) to the back.
OpenGL utiliza un sistema de mano derecha en el que
positive X = (1, 0, 0) also points to the right
positive Y = (0, 1, 0) also to the top but
positive Z = (0, 0, 1) to the front.
Para empeorar las cosas, su interpretación de los 16 valores de una matriz 4x4 está transpuesta entre sí (fila mayor <-> columna mayor).
Otro ejemplo sería OpenCV, que también tiene un sistema de mano derecha pero la Y apunta hacia abajo... ¡es un lío!
Pregunta 1:
¿Cómo se puede resolver de forma general, de manera que un objeto definido y transformado en el sistema A aparezca en la misma posición/orientación en el otro sistema B desde la posición (independiente) del espectador (por ejemplo, una persona frente a la pantalla)?
Supongo que se necesitarían los vectores base del sistema A (de donde procede el objeto) definidos en el sistema B (en el que se quiere visualizar) y configurar algún sistema de ecuaciones lineales a resolver para obtener una matriz de transformación que también esté definida en B y aplicarla a las coordenadas del objeto.
Pregunta 2:
La misma pregunta va para las matrices, ¿qué matriz (definida en el sistema B) transforma una transformación definida en el sistema A en una transformación definida en el sistema B para que tenga visualmente el mismo "efecto"? esperemos que sea la misma matriz que en la pregunta A con la excepción de que hay que transponer la matriz en caso de que los dos sistemas utilicen otras interpretaciones de los 16 valores.