Algorithm 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) = ----

我试图找到一种算法或方法来找到球体上两个圆之间的交点(在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) = -----------------
                   ||(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)。你能帮我找到一个方法或函数吗?非常感谢。