2012-07-30 231 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)代替這些來得到答案。

相關問題