让A是MATLAB的4×4视图矩阵,从视图函数获得:
A = view;
A(1:3,1:3)应对应于旋转和缩放,
A(1:3,4)应对应翻译,
A(4,:)应该是[0 0 0 1].
将相机参数设置为以下简单场景时:
camproj('orthographic')
set(gca, 'CameraPosition', [0,0,0])
set(gca, 'CameraTarget', [0,0,1])
set(gca, 'CameraUpVector', [0,1,1])
我得到A =视图是:
-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]:
set(gca, 'CameraPosition', [0,0,10])
导致A:=视图矩阵成为
1 0 0 -0.5
0 1 0 -0.5
0 0 -1 5.5
0 0 0 1
所以我注意到A(3,4)中的-0.5已经变成了5.5,而这与5 = 10/2有关.
也就是说,将相机位置更改为[0,0,a]将A(3,4)处的视图矩阵大致为/ 2.
这是…奇怪?奇特?奇?
更新:
另一个优点是,A(1:3,1:3)的决定因素是-1,但是对于旋转矩阵,它应该是1.当它为-1时,这意味着它不仅是旋转,而且是反射.为什么我们需要反思?