Algorithm 3d中两个圆盘之间的交点
我试图找到一种算法或方法来找到球体上两个圆之间的交点(在3d中)。例如,如果我有两个圆心在两点Algorithm 3d中两个圆盘之间的交点,algorithm,geometry,computational-geometry,Algorithm,Geometry,Computational Geometry,我试图找到一种算法或方法来找到球体上两个圆之间的交点(在3d中)。例如,如果我有两个圆心在两点A(纬度1,经度1)和B(纬度2,经度2)处 假设它们相交,我如何找到这两个圆之间的交点?有算法可以做到这一点吗 多谢各位 对于每个圆,求出圆的方程nx+ny y+nz z=d 与球体相交为圆的平面。假设 球体以原点(法向量)为中心 (nx,ny,nz)是圆心(cx,cy,cz)(投影或 不是)正常化后 (cx, cy, cz) (nx, ny, nz) = ----
A(纬度1,经度1)和B(纬度2,经度2)处
假设它们相交,我如何找到这两个圆之间的交点?有算法可以做到这一点吗
多谢各位
nx+ny y+nz z=d
与球体相交为圆的平面。假设
球体以原点(法向量)为中心
(nx,ny,nz)
是圆心(cx,cy,cz)
(投影或
不是)正常化后
(cx, cy, cz)
(nx, ny, nz) = -----------------
||(cx, cy, cz)||
2
距离d
使用毕达哥拉斯计算。设r
为半径
圆的半径,R
是球体的半径
2 2 2
R = d + r
_______ _______________
| 2 2 |
d = \|R - r = \|(R + r) (R - r)
第二个表达式是数值稳定性的首选表达式
如果我们只知道球面上的长度r'
,从
将圆心投影到圆上,然后计算
d = R cos(r'/R)
r = R sin(r'/R).
在这种情况下,我们实际上不需要r
转换为三维笛卡尔坐标。找到圆所在的两个平面的参数。查找包含平面交点的直线的参数。找到直线与球体的交点。转换回纬度/经度。请注意退化情况。@David Eisenstat您能给我一个数字示例或一个来源或参考,我可以从中阅读,以清楚地了解如何做吗?谢谢你第四步应该给我0,1,或2的t正确,但我不明白。在遵循这些步骤之后,我得到了类似3.222的东西,这显然是错误的。我试着仔细检查,但我似乎已经遵循了步骤;我不确定我是否做了,因为我仔细检查了很多次,我的计算似乎很好。@user3841581然后搜索另一个球体光线相交的答案。有很多。谢谢大卫·艾森斯塔;我认为在我的问题中,我可能需要考虑2D中的DISK的交集。再次感谢您的时间检查后,我的问题不能减少到2D。你能帮我找到这些交点的方法或函数吗?假设我有A(0,0)和B(0,30)。你能帮我找到一个方法或函数吗?非常感谢。