三角形的四心

打比賽遇到一道外心的題(HDU - 6206),不去搜板子,根本不會,所以打算總結一下三角形的四心。



給出三角形的三個點A(x1,y1),B(x2,y2),C(x3,y3);A,B,C 的對邊分別爲a,b,c

重心

定義:三條中線的交點。·常用G 表示。
這裏寫圖片描述
性質
1. 重心座標G(x1+x2+x33,y1+y2+y33)

point GravityCenter(point A, point B, point C) {
    double Gx = (A.x + B.x + C.x) / 3;
    double Gy = (A.y + B.y + C.y) / 3;
    return point(Gx, Gy);
}

2. AG=2GD,BG=2GE,CG=2FG
3. SAGC=SAGB=SBGC
4. GA+GB+GC=0
性質4證明:



外心

定義:三條中垂線的交點,常用O 來表示。
這裏寫圖片描述
性質
1. 外心座標:有點複雜,,,
設外心座標爲O(x0,y0) ,外接圓半徑爲r 。那麼外接圓的方程就爲(xx0)2+(yy0)2=r2
由此可得:

{(x1x0)2+(y1y0)2=r2(1)(x2x0)2+(y2y0)2=r2(2)(x3x0)2+(y3y0)2=r2(3)

(1)(2)(2)(3) ,化簡之後可得:
{(x1x2)x0+(y1y2)y0=(x12x22)+(y12y22)2(x1x3)x0+(y1y3)y0=(x12x32)+(y12y33)2

令:
a=(x1x2)b=(y1y2)
c=(x1x3)d=(y1y3)

e=(x12x22)+(y12y22)2f=(x12x32)+(y12y33)2

運用簡單的線性代數知識(好像是叫克拉默法則),即可求得:

{x0=edbfadbcy0=afceadbc

將相應字母代入,可得(公式太長 ):
{x0=(y1y3)[(x12x22)+(y12y22)](y1y2)[(x12x32)+(y12y32)]2[(x1x2)(y1y3)(x1x3)(y1y2)]y0=(x1x2)[(x12x32)+(y12y32)](x1x3)[(x12x22+(y12y22)]2[(x1x2)(y1y3)(x1x3)(y1y2)]

還是代碼來得實在:
point CircumCenter(point A, point B, point C) {
    double d = 2 * ((A.x - B.x) * (A.y - C.y) - (A.x - C.x) * (A.y - B.y));         //分母

    double a = (A.y - C.y) * ((A.x * A.x - B.x * B.x) + (A.y * A.y - B.y * B.y));   //Ox的分子
    a = a - (A.y - B.y) * ((A.x * A.x - C.x * C.x) + (A.y * A.y - C.y * C.y));

    double b = (A.x - B.x) * ((A.x * A.x - C.x * C.x) + (A.y * A.y - C.y * C.y));   //Oy的分子
    b = b - (A.x - C.x) * ((A.x * A.x - B.x * B.x) + (A.y * A.y - B.y * B.y));

    double Ox = a / d;
    double Oy = b / d;
    return point(Ox, Oy);
}

我還從一本書上看到另外一種求法,比較簡潔,但不太懂:

point CircumCenter(point A, point B, point C) {
    double a1 = B.x - A.x, b1 = B.y - A.y, c1 = (a1 * a1 + b1 * b1) / 2;
    double a2 = C.x - A.x, b2 = C.y - A.y, c2 = (a2 * a2 + b2 * b2) / 2;
    double d = a1 * b2 - a2 * b1;
    double Ox = A.x + (b2 * c1 - b1 * c2) / d;
    double Oy = A.y + (a1 * c2 - a2 * c1) / d;
    return point(Ox, Oy);
}

2. A=12BOC,B=12AOC,C=12AOB



在說垂心之前,先說一個歐拉的定理:三角形外心O 、重心G 、垂心H 三點共線,且OG:GH=1:2(此直線叫做歐拉線)
證明:,,,,,,OGMHGA
這裏寫圖片描述
所以,若已知三角形外心O 、重心G 、垂心H 三點中任意兩點的座標,都可求得第三點的座標。



垂心

定義:三條垂線的交點,常用H 表示。
這裏寫圖片描述
性質
1. 垂心座標:H(3Gx2Ox,3Gy2Oy)
ps:其實也可以想外心那樣推,,,,要是喫飽了沒事幹,

point VerticalCenter(point A, point B, point C) {
    return 3.0 * GravityCenter(A, B, C) - 2.0 * CircumCenter(A, B, C);
}




內心

定義:三條角平分線的交點,常用I 表示。
這裏寫圖片描述
性質
1.內心座標:I(ax1+bx2+cx3a+b+c,ay1+by2+cy3a+b+c)

point InternalCenter(point A, point B, point C) {
    double a = dis(B, C);
    double b = dis(A, C);
    double c = dis(A, B);
    double Ix = (a * A.x + b * B.x + c * C.x) / (a + b + c);
    double Iy = (a * A.y + b * B.y + c * C.y) / (a + b + c);
    return point(Ix, Iy);
}

2. 點IABC 的內心 aIA+bIB+cIC=0
證明:先略,,,
2. P 爲平面任意一點,有PI=aPA+bPB+cPCa+b+c
證明:先略,,,





再說一個歐拉的定理:
ABC 外心爲O ,內心爲IRr 分別爲外接圓和內接圓的半徑,則有:
|OI|2=R22Rr
這裏寫圖片描述
IMCDBH

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章