我试图找到一个算法或一种方法来找到球体上两个圆的交点(在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/