转载于:原文链接

  1. 给定三角形三个顶点的坐标,如何求三角形的外心的坐标呢?

    例如 :给定a(x1,y1) b(x2,y2) c(x3,y3)求外接圆心坐标O(x,y)

    1. 首先,外接圆的圆心是三角形三条边的垂直平分线的交点,我们根据圆心到顶点的距离相等,可以列出以下方程:

      $(x1-x)(x1-x)-(y1-y)(y1-y)=(x2-x)(x2-x)+(y2-y)(y2-y)$

      $(x2-x)(x2-x)+(y2-y)(y2-y)=(x3-x)(x3-x)+(y3-y)(y3-y)$

    2.化简得到:

    ​ $2(x2-x1)x+2*(y2-y1)y=x2^2+y2^2-x1^2-y1^2$

    ​ $2(x3-x2)x+2*(y3-y2)y=x3^2+y3^2-x2^2-y2^2$

    ​ 令$A1=2*(x2-x1);$

$ B1=2*(y2-y1)$

$C1=x2^2+y2^2-x1^2-y1^2$

$A2=2*(x3-x2)$

$B2=2*(y3-y2)$

$C2=x3^2+y3^2-x2^2-y2^2$

​ 即

$A1*x+B1y=C1$

$ A2*x+B2y=C2$

3.最后根据克拉默法则:

$x=((C1B2)-(C2B1))/((A1B2)-(A2B1))$

$y=((A1C2)-(A2C1))/((A1B2)-(A2B1))$

因此,x,y为最终结果;

对于空间中的三角形,只不过最后解方程组的时候是三元方程组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
double x1, x2, x3, y1, y2, y3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
double A1 = 2 * (x2 - x1),
B1 = 2 * (y2 - y1),
C1 = x2 * x2 - x1 * x1 - y1 * y1 + y2 *y2,
A2 = 2 * (x3 - x2),
B2 = 2 * (y3 - y2),
C2 = x3 * x3 - x2 * x2 - y2 * y2 + y3 * y3;
double x,y;
x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));
printf("%.3lf %.3lf\n",x,y);
return 0;
}

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

载入天数...载入时分秒... 本站使用 Volantis 作为主题 鲁ICP备-20012065号