背景信息
考虑如下所示的球坐标系:
(来源:shokhirev.com)
对于特定点,我们通过 (r, theta, phi) 指定其位置。
在这个坐标系中,一个平面可以被描述为所有点 (r, theta, phi) 的集合,使得 phi = phi'。
问题
假设我们有一个由固定的 phi=phi' 给出的单一平面。对于任意点 (r, theta, phi),计算从 (r, theta, phi) 到由 phi=phi' 定义的平面的距离的最快和最简单的方法是什么?
本质上,我试图找到一个简单的公式来计算球坐标中的点到平面距离。
我试过的
我认为简单地从球面坐标转换为笛卡尔坐标以生成一个点 (x,y,z) = (r, theta, phi) 就足够了,然后在笛卡尔坐标中生成一个平面。然后我可以使用标准公式计算笛卡尔坐标中点到平面的距离。这种方法不是最佳的,因为我需要在我的代码的内部循环中运行这个计算数十亿次。
一个理想的答案会告诉我如何在不转换为笛卡尔坐标的情况下计算这个距离。但是,如果有人可以验证我在“我尝试过的内容”中的想法是否合理,这也将很有用。
提前致谢!
最佳答案
你的方法是“正确的”,但对于这个问题来说有点太笼统了。在您的问题中,您正在处理一种特定类型的平面:穿过 z 轴的平面。
鉴于这个事实,我们可以尝试一条捷径。假设我们绕 z 轴旋转坐标系以获得另一个系统 (X, Y, z),这样您之前给出的平面现在是 X-z 平面。
在这个新系统中,点的坐标是 (r, theta, phi - phi')。因此,在 X-z 平面上的投影为
r * sin( theta ) * sin( phi - phi' ) .
这是最终答案,因为点在我们平面上的投影长度在两个坐标系中是相同的。
如果我们处理的是通用平面,您的方法会更好。
关于math - 球面坐标到平面的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390364/