我试图学习如何使用原点的XYZ坐标、水平和垂直角度以及3d距离来计算点的XYZ坐标。我可以简单地将点投影到2D平面上来进行计算,但是在3D中有更简单的方法吗?
我试图了解测量全站仪如何根据测量的位置、测量到新点的三维(斜率)距离以及观测到新点位置的水平和垂直角度来计算新的点位置。
谢谢,
E
发布于 2015-06-03 17:33:32
请注意:二维极坐标经常使用(radius, theta),其中theta是“水平”或“方位角”。它的范围从:theta=0,X轴上的2D点(x,y) = (radius,0),到XY平面上的:theta=2*PI,随着theta的增加,这是一个逆时针方向。现在为了混淆事情..。
三维球面坐标 (维护一个右手坐标系)通常使用坐标:(radius, theta, phi)。在这种情况下,theta用于表示从theta=0 (Z轴)到theta=PI ( -Z轴)的“垂直”或“天顶”角度。方位角采用phi。
其他文本将使用不同的约定--但这似乎受到物理学家和(一些)数学教科书的青睐。重要的是,你选择一个惯例,并始终如一地使用它。
如下:
radius:距离点。给定笛卡尔坐标下的点(x,y,z),我们有(毕达哥拉斯)半径:r = sqrt(x * x + y * y + z * z),例如,r = sqrt(x * x + y * y + z * z)
theta:天顶角,theta=0直接高于( +Z轴),theta=PI直接低于( -Z轴),而theta=PI/2是0度的“仰角”,例如,
0 <= theta <= PI
phi:方位角,phi=0在“右”( +X轴),当你转动“逆时针”时,phi=PI/2 ( +Y轴),phi=PI ( -X轴),phi=3*PI/2 ( -Y轴)和phi=2*PI -等效于phi=0 (回到+X轴)。例如,0 <= phi < 2*PI
Pseudo-code: (标准数学库三角函数)
在(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!
https://stackoverflow.com/questions/30619901
复制相似问题