【问题标题】:Rotate 3D point around another 3D Point围绕另一个 3D 点旋转 3D 点
【发布时间】:2021-10-28 06:03:09
【问题描述】:

是的,我一直在搜索 stackoverflow 上的其他帖子,但大多数情况下我不理解它们,或者我不知道如何用我的脚本语言实现它。

我想围绕另一个 3D 点旋转一个 3D 点,我有一个具有 3D 旋转的父 3D 点和一个具有 3D 旋转的子 3D 点,我如何围绕父点旋转子点以保持旋转信息?

脚本语言是PAWN,但C语言也很好(因为它很相似),我知道我必须使用那些功能:

  • floatcos(Float:angle, anglemode(radian, degree or grades));
  • floatsin(Float:angle, anglemode(radian, degree or grades));
  • floattan(Float:angle, anglemode(radian, degree or grades));

父点和子点具有以下坐标: X(左右),Y(前后),Z(上下) RX(Rotation Pitch), RY(Rotation Roll), RZ(Rotation Yaw)

红色是父点 蓝色是子点

Click here for Image

我希望你们能帮助我,我的数学真的很差,我需要这个以某种方式工作:/

【问题讨论】:

  • 可以围绕向量旋转一个点,但不能围绕另一个点旋转。您是否打算在一个点上表示来自原点的矢量?您还需要指定旋转量(以度或其他角度单位)。你想旋转多少?你可以看看这篇文章:stackoverflow.com/questions/34050929/…
  • 例如,我的父点在 X: 10 Y: 45 Z: 5 而子点在 X: -8 Y: 105 Z: 11,现在我需要旋转孩子在 X、Y、Z 轴上的父点周围定位。该怎么做?
  • 大约是 180 度吗?你可以这样做。我们称第一个点为 p1 和第二个点为 p2。那么旋转点将是 p2 + (p2 - p1)。
  • Around表示0-360度,是我从父点得到的变量,我得到父点的X,Y,Z旋转,我需要计算新的X,Y,使用父旋转的子点的 Z 位置。
  • 保留轮播信息是什么意思?子点的轮换信息有什么意义?

标签: 3d rotation point pawn


【解决方案1】:

我是使用旋转矩阵库完成的,它根据父位置和旋转计算所有附加对象的世界位置。

一位来自数学论坛的用户提出了这个建议,并且有效 https://en.m.wikipedia.org/wiki/Rotation_matrix

【讨论】:

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2011-11-18
  • 1970-01-01
  • 2012-11-21
相关资源
最近更新 更多