我试图找到一个算法或一种方法来找到球体上两个圆的交点(在3d中)。例如,如果我有两个圆心在两个点上,假设它们相交,我如何才能找到这两个圆心的交点?有算法可以做到吗?
谢谢你

最佳答案

Convert from latitude/longitude to 3D Cartesiancoordinates.
对于每个圆,找到
与球体相交为圆的平面。假设
球体以原点为中心,法向量
nx x + ny y + nz z = d是圆的中心(nx, ny, nz)(投影的或
不)正常化后。

                 (cx, cy, cz)
(nx, ny, nz) = -----------------
               ||(cx, cy, cz)||
                               2

使用毕达哥拉斯计算距离(cx, cy, cz)。设d为半径
r是球体的半径。
 2    2    2
R  = d  + r
      _______     _______________
     | 2    2    |
d = \|R  - r  = \|(R + r) (R - r)

第二个表达式是数值稳定性的首选表达式。
如果我们只知道球体表面的长度
圆的投影中心到圆,然后计算
d = R cos(r'/R)
r = R sin(r'/R).

在这种情况下,我们实际上不需要R
Find the intersection of the two planes, aline.
Find the intersection of the line and the sphere, between zero and twopoints.
Convert the points tolatitude/longitude.

关于algorithm - 3d中2个圆盘之间的交点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25870265/

10-10 06:44