Math 如何从3个点和半径找到球体中心?

Math 如何从3个点和半径找到球体中心?,math,graphics,3d,Math,Graphics,3d,我有三个3D点p1、p2和p3以及球体半径。如何从3个点和半径找到球体中心 我希望有两个3D点作为解决方案,因为有两个球体满足要求 谢谢 找到包含所有三个点的平面p。在那架飞机上 点决定三角形 找到这个三角形周围的圆。设C表示中心 这个圆圈 找到垂直于p的线,并在C处穿过 在这条线上,找到与目标距离为所需距离的那两个点 圈 我忽略了退化案例。有很多方法可以将其形式化。这里有一个例子(基本上和阿里建议的一样,但需要更多的数学运算):你想要找到分数 (a) 与p1、p2、p3等距,带 (b) 距离正

我有三个3D点p1、p2和p3以及球体半径。如何从3个点和半径找到球体中心

我希望有两个3D点作为解决方案,因为有两个球体满足要求

谢谢

  • 找到包含所有三个点的平面p。在那架飞机上 点决定三角形

  • 找到这个三角形周围的圆。设C表示中心 这个圆圈

  • 找到垂直于p的线,并在C处穿过

  • 在这条线上,找到与目标距离为所需距离的那两个点 圈


  • 我忽略了退化案例。

    有很多方法可以将其形式化。这里有一个例子(基本上和阿里建议的一样,但需要更多的数学运算):你想要找到分数

    (a) 与p1、p2、p3等距,带

    (b) 距离正好是R

    首先,根据找到外接圆的中心(参见“嵌入d尺寸的三角形外接圆”部分):

    p21=p2-p1
    p31=p3-p1
    n=cross(p21,p31)

    (a)项中的点位于通过该点的直线上,且与包含p1、p2、p3的平面正交,因此其方程式为

    p(t) = p0 + n * t
    
    将此替换为

    dist(p1, p)^2 = dot(p - p1, p - p1) = R^2
    
    求二次方程

    dot(n, n) * t^2 - 2*dot(n, p0-p1) * t + dot(p0-p1, p0-p1) = R^2
    
    实际上,
    n
    (p0-p1)
    是正交的,所以左边的第二个加数是0,并且

    t1 = sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n)),
    t2 = -sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n))
    
    (注意
    p1
    in
    p0
    如何取消)。将这些替换为
    p(t)
    ,以获得答案

    t1 = sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n)),
    t2 = -sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n))