球坐标系到平面的距离

4

背景信息

考虑像这里显示的球坐标系:

Coordinate System
(来源:shokhirev.com)

对于一个特定点,我们用(r, theta, phi)来指定它的位置。

在该坐标系中,平面可以描述为所有点(r,theta,phi)的集合,使得phi = phi'。

问题

假设我们有一个由固定的phi=phi'所给定的单个平面。 对于任意点(r,theta,phi),计算出其到由phi=phi'定义的平面的距离的最快和最简单的方法是什么?

本质上,我试图找到球坐标中点到平面距离的简单公式。

我的尝试

我认为只需将球坐标转换为笛卡尔坐标即可生成点(x,y,z)=(r,theta,phi),然后在笛卡尔坐标中生成平面。 然后我可以使用笛卡尔坐标中点到平面距离的标准公式。这种方法不是最佳的,因为我需要在代码的内部循环中运行此计算数十亿次。

一个理想的答案会告诉我如何在不转换为笛卡尔坐标的情况下计算此距离。但是,如果有人可以验证我在“我的尝试”中的想法是否合理,那也将很有用。

提前感谢!

4个回答

1

你的方法是“正确”的,但对于这个问题来说有点太泛化了。在你的问题中,你正在处理一种特定类型的平面:通过z轴的平面。

鉴于这个事实,我们可以尝试一个捷径。假设我们围绕z轴旋转坐标系,得到另一个系统(X,Y,z),使得你之前给出的平面现在是X-z平面。

在这个新系统中,点的坐标为(r,theta,phi-phi')。因此,投影在X-z平面上的长度为r * sin(theta) * sin(phi-phi')。这是最终答案,因为点在我们的平面上的投影长度在两个坐标系中是相同的。

如果我们处理的是一个通用平面,你的方法会更好。


看看能否通过某种方式插入飞机穿过z轴的事实,将您的通用表达式缩小到这个更小的表达式,这将是很有趣的。 - Parakram Majumdar

0

如果你正在寻找 r 的相反面(不在 phi 平面上),那应该是:

d = |r|sin(90 - theta)

因为我们有一个直角三角形。


你的答案不应该依赖于飞机的方向,phi' 这一点毫无道理。 - Itamar Katz

0

另一种获取@Parakram Majumdar答案的方法。

一个平面可以由垂直于平面n的单位向量和平面到原点的距离b参数化(参见http://mathworld.wolfram.com/Point-PlaneDistance.html)。由于您的平面通过原点,因此我们有b=0,而垂直于平面的单位向量是phi=[-sin(phi'), cos(phi'), 0]方向的单位向量。点r到平面的距离a就是点积n*r

n*r = [-sin(phi'), cos(phi'), 0] * [r*sin(theta)*cos(phi), r*sin(theta)*sin(phi), r cos(theta)] = r*sin(theta)*sin(phi-phi')

0

不是 r*tan( phi ) 吗?

将其投影到 xz 平面(假设 y 轴为极轴),phi 角度即为“新平面”与当前 phi 位置之间的夹角。

在下图中,phi 实际上等于(新 phi - 当前 phi)。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接