c++ - 在 3d 空间中移动一个点

标签 c++ math opengl coordinates

我在 0,0,0 有一个点 我将点绕 Y 轴旋转 30 度,然后绕 X 轴旋转 30 度。 然后我想将点向前移动 10 个单位。

我知道如何计算出新的 X 和 Y 位置

MovementX = cos(angle) * MoveDistance;
MovementY = sin(angle) * MoveDistance;

但后来我意识到这些值会因为 Z 而改变,不是吗?

我如何算出 Z 以及我是否正确算出了 X 和 Y?

谢谢!

最佳答案

您应该将点坐标乘以完整的旋转矩阵,即 matRotationTotal = matRotationX * matRotationY * matRotationZ。检查this文章了解详情。

关于c++ - 在 3d 空间中移动一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531023/

相关文章:

python - 如何在极坐标半圆管内用直角坐标画曲线?

c++ - 如何设置 freeGLUT 和 GLEW 以在 Visual Studio 2013 中使用?

C++模板参数推导失败

c++ - 具有 boost::shared_ptr 类型成员的 std::map 序列化失败

c++ - wifstream 中的 seekg 和 imbue 工作错误

opengl - 查找 3d 点之间的旋转角度

c++ - 我可以更改 glui 面板背景颜色吗?

c++ - 在 C++ 中声明和分配二维数组

javascript - 在 Three.js 中根据方向和相机位置旋转、移动和缩放对象

javascript - 计算 3d 空间等距离的通用公式