-1

我有 3D 点集位于垂直平面上。该平面不平行于 X 轴或 Y 轴,但与 X 轴成一个角度(例如 θ)。而且它与 X 轴有一些(+ 或 -)截距。

现在,我想更新我的 X 轴平行于我的飞机的方位角方向。然后我想躺在垂直平面到 XY 平面。所以,我想我可以使用我原来的 Z 坐标作为新的 Y 坐标。由于平面位于 XY 平面上,因此不应再有 Z 坐标。所以,我想知道如何从原始的 XYZ 和 θ 中获取我的新 X 坐标。

实际上,我想在 C++ 中实现这个修改。但我的数学真的很差,很难弄清楚应该是什么公式。

完成此操作后,我想对新的 XY 点坐标进行一些处理。最后,我想将我所有的坐标恢复到原始系统。那是最后我想回到我原来的 XYZ 轴。所以我也在找你的助手拿这个案子。

非常感谢您的助手。

注意:所以我所做的是;我找到了平面的方位角,然后将点数据相对于我的点集左下角的最小坐标X和XY 坐标移动。Y然后,我得到了新的 X,Y 作为(X',Y'):

X' = X * cos (θ) + Y * sin(θ) 
Y' = Z

不确定我的方式是否正确。我喜欢学习这个。

4

1 回答 1

3

我无法理解您所说的“我的点集的左下角”,但如果我正确理解“平面的方位角”,那么第一个转换将是这样的:

X' =  X * cos(θ) + Y * sin(θ)
Y' = -X * sin(θ) + Y * cos(θ)
Z' =  Z

在你走得更远之前,你应该玩弄这个,确保你理解它,确保它是你想要的。

在这个变换之后,平面上的所有点都应该具有相同的 Y' 值。

第二个转变(“躺下”)将是这样的:

X" = X'
Y" = Y' + Z'
Z" = 0

您必须记住 Y' 值是什么,以便稍后反转此转换。

在这些坐标中完成任何您想做的事情后,您可以反转该过程以返回到您的原始坐标系:

X' = X"
Y' = Y'
Z' = Y" - Y'

X = X' * cos(θ) - Y' * sin(θ)
Y = X' * sin(θ) + Y' * cos(θ)
Z = Z'
于 2013-02-26T15:17:44.997 回答