三角形的外心公式

三角形的外心公式

已知三角形的三顶点: ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1),(x2,y2),(x3,y3)求外心。

思路:利用外心到顶点距离相等,可列出两个等式,联立消元即可。

令: d 1 = ( x 2 2 + y 2 2 ) − ( x 1 2 + y 1 2 ) , d 2 = ( x 3 2 + y 3 2 ) − ( x 2 2 + y 2 2 ) d_1=(x_2^2+y_2^2)-(x_1^2+y_1^2),d_2=(x_3^2+y_3^2)-(x_2^2+y_2^2) d1=(x22+y22)(x12+y12),d2=(x32+y32)(x22+y22)

f m = 2 ( ( y 3 − y 2 ) × ( x 2 − x 1 ) − ( y 2 − y 1 ) × ( x 3 − x 2 ) ) fm=2((y_3-y_2)\times(x_2-x_1)-(y_2-y_1)\times(x_3-x_2)) fm=2((y3y2)×(x2x1)(y2y1)×(x3x2))

⇒ x = ( y 3 − y 2 ) × d 1 − ( y 2 − y 1 ) × d 2 f m \Rightarrow x=\dfrac{(y_3-y_2)\times d_1-(y_2-y_1)\times d_2}{fm} x=fm(y3y2)×d1(y2y1)×d2

⇒ y = ( x 2 − x 1 ) × d 2 − ( x 3 − x 2 ) × d 1 f m \Rightarrow y=\dfrac{(x_2-x_1)\times d_2-(x_3-x_2)\times d_1}{fm} y=fm(x2x1)×d2(x3x2)×d1

#define double db
#define f(x,y) (x*x+y*y)
pair<db,db> fun(db x1,db y1,db x2,db y2,db x3,db y3){
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    db d1=f(x2,y2)-f(x1,y1),d2=f(x3,y3)-f(x2,y2);
    db fm=2*((y3-y2)*(x2-x1)-(y2-y1)*(x3-x2));
    db ans_x=((y3-y2)*d1-(y2-y1)*d2)/fm;
    db ans_y=((x2-x1)*d2-(x3-x2)*d1)/fm;
    return make_pair(ans_x,ans_y);
}

你可能感兴趣的:(计算几何)