让A
是MATLAB的4×4视图矩阵,通过从视图功能得到:Matlab的3D视图矩阵
A = view;
A(1:3,1:3)
应该对应于旋转度与尺度,
A(1:3,4)
应该对应翻译,并
A(4,:)
应简单地说就是[0 0 0 1]
。
当相机参数设置为以下简单的场景:
我得到A = view
是:
-1 0 0 0.5
0 1 0 -0.5
0 0 1 -0.5
0 0 0 1
现在我想不通我们在0.5的都来自。请注意,我将相机位置设置为[0,0,0],因此不应该进行翻译。
另一个特点,设置摄像机的位置为[0,0,10]的条件:在A
set(gca, 'CameraPosition', [0,0,10])
结果:=视图矩阵成为
1 0 0 -0.5
0 1 0 -0.5
0 0 -1 5.5
0 0 0 1
所以我注意到的-0.5在A(3,4)
中已更改为5.5,并且这与某种情况有关5 = 10/2。
也就是说,将摄像机位置更改为[0,0,a]将A(3,4)
的视图矩阵更改为大约a/2
。
这是......怪异的?奇特?奇?
更新: 另一个特性是A(1:3,1:3)的行列式为-1,尽管对于旋转矩阵它应该是1.当它是-1时,这意味着它不仅是旋转,也反映。为什么我们需要反思?
我也得到了相同的结果,确实很奇怪......对于它的价值,看看这个[线程] (http://www.mathworks.com/matlabcentral/answers/15887-how-to-render-an-accurate-image-of-a-3d-model),其中提到了一些与3D视图和2D相关的未公开的轴属性投影 – Amro