C# 距离现有点、方向和距离的三维点
如果我在3D空间“原点”(Ox、Oy、Oz)中有一个任意点,并且以度(或弧度)(Rx、Ry)和距离(D)为单位旋转,我如何计算“目标”(Tx、Ty、Tz)的新3D坐标 我正在寻找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以弧度表示(因为
为了回答这个问题,需要做出一些假设。如果这些假设不适合您的情况,您可能需要重命名下面的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
(0,0,D)
,然后将其旋转X
和Y
,并将结果添加到原始O
。这是否回答了您的问题?