我在设置相机时遇到问题,使其指向原点 O(0,0,0),与所有其他坐标轴成 45° 角,所有坐标均为正(当然应该具有相同的值)。你可以在图像中看到我得到的最接近的
但是,如您所见,x
此处的值为负,因此相机位于YZ
平面的错误一侧。
完整的可编译项目可以在这个修订版的要点中找到。
完成的相关矩阵乘法是
osg::Matrixd rotate_x(
1.0, 0.0, 0.0, 0.0,
0.0, q_cos, -q_sin, 0.0,
0.0, q_sin, q_cos, 0.0,
0.0, 0.0, 0.0, 1.0
);
osg::Matrixd rotate_y(
q_cos, 0.0, q_sin, 0.0,
0.0, 1.0, 0.0, 0.0,
-q_sin, 0.0, q_cos, 0.0,
0.0, 0.0, 0.0, 1.0
);
camera_pos = camera_pos * rotate_x;
camera_pos = camera_pos * rotate_y;
在文件中Simple.cpp
。
我试图弄清楚这是如何工作的(数学上和编程上)。我更喜欢尽可能少地依赖于openscenegraph的解决方案,更多地依赖于数学方面,因为我一开始想自己做数学,以真正掌握它是如何工作的。所以还没有四元数或其他高级的东西,这些东西在基本的线性代数大学课程中都没有教过。