2012-07-30 234 views

回答

8
  1. 查找包含所有三个点的平面P.在这个平面上,这些点确定了一个三角形。

  2. 找到这个三角形周围的圆。让C表示这个圆圈的中心 。

  3. 查找行垂直于P和在C.

  4. 穿越它在此行中,发现这些2个点与来自 圆的期望的距离。

我忽略了退化情况。

2

有很多方法可以将其正式化。下面是他们中的一个(基本相同,阿里建议,但更多的数学):你想找到点

(a)由P1,P2,P3等距,与

(B)的距离为准确R.

首先,找到外接圆按照http://en.wikipedia.org/wiki/Circumscribed_circle的中心(见关于“一个三角形的嵌在d维外接圆”的部分):

p0 = cross(
    dot(p21, p21) * p31 - dot(p31, p31) * p21, 
    n 
)/2/dot(n, n) + p1, 

p21=p2-p1用,p31=p3-p1n=cross(p21,p31)

从项目的点(一个)位于上穿过这一点上,和垂直于包含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)) 

(注意如何p1p0抵消)。用p(t)代替这些来得到答案。

相关问题