三角形中重心、内心、外心、垂心向量计算公式

本文详细探讨了平面几何中三角形的重心、内心、外心和垂心的向量性质,并通过向量运算进行严密的数学证明。证明了重心的性质是三个向量之和为零向量,内心的性质是角平分线上的比例关系,外心的性质是半径相等,以及垂心的性质是对应边的向量点乘相等。这些性质是几何学中的基本定理,对于理解和解决相关问题至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、对ΔABC重心O来讲有
O A ⇀ + O B ⇀ + O C ⇀ = 0 ⇀ \mathop{OA}\limits ^{\rightharpoonup}+\mathop{OB}\limits ^{\rightharpoonup}+\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} OA+OB+OC=0
证明:延长CO与线段 A B ‾ \overline{AB} AB交于点D
根据ADB三点共线公式
O D ⇀ = m O A ⇀ + n O B ⇀ \mathop{OD}\limits ^{\rightharpoonup}=m\mathop{OA}\limits ^{\rightharpoonup}+n\mathop{OB}\limits ^{\rightharpoonup} OD=mOA+nOB(其中m+n=1),因为D是线段 A B ‾ \overline{AB} AB的中点,所以有
O A ⇀ + O B ⇀ = 2 O D ⇀ \mathop{OA}\limits ^{\rightharpoonup}+\mathop{OB}\limits ^{\rightharpoonup}=2\mathop{OD}\limits ^{\rightharpoonup} OA+OB=2OD
又因 O C ⇀ = 2 D O ⇀ \mathop{OC}\limits ^{\rightharpoonup}=2\mathop{DO}\limits ^{\rightharpoonup} OC=2DO
所以 O A ⇀ + O B ⇀ + O C ⇀ = 0 ⇀ \mathop{OA}\limits ^{\rightharpoonup}+\mathop{OB}\limits ^{\rightharpoonup}+\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} OA+OB+OC=0,得证。
反过来,如果
O A ⇀ + O B ⇀ + O C ⇀ = 0 ⇀ \mathop{OA}\limits ^{\rightharpoonup}+\mathop{OB}\limits ^{\rightharpoonup}+\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} OA+OB+OC=0
O A ⇀ + O B ⇀ + O C ⇀ = ( O D ⇀ + D A ⇀ ) + ( O D ⇀ + D B ⇀ ) + O C ⇀ \mathop{OA}\limits ^{\rightharpoonup}+\mathop{OB}\limits ^{\rightharpoonup}+\mathop{OC}\limits ^{\rightharpoonup}=(\mathop{OD}\limits ^{\rightharpoonup}+\mathop{DA}\limits ^{\rightharpoonup})+(\mathop{OD}\limits ^{\rightharpoonup}+\mathop{DB}\limits ^{\rightharpoonup})+\mathop{OC}\limits ^{\rightharpoonup} OA+OB+OC=(OD+DA)+(OD+DB)+OC
= ( O C ⇀ + 2 O D ⇀ ) + ( D A ⇀ + D B ⇀ ) =(\mathop{OC}\limits ^{\rightharpoonup}+2\mathop{OD}\limits ^{\rightharpoonup})+(\mathop{DA}\limits ^{\rightharpoonup}+\mathop{DB}\limits ^{\rightharpoonup}) =(OC+2OD)+(DA+DB)
= m O D ⇀ + n D A ⇀ = 0 ⇀ =m\mathop{OD}\limits ^{\rightharpoonup}+n\mathop{DA}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} =mOD+nDA=0
O D ⇀ \mathop{OD}\limits ^{\rightharpoonup} OD D A ⇀ \mathop{DA}\limits ^{\rightharpoonup} DA线性无关,所以上式要取得 0 ⇀ \mathop{0}\limits ^{\rightharpoonup} 0只有

O C ⇀ + 2 O D ⇀ = 0 ⇀ \mathop{OC}\limits ^{\rightharpoonup}+2\mathop{OD}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} OC+2OD=0并且 D A ⇀ + D B ⇀ = 0 ⇀ \mathop{DA}\limits ^{\rightharpoonup}+\mathop{DB}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} DA+DB=0
可得 D A ‾ \overline{DA} DA= B D ‾ \overline{BD} BD,以及 C O ‾ \overline{CO} CO=2 O D ‾ \overline{OD} OD,即D是线段 A B ‾ \overline{AB} AB的中点,O为ΔABC的重心。

二、对ΔABC内心O来讲有
a O A ⇀ + b O B ⇀ + c O C ⇀ = 0 ⇀ a\mathop{OA}\limits ^{\rightharpoonup}+b\mathop{OB}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} aOA+bOB+cOC=0
证明:延长CO与线段 A B ‾ \overline{AB} AB交于点D

