2012-02-22 76 views
4

背景信息

考虑像这里显示的一球坐标系:到平面球面坐标距离

Coordinate System http://www.shokhirev.com/nikolai/projects/global/image013.gif

对于一个特定的点,我们通过(R,θ,Φ指定其位置)。

A面可以在此坐标系中作为设定的所有点(R,θ,Φ),使得披=披”来描述。

的问题

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

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

我已经试过

我觉得就足够了简单的转换,从球面到笛卡尔坐标生成一个点(X,Y,Z)=(R,θ,Φ),然后生成一个平面也以笛卡尔坐标表示。然后,我可以使用标准公式计算笛卡尔坐标系中从点到平面的距离。 这种方法不是最优的,因为我需要在我的代码的内部循环中运行这个计算数十亿次。

一个理想的答案会告诉我如何计算这个距离,而不转化成直角坐标。然而,如果有人能证实我在“我所尝试过的”这个想法是合理的,这也是有用的。

在此先感谢!

回答

0

如果您正在寻找R的另一侧(不是在披面),应当由下式给出:

d = |r|sin(90 - theta) 

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

+0

它没有意义,你的答案不依赖于平面的方向,**披'** – 2012-02-22 07:50:09

1

你的做法是“正确的”,但它是一个有点太普通了这个问题。在你遇到的问题中,你正在处理一种特定的平面:一个穿过z轴的平面。

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

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

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

+0

这将是有趣的,看看,如果你能通用的表达减少这种小一个是以某种方式插入平面穿过z轴的事实。 – 2012-02-22 07:18:11

0

只是另一种获得@Parakram Majumdar答案的方法。

A面可以由单位矢量垂直于平面Ñ并且由平面离原点的距离来参数化的,b(见http://mathworld.wolfram.com/Point-PlaneDistance.html)。由于你的平面经过原点,我们有:b = 0,单位矢量与平面垂直,单位矢量为phi方向,即phi = [ - sin(phi'),cos(phi '),0]。距离[R形成平面只是点积,ñ* 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 *棕褐色(PHI)?

落入xz平面(假设y轴是极轴),角度phi是“新平面”和当前phi位置之间的角度。

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

enter image description here