使用水平和垂直角度以及坡度距离计算3D点坐标

时间:2015-06-03 12:18:59

标签: 3d coordinates trigonometry

我正在尝试学习如何使用原点的XYZ坐标,水平和垂直角度以及3d距离来计算点的XYZ坐标。我可以简单地通过将点投影到2D平面上来进行计算,但是在3D中有更简单的方法吗?

我试图了解测量全站仪如何根据测量位置,测量到新点的3d(坡度)距离以及测量的水平和垂直角度来计算新点位置到新点位置。

谢谢,

电子

1 个答案:

答案 0 :(得分:6)

只是关于约定的说明:2D polar coordinates经常使用(radius, theta),其中theta是'水平'或者'方位角'角度。其范围从:theta=0,X轴上的2D点(x,y) = (radius,0)到XY平面上的theta=2*PI - 逆时针方向theta增加。现在混淆事情......

3D spherical coordinates(维持右手坐标系)经常使用坐标:(radius, theta, phi)。在这种情况下,theta用于'垂直'或者' zenith'角度,范围从theta=0(Z轴)到theta=PI(-Z轴)。 phi用于方位角。

其他文本将使用不同的惯例 - 但这似乎受到物理学家和(某些)数学文本的青睐。 重要的是你选择一个约定并一直使用它

在此之后:

radius :距离点。给定笛卡儿坐标中的(x,y,z)点,我们得到(毕达哥拉斯)半径:r = sqrt(x * x + y * y + z * z),例如 0 <= radius < +infinity

theta :天顶角,其中theta=0位于正上方(+ Z轴),theta=PI位于正下方(-Z轴) ),theta=PI/2是您认为的“海拔高度”。 0度,例如,
0 <= theta <= PI

phi :方位角,其中phi=0是&#39;右边&#39; (+ X轴),当您转向&#39;逆时针&#39;,phi=PI/2(+ Y轴),phi=PI(-X轴),phi=3*PI/2( -Y轴)和phi=2*PI - 相当于phi=0(回到+ X轴)。例如, 0 <= phi < 2*PI

伪代码:(标准数学库三角函数)

(radius, theta, phi),您可以找到(x,y,z)点:

x = radius * sin(theta) * cos(phi);
y = radius * sin(theta) * sin(phi);
z = radius * cos(theta);

相反,您可以从 (radius, theta, phi)找到(x,y,z)

radius = sqrt(x * x + y * y + z * z);
theta = acos(z / radius);
phi = atan2(y, x);

注意:在最终的等式中使用atan2非常重要,不是 atan