我试图找到三角三角的外心 .......
注意:所有这三个点都是X,Y和Z Co-Ordinate表示点是3D
我知道,外心是正确的平分线相交的点......
但是为了那个我必须找到每一侧的中间点然后是正确的平分线,然后那个交叉点... ..这是漫长而错误的一些过程......
是否没有任何公式只是将这三个三角形作为输入并给我们三角形的圆周......?
感谢.........
答案 0 :(得分:5)
Circumscribed circle上的wiki页面以三个顶点向量的dot and cross products表示。如果您对此感兴趣,它还有一个圆的半径公式。
答案 1 :(得分:3)
首先,您需要确保点不共线。即不要躺在同一条线上。为此你需要找到由三个点组成的线的方向余弦,如果它们具有相同的方向余弦,则停止,你就不能得到它的圆圈。
对于方向余弦,请查看维基百科上的this article。
(一种寻找坐标几何和几何的方法 - 基于定理,即从圆心平分一条弦的垂直线)
找到平面的方程。
此等式必须缩小为
形式
和方向余弦(垂直于平面的直线决定了平面),因此垂直于该直线的直线余弦是
由此link公式给出 - 8,9,10(除了替换为l
,m
,n
)。
在3-d中找出线的方程(全部三个)
(x-x1)/l=(y-y1)/m=(z-z1)/n
(就方向余弦而言)或
(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)
现在我们需要找到线的等式
a)这与线垂直,从2(让l1, m1, n1
为该线的方向余弦)
b)必须从1开始包含(让l2, m2, n2
为该线垂直于平面的方向余弦)
从3
查找并解决(至少两行),确保您能够找到圆圈的中心。
如何找出方程???当我们找到环绕中心时,我们将得到我们的点(即它是两点的中点)和a)我们有
l1*l+m1*m+n1*n = 0
和l2*l+m2*m+n2*n = 0
其中l,m,n是我们行的方向余弦,现在求解这两个等式,我们可以得到l
,m
个n
。我们使用此(x1,y1,z1)
和l, m, 1
的值,我们将得出方程式。
另一个过程是求解该等式中给出的等式
https://stackoverflow.com/questions/5725871/solving-the-multiple-math-equations
这是最致命的方式。
另一种方法是利用计算机的优势(通过迭代) - 正如我所说的那样(但为此你需要知道坐标的范围,它会消耗大量的内存)
就像这样(你可以通过增加1/10来使其更加精确),但肯定是不好的方式。
for(i=minXrange, i>=maxXrange; i++){
for(j=minYrange, j>=maxYrange; j++){
for(i=minZrange, i>=maxZrange; k++){
if(((x1-i)^2 + (y1-j)^2 + (z1-k)^2) == (x2-i)^2 + (y2-j)^2 + (z2-k)^2) == for z)){
return [i, j, k];
}
}
}
}