因为 C D ‾ \overline{CD} CD是∠ACB的角平分线,
根据角平分线性质,线段
O A ‾ / O B ‾ = C A ‾ / C B ‾ = D A ‾ / D B ‾ = b / a \overline{OA}/\overline{OB}=\overline{CA}/\overline{CB}=\overline{DA}/\overline{DB}=b/a OA/OB=CA/CB=DA/DB=b/a
并且
C O ‾ / O D ‾ = C A ‾ / A D ‾ = C B ‾ / B D ‾ = ( C A ‾ + C B ‾ ) / ( A D ‾ + B D ‾ ) = ( a + b ) / c \overline{CO}/\overline{OD}=\overline{CA}/\overline{AD}=\overline{CB}/\overline{BD}=(\overline{CA}+\overline{CB})/(\overline{AD}+\overline{BD})=(a+b)/c CO/OD=CA/AD=CB/BD=(CA+CB)/(AD+BD)=(a+b)/c
C O ‾ \overline{CO} CO O D ‾ \overline{OD} OD共线,长度比为 ( a + b ) / c (a+b)/c (a+b)/c,故
( a + b ) O D ⇀ + c O C ⇀ = 0 ⇀ (a+b)\mathop{OD}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} (a+b)OD+cOC=0
再根据A、D、B三点共线性质有
a O A ⇀ + b O B ⇀ = ( a + b ) O D ⇀ a\mathop{OA}\limits ^{\rightharpoonup}+b\mathop{OB}\limits ^{\rightharpoonup}=(a+b)\mathop{OD}\limits ^{\rightharpoonup} aOA+bOB=(a+b)OD,所以

