3D 空间中点的旋转

发布于 2024-10-22 17:20:45 字数 343 浏览 1 评论 0原文

我有一个与 3D 空间中的点旋转相关的问题。

假设我有一个具有 X、Y 和 Z 坐标的点。

现在我想通过以下三种方式之一指定旋转来旋转它:

  1. 通过用户定义的度数
  2. 通过用户定义的旋转轴
  3. 围绕(相对于)用户定义的点

我在 此处,但它没有解决第3点谁能帮我解决这个问题吗?

I have one problem related to rotation of point in 3D-space.

Suppose I have one point with X, Y and Z coordinates.

And now I want to rotate it, by specifying the rotation in one of these three ways:

  1. By user-defined degree
  2. By user-defined axis of rotation
  3. Around (relative to) user-defined point

I found good link over here, but it doesn't address point 3. Can anyone help me solve that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妄想挽回 2024-10-29 17:20:45

所有旋转都将围绕原点进行。所以你平移到原点,旋转,然后平移回来。

T = translate from global coordinates to user-coordinates
R = rotate around the origin (like in your link)
(T^-1) = translate back
point X

X_rotated = (T^-1)*R*T*X 

如果要旋转多个点,请将矩阵相乘:

A = (T^-1)*R*T
X_rotated = A*X

All rotations will go around the origin. So you translate to the origin, rotate, then translate back.

T = translate from global coordinates to user-coordinates
R = rotate around the origin (like in your link)
(T^-1) = translate back
point X

X_rotated = (T^-1)*R*T*X 

If you have multiple points to rotate then multiply the matrices together:

A = (T^-1)*R*T
X_rotated = A*X
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文