Let A
ser vista de matriz 4x4 de MATLAB, obtenida a partir de la función de vista por:Matlab 3D matriz
A = view;
A(1:3,1:3)
debe corresponder a la rotación y el escalado,
A(1:3,4)
debe corresponder a la traducción, y
A(4,:)
debería hacerlo simplemente sea [0 0 0 1]
.
Al configurar los parámetros de la cámara a la siguiente escenario simple:
consigo que A = view
es:
-1 0 0 0.5
0 1 0 -0.5
0 0 1 -0.5
0 0 0 1
Ahora no puedo encontrar la nuestra, donde los 0,5 de vienen de . Tenga en cuenta que configuro la posición de la cámara en [0,0,0] por lo que no debe haber traducción.
Otra peculiaridad, ajustar la posición de la cámara en [0,0,10] por:
set(gca, 'CameraPosition', [0,0,10])
resultados en la A: = Vista matriz convertirse
1 0 0 -0.5
0 1 0 -0.5
0 0 -1 5.5
0 0 0 1
Así que me he dado cuenta de la -0.5 ha cambiado a 5.5 en A(3,4)
y esto de alguna manera tiene que ver con 5 = 10/2.
Es decir, cambiar la posición de la cámara a [0,0, a] cambia la matriz de vista al A(3,4)
por aproximadamente a/2
.
Esto es ... raro? ¿Peculiar? ¿Impar?
Actualización: Otra peculiaridad es que el determinante de A (1: 3,1: 3) es -1 aunque para una matriz de rotación debería ser 1. Cuando es -1 significa que no es solo rotación sino también reflejo. ¿Por qué necesitaríamos reflexión?
También estoy obteniendo los mismos resultados, realmente extraño ... Por lo que vale, mira esto [hilo] (http://www.mathworks.com/matlabcentral/answers/15887-how-to-render-an-accurate-image-of-a-3d-model) que menciona algunas propiedades de ejes no documentados relacionados con la vista 3D y 2D proyección – Amro