a O A ⇀ + b O B ⇀ + c O C ⇀ = ( a + b ) O D ⇀ + c O C ⇀ = 0 ⇀ a\mathop{OA}\limits ^{\rightharpoonup}+b\mathop{OB}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}=(a+b)\mathop{OD}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} aOA+bOB+cOC=(a+b)OD+cOC=0,得证。
反之,若已知 a O A ⇀ + b O B ⇀ + c O C ⇀ = 0 ⇀ a\mathop{OA}\limits ^{\rightharpoonup}+b\mathop{OB}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}=\mathop{0}\limits ^{\rightharpoonup} aOA+bOB+cOC=0,则
a O A ⇀ + b O B ⇀ + c O C ⇀ = a\mathop{OA}\limits ^{\rightharpoonup}+b\mathop{OB}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}= aOA+bOB+cOC=
a ( O D ⇀ + D A ⇀ ) + b ( O D ⇀ + D B ⇀ ) + c ( O D ⇀ + D C ⇀ ) = a(\mathop{OD}\limits ^{\rightharpoonup}+\mathop{DA}\limits ^{\rightharpoonup})+b(\mathop{OD}\limits ^{\rightharpoonup}+\mathop{DB}\limits ^{\rightharpoonup})+c(\mathop{OD}\limits ^{\rightharpoonup}+\mathop{DC}\limits ^{\rightharpoonup})= a(OD+DA)+b(OD+DB)+c(OD+DC)=
( a + b + c ) O D ⇀ + c D C ⇀ + ( a D A ⇀ + b D B ⇀ ) = (a+b+c)\mathop{OD}\limits ^{\rightharpoonup}+c\mathop{DC}\limits ^{\rightharpoonup}+(a\mathop{DA}\limits ^{\rightharpoonup}+b\mathop{DB}\limits ^{\rightharpoonup})= (a+b+c)OD+cDC+(aDA+bDB)=
( a + b ) O D ⇀ + c O C ⇀ + ( a D A ⇀ + b D B ⇀ ) = 0 ⇀ (a+b)\mathop{OD}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}+(a\mathop{DA}\limits ^{\rightharpoonup}+b\mathop{DB}\limits ^{\rightharpoonup})=\mathop{0}\limits ^{\rightharpoonup} (a+b)OD+cOC+(aDA+bDB)=0
因向量 ( ( a + b ) O D ⇀ + c O C ⇀ ) ((a+b)\mathop{OD}\limits ^{\rightharpoonup}+c\mathop{OC}\limits ^{\rightharpoonup}) ((a+b)OD+cOC) ( a D A ⇀ + b D B ⇀ ) (a\mathop{DA}\limits ^{\rightharpoonup}+b\mathop{DB}\limits ^{\rightharpoonup}) (aDA+bDB)线性无关,所以上式要取得 0 ⇀ \mathop{0}\limits ^{\rightharpoonup} 0,只有
( a D A ⇀ + b D B ⇀ ) = 0 ⇀ (a\mathop{DA}\limits ^{\rightharpoonup}+b\mathop{DB}\limits ^{\rightharpoonup})=\mathop{0}\limits ^{\rightharpoonup} (aDA+bDB)=0,再由 D A ‾ \overline{DA} DA B D ‾ \overline{BD} BD共线,
可得 A D ‾ / D B ‾ = A C ‾ / C B ‾ = b / a \overline{AD}/\overline{DB}=\overline{AC}/\overline{CB}=b/a AD/DB=AC/CB=b/a,即线段 C D ‾ \overline{CD} CD是∠ACB的角平分线,同理可证另两条角平分线 A O ‾ \overline{AO} AO B O ‾ \overline{BO} BOO为ΔABC的内心。另外,
O C ‾ / O D ‾ = ( a + b ) / c \overline{OC}/\overline{OD}=(a+b)/c OC/OD=(a+b)/c
三、对ΔABC外心O来讲有
O A ⇀ 2 = O B ⇀ 2 = O C ⇀ 2 {\mathop{OA}\limits ^{\rightharpoonup}}^2={\mathop{OB}\limits ^{\rightharpoonup}}^2={\mathop{OC}\limits ^{\rightharpoonup}}^2 OA2=OB2=OC2
证明:线段 O A ‾ \overline{OA} OA O B ‾ \overline{OB} OB O C ‾ \overline{OC} OC为外接圆的半径,所以等长,向量 O A ⇀ 2 {\mathop{OA}\limits ^{\rightharpoonup}}^2 OA2内积为长度的平方。
四、对ΔABC垂心O来讲有
O A ⇀ ⋅ O B ⇀ = O B ⇀ ⋅ O C ⇀ = O C ⇀ ⋅ O A ⇀ \mathop{OA}\limits ^{\rightharpoonup}·\mathop{OB}\limits ^{\rightharpoonup}=\mathop{OB}\limits ^{\rightharpoonup}·\mathop{OC}\limits ^{\rightharpoonup}=\mathop{OC}\limits ^{\rightharpoonup}·\mathop{OA}\limits ^{\rightharpoonup} OAOB=OBOC=OCOA
证明:因为线段 A B ‾ ⊥ C O ‾ \overline{AB}⊥\overline{CO} ABCO,所以
O C ⇀ ⋅ A B ⇀ = 0 \mathop{OC}\limits ^{\rightharpoonup}·\mathop{AB}\limits ^{\rightharpoonup}=0 OCAB=0,因
A B ⇀ = A O ⇀ − B O ⇀ \mathop{AB}\limits ^{\rightharpoonup}=\mathop{AO}\limits ^{\rightharpoonup}-\mathop{BO}\limits ^{\rightharpoonup} AB=AOBO,所以
O C ⇀ ⋅ ( A O ⇀ − B O ⇀ ) = 0 \mathop{OC}\limits ^{\rightharpoonup}·(\mathop{AO}\limits ^{\rightharpoonup}-\mathop{BO}\limits ^{\rightharpoonup})=0 OC(AOBO)=0,化简得
O C ⇀ ⋅ A O ⇀ = O C ⇀ ⋅ B O ⇀ \mathop{OC}\limits ^{\rightharpoonup}·\mathop{AO}\limits ^{\rightharpoonup}=\mathop{OC}\limits ^{\rightharpoonup}·\mathop{BO}\limits ^{\rightharpoonup} OCAO=OCBO,即
O C ⇀ ⋅ O A ⇀ = O B ⇀ ⋅ O C ⇀ \mathop{OC}\limits ^{\rightharpoonup}·\mathop{OA}\limits ^{\rightharpoonup}=\mathop{OB}\limits ^{\rightharpoonup}·\mathop{OC}\limits ^{\rightharpoonup} OCOA=OBOC,同理可证
O A ⇀ ⋅ O B ⇀ = O B ⇀ ⋅ O C ⇀ \mathop{OA}\limits ^{\rightharpoonup}·\mathop{OB}\limits ^{\rightharpoonup}=\mathop{OB}\limits ^{\rightharpoonup}·\mathop{OC}\limits ^{\rightharpoonup} OAOB=OBOC,即
O A ⇀ ⋅ O B ⇀ = O B ⇀ ⋅ O C ⇀ = O C ⇀ ⋅ O A ⇀ \mathop{OA}\limits ^{\rightharpoonup}·\mathop{OB}\limits ^{\rightharpoonup}=\mathop{OB}\limits ^{\rightharpoonup}·\mathop{OC}\limits ^{\rightharpoonup}=\mathop{OC}\limits ^{\rightharpoonup}·\mathop{OA}\limits ^{\rightharpoonup} OAOB=OBOC=OCOA
反之也可证,当
O A ⇀ ⋅ O B ⇀ = O B ⇀ ⋅ O C ⇀ = O C ⇀ ⋅ O A ⇀ \mathop{OA}\limits ^{\rightharpoonup}·\mathop{OB}\limits ^{\rightharpoonup}=\mathop{OB}\limits ^{\rightharpoonup}·\mathop{OC}\limits ^{\rightharpoonup}=\mathop{OC}\limits ^{\rightharpoonup}·\mathop{OA}\limits ^{\rightharpoonup} OAOB=OBOC=OCOA时,O为ΔABC垂心。

### 计算三角形五心的Python实现 #### 定义辅助函数 为了简化后续计算过程,定义一些常用的几何运算函数: ```python import math def distance(p1, p2): """两点之间的距离""" return math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2) def slope(p1, p2): """通过两个点计算直线斜率""" if p2[0] != p1[0]: return (p2[1]-p1[1])/(p2[0]-p1[0]) else: return None # 表示垂直线的情况 def perpendicular_slope(slope_value): """给定一条直线的斜率,返回其垂线的斜率""" if slope_value is not None and slope_value != 0: return -1 / slope_value elif slope_value == 0: return None # 平行于X轴变为平行Y轴 else: return 0 # 原本是None表示垂直线,则现在变水平线 ``` #### 计算内心 内心的坐标可以通过角平分线交点来获得。这里采用面积法求解。 ```python def incenter(A, B, C): ax, ay = A; bx, by = B; cx, cy = C a = distance(B,C); b = distance(A,C); c = distance(A,B) px = (a*ax + b*bx + c*cx) / (a+b+c) py = (a*ay + b*by + c*cy) / (a+b+c) return round(px, 5), round(py, 5) ``` #### 计算外心 外心位于三边中垂线的交点处。 ```python def circumcenter(A, B, C): D = 2 * ((B[0] - A[0])*(C[1] - A[1]) - (B[1] - A[1])*(C[0] - A[0])) Ux = (((B[0]**2 + B[1]**2)*(C[1] - A[1])) - ((C[0]**2 + C[1]**2)*(B[1] - A[1])) + ((A[0]**2 + A[1]**2)*(B[1] - C[1]))) / D Uy = (((B[0]**2 + B[1]**2)*(C[0] - A[0])) - ((C[0]**2 + C[1]**2)*(B[0] - A[0])) + ((A[0]**2 + A[1]**2)*(B[0] - C[0]))) / D return round(Ux, 5), round(Uy, 5) ``` #### 计算重心 重心就是三个顶点坐标的平均值。 ```python def centroid(A, B, C): gx = sum([pt[0] for pt in [A, B, C]])/3 gy = sum([pt[1] for pt in [A, B, C]])/3 return round(gx, 5), round(gy, 5) ``` #### 计算垂心 利用两条高的交点作为垂心位置。 ```python def orthocenter(A, B, C): mAB = slope(A, B) mBC = slope(B, C) mhAC = perpendicular_slope(mAB) mhBA = perpendicular_slope(mBC) if mhAC is None or mhBA is None: raise ValueError('无法处理直角或钝角三角形') x_diff_AC = C[0] - A[0]; y_diff_AC = C[1] - A[1] x_diff_BA = A[0] - B[0]; y_diff_BA = A[1] - B[1] H_x = (mhAC*x_diff_AC*A[0]+mhBA*x_diff_BA*B[0]+mAB*y_diff_AC*C[1]-mBC*y_diff_BA*A[1])/( mhAC*x_diff_AC-mhBA*x_diff_BA+mAB*y_diff_AC-mBC*y_diff_BA) H_y = (-perpendicular_slope(mhAC)*H_x+A[1]+slope(C,A)*(H_x-A[0])) return round(H_x, 5), round(H_y, 5) ``` #### 计算旁心 对于每个顶点对应的旁切圆来说,旁心可以看作是由该顶点出发向另外两边做高并延长后的交点。 由于旁心涉及到较为复杂的解析几何推导,在此仅提供一种基于已知公式的简单方法: ```python def excenters(A, B, C): results = [] sides = sorted([(distance(A, B),'c'), (distance(B, C),'a'), (distance(C, A),'b')], key=lambda item:item[0]) for i in range(len(sides)): opposite_side_length, side_label = sides[i][0],sides[i][1] adjacent_sides_lengths = list(map(lambda t:t[0],[item for idx,item in enumerate(sides)if idx!=i])) s = sum(adjacent_sides_lengths)/2 Ix = (adjacent_sides_lengths[0]*A[0]+adjacent_sides_lengths[1]*B[0]-opposite_side_length*C[0])/(sum(adjacent_sides_lengths)-opposite_side_length) Iy = (adjacent_sides_lengths[0]*A[1]+adjacent_sides_lengths[1]*B[1]-opposite_side_length) results.append({'label':f'I_{side_label}', 'coords':(round(Ix, 5), round(Iy, 5))}) return results ``` 上述代码实现了对三角形五个特殊点——内心外心重心垂心以及旁心的计算[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值