C# 距离现有点、方向和距离的三维点

C# 距离现有点、方向和距离的三维点,c#,math,3d,point,C#,Math,3d,Point,如果我在3D空间“原点”(Ox、Oy、Oz)中有一个任意点,并且以度(或弧度)(Rx、Ry)和距离(D)为单位旋转,我如何计算“目标”(Tx、Ty、Tz)的新3D坐标 我正在寻找C代码或简化的数学符号 为了回答这个问题,需要做出一些假设。如果这些假设不适合您的情况,您可能需要重命名下面的X、Y、Z,并可能更改操作顺序 假设出现以下情况: X点东 北Y点酒店 Z向上指 当没有旋转时,目标将位于正X轴上 小的正旋转Rx将使目标朝向Y轴旋转 小的正旋转将使目标向上旋转 假设Rx和Ry以弧度表示(因为

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

我正在寻找C代码或简化的数学符号


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

假设出现以下情况:

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

  • 创建一个初始点(Px,Py,Pz)=(D,0,0)
  • 将P绕Y轴旋转角度Y,以获得点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

我可能会解决这个问题,但需要更多解释Rx和Ry的测量起点以及距离D的初始方向。为确保我正确理解您的意思,请给出基本示例,例如旋转90度,x应输出y等。创建一个新点
(0,0,D)
,然后将其旋转
X
Y
,并将结果添加到原始
O
。这是否回答了您的问题?