欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求三角形【内心,外心,重心,垂心】

程序员文章站 2024-02-21 14:32:52
...

三角形的重心,外心,垂心,内心和旁心称之为三角形的五心。三角形五心定理是指三角形重心定理,外心定理,垂心定理,内心定理,旁心定理的总称,本文主要根据五心的性质求三角形的五心。

设三角形为ABC, a=BC, b=CA, c=AB

求三角形【内心,外心,重心,垂心】

先准备一下需要的变量和函数

struct Point{
	double x,y;
	Point(){
	}
	Point(double xx,double yy){
		x=xx;
		y=yy;
	}
};
Point operator+(Point a,Point b){  //向量加 
	return Point(a.x+b.x,a.y+b.y);  
} 
Point operator-(Point a,Point b){ //向量减
	return Point(a.x-b.x,a.y-b.y);
} 
double sqr(double x){
	return x*x;
}
double dis(Point a,Point b){ //求ab的长度 
	return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}

重心定理

三角形的三条边的中线交于一点。该点叫做三角形的重心。三中线交于一点可用燕尾定理证明,十分简单。(重心原是一个物理概念,对于等厚度的质量均匀的三角形薄片,其重心恰为此三角形三条中线的交点,重心因而得名)

重心的性质:

1、重心到顶点的距离与重心到对边中点的距离之比为2︰1。

2、重心和三角形任意两个顶点组成的3个三角形面积相等。即重心到三条边的距离与三条边的长成反比。

3、重心到三角形3个顶点距离的平方和最小。

4、在平面直角坐标系中,重心的坐标是顶点坐标的算术平均数,即其重心坐标为((X1+X2+X3)/3,(Y1+Y2+Y3)/3)。

5. 以重心为起点,以三角形三顶点为终点的三条向量之和等于零向量。

6.求重心

Point gravity(Point a,Point b,Point c){ // 重心  
	double x=(a.x+b.x+c.x)/3;
	double y=(a.y+b.y+c.y)/3;
	return Point(x,y);
}

内心定理

三角形内切圆的圆心,叫做三角形的内心。

内心的性质:

1、三角形的三条内角平分线交于一点。该点即为三角形的内心。

2、直角三角形的内心到边的距离等于两直角边的和与斜边的差的二分之一。

3、P为ΔABC所在空间中任意一点,点0是ΔABC内心的充要条件是:向量P0=(a×向量PA+b×向量PB+c×向量PC)/(a+b+c).

4、O为三角形的内心,A、B、C分别为三角形的三个顶点,延长AO交BC边于N,则有AO:ON=AB:BN=AC:CN=(AB+AC):BC

5、(欧拉定理)⊿ABC中,R和r分别为外接圆为和内切圆的半径,O和I分别为其外心和内心,则OI^2=R^2-2Rr.

6、(内角平分线分三边长度关系)

△ABC中,0为内心,∠A 、∠B、 ∠C的内角平分线分别交BC、AC、AB于Q、P、R, 则BQ/QC=c/b, CP/PA=a/c, BR/RA=a/b.

7、内心到三角形三边距离相等。

求三角形【内心,外心,重心,垂心】

8.求解内心

由性质:向量P0=(a×向量PA+b×向量PB+c×向量PC)/(a+b+c).P为空间任一点,我们不妨设P为(0,0)

Point Incenter(Point a,Point b,Point c){  //三角形内心 
     double A=dis(b,c);
     double B=dis(a,c);
     double C=dis(a,b);
     double S=A+B+C; 
     double x=(A*a.x+B*b.x+C*c.x)/S;
     double y=(A*a.y+B*b.y+C*c.y)/S;
	 return Point(x,y);	
} 

外心定理

三角形外接圆的圆心,叫做三角形的外心。

外心的性质:

1、三角形的三条边的垂直平分线交于一点,该点即为该三角形的外心。

2、若O是△ABC的外心,则∠BOC=2∠A(∠A为锐角或直角)或∠BOC=360°-2∠A(∠A为钝角)。

3、当三角形锐角三角形时,外心在三角形内部;当三角形为钝角三角形时,外心在三角形外部;当三角形为直角三角形时,外心在斜边上,与斜边的中点重合。

4、外心到三顶点的距离相等

5.求外心

给定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=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));

          y=((A1*C2)-(A2*C1))/((A1*B2)-(A2*B1));

Point Circum(Point a,Point b,Point c){ //三角形外心 
	double x1=a.x,y1=a.y;
	double x2=b.x,y2=b.y;
	double x3=c.x,y3=c.y;
	
	double a1=2*(x2-x1);
	double b1=2*(y2-y1);
	double c1=x2*x2+y2*y2-x1*x1-y1*y1;
	
	double a2=2*(x3-x2);
	double b2=2*(y3-y2);
	double c2=x3*x3+y3*y3-x2*x2-y2*y2;
	
	double x=(c1*b2-c2*b1)/(a1*b2-a2*b1);
	double y=(a1*c2-a2*c1)/(a1*b2-a2*b1);
	
	return Point(x,y);
} 

垂心定理

三角形的三条高(所在直线)交于一点,该点叫做三角形的垂心。

垂心的性质:

1、三角形三个顶点,三个垂足,垂心这7个点可以得到6个四点圆。

2、三角形外心O、重心G和垂心H三点共线,且OG︰GH=1︰2。(此直线称为三角形的欧拉线(Euler line))(除正三角形)

3、垂心到三角形一顶点距离为此三角形外心到此顶点对边距离的2倍。

4、垂心分每条高线的两部分乘积相等。

5.求垂心

给定a(x1,y1) b(x2,y2) c(x3,y3)求垂心坐标O(x,y)

由垂心的定义可知OA⊥BC,OB⊥AC,OC⊥AB

则(y-y1)*(x2-x3)=(x-x1)*(y2-y3)  ①

    (y-y2)*(x1-x3)=(x-x2)*(y1-y3) ②

设 A1=x2-x3          B1=y2-y3,

    A2=x1-x3          B2=y1-y3

则原式化为

   A1*y  -  B1*x   =   A1*y1  -   B1*x1  ③

  A2*y  -   B2*x   =   A2*y2   -   B2*x2 ④

设 C1   =     A1*y1  -   B1*x1             C2   =   A2*y2   -   B2*x2

求解③④得

x=(A1*C2-A2*C1)/(A2*B1-A1*B2)

y=(B1*C2-B2*C1)/(A2*B1-A1*B2)

Point ortho(Point a,Point b,Point c){  //垂心 
	double A1=b.x-c.x;
	double B1=b.y-c.y;
	double C1=A1*a.y-B1*a.x;
	
	double A2=a.x-c.x;
	double B2=a.y-c.y;
	double C2=A2*b.y-B2*b.x;
	
	double x=(A1*C2-A2*C1)/(A2*B1-A1*B2);
	double y=(B1*C2-B2*C1)/(A2*B1-A1*B2);
	
	return Point(x,y);
}