gpt4 book ai didi

Matlab 3D View 矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:16 25 4
gpt4 key购买 nike

A 是 MATLAB 的 4x4 View 矩阵,通过以下方式从 View 函数获得:

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 = 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]:

set(gca, 'CameraPosition', [0,0,10])

导致 A:=view 矩阵变为

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) 处的 View 矩阵大致更改为 a/2

这……很奇怪?奇特?奇怪?

更新:还有一个特点是A(1:3,1:3)的行列式是-1,虽然对于旋转矩阵它应该是1。当它是-1时意味着它不仅是旋转而且是反射。为什么我们需要反射(reflection)?

最佳答案

在 Matlab 2013a 中尝试相同的方法..您会发现结果符合预期...我不知道您使用的是哪个版本的 Matlab..但它肯定在 8.1 版本中修复

关于Matlab 3D View 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com