【问题标题】:3D point from existing point, direction and distance来自现有点、方向和距离的 3D 点
【发布时间】:2020-05-17 23:56:08
【问题描述】:

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

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

【问题讨论】:

  • 我可能会解决这个问题,但需要更多解释 Rx 和 Ry 的测量位置以及距离 D 的初始方向。为了确保我理解正确,请给出原始示例,例如.旋转 90 度,x 应该输出 y 等。
  • 创建一个新点(0,0,D),然后围绕XY 旋转它,并将结果添加到原来的O

标签: c# math 3d point


【解决方案1】:

为了回答这个问题,需要做出一些假设。如果这些假设不适合您的情况,您可能需要重命名下面的 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

【讨论】:

  • 这能回答你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多