来自现有点,方向和距离的3D点

问题描述 投票:0回答:1

如果我在3D空间“原点”(Ox,Oy,Oz)中具有任意点,并且以度(或弧度)为旋转角度(Rx,Ry)和距离为(D),如何计算新的3D坐标用于“目标”(Tx,Ty,Tz)?

正在寻找C#代码或精简的数学符号。

enter image description here

c# math 3d point
1个回答
0
投票

为了回答这个问题,需要做一些假设。如果这些假设不适合您的情况,则可能需要重命名下面的X,Y,Z,并可能更改操作顺序。

假设以下情况:

  • X点向东
  • Y点北部
  • Z点向上
  • 当没有旋转时,目标将位于X轴的正轴上
  • 小的正向旋转Rx将使目标朝向Y轴旋转
  • 小的正旋转Ry会使目标向上旋转
  • 假设Rx和Ry以弧度表示(因为sin和cos需要弧度作为输入);如果需要的话,将度数除以180,然后乘以pi>
  • 在这种情况下:

  • 创建初始点(Px,Py,Pz)=(D,0,0)
  • 围绕P绕Y轴旋转角度Ry,以获得点Q =(Qx,Qy,Qz):
    • Qx = cos(Ry)* Px-sin(Ry)* Pz
    • Qy = Py
    • Qz = sin(Ry)* Px + cos(Ry)* Pz
  • 将Q绕Z轴旋转Rx角以获得点S =(Sx,Sy,Sz):
    • Sx = cos(Rx)* Qx-sin(Rx)* Qy
    • Sy = sin(Rx)* Qx + cos(Rx)* Qy
    • Sz = Qz
  • 将原点添加到S以获得T:
    • Tx = Sx + Ox
    • Ty = Sy + Oy
    • Tz = Sz + Oz
  • © www.soinside.com 2019 - 2024. All rights reserved.