三角形
顶点与对边中点连线: 红色
三角形一边的中点坐标,可以使用平分线定理求出.中点坐标为两端点坐标和的一半.例如边 ab 的平分点 m
m.x = ( a.x + b.x ) / 2 , m.y = ( a.y + b.y ) / 2
3个中线交点连线得三角形: 绿色
重要性质: 中线的交点叫三角形重心. 中点连线叫中位线,平行于对边且长度为对边一半.
顶点与对边垂足连线: 红色
3个垂足连线得三角形: 绿色
三条垂线的交点叫垂心
根据两个向量垂直性质 a(x1,y1) ⊥ b(x2,y2) ,那么有 x1 * x2 + y1 * y2 = 0
下图中,CH是AB边上的高,那么就有 AB ⊥ HC ,同时还有 AH ⊥ HC
根据向量坐标表示法写出来: 设H点的坐标是 (x , y)
// 设 H 点的坐标是 (x , y) , A 点 (a.x , a.y) B 点 (b.x , b.y) , AB , AH , HC 表示向量 AB = (b.x - a.x , b.y - a.y) AH = (x - a.x , y - a.y) HC = (c.x - x , c.y - y) // 因 AB ⊥ HC 故 AB * HC = 0 , 得到一个方程 ① (b.x - a.x) * (c.x - x) + (b.y - a.y) * (c.y - y) = 0 // 因 AH ⊥ HC 故 AH * HC = 0 , 得到二个方程 ② (x - a.x) * (c.x - x) + (y - a.y) * (c.y - y) = 0 // 解这2个方程得出x,y值,就是垂足坐标
化简方程1得到 x 的表达式
① (b.x - a.x) * (c.x - x) + (b.y - a.y) * (c.y - y) = 0 // (b.x - a.x) * (c.x - x) = - (b.y - a.y) * (c.y - y) c.x - x = - (b.y - a.y) * (c.y - y) / (b.x - a.x) // 得到 x x = (b.y - a.y) * (c.y - y) / (b.x - a.x) + c.x // 设 M = (b.y - a.y) / (b.x - a.x) α = c.y - y β = a.y - y // 简化表达式的 x x = α * M + c.x
将 x 的表达式带入方程2 ,得到 y 值
② (x - a.x) * (c.x - x) + (y - a.y) * (c.y - y) = 0 // 带入后展开 (α * M + c.x - a.x) * (c.x - α * M - c.x) + (y - a.y) * (c.y - y) = 0 - (α * M)^2 - α * M * (c.x - a.x) + α * β = 0 // 方程两边消去一个 α - α * M^2 - c.x * M + a.x * M - β = 0 α * M^2 + β = M * (a.x - c.x) // 将 β α 的再代入,化简 (c.y - y) * M^2 + a.y - y = M * (a.x - c.x) c.y * M^2 - y * M^2 + a.y - y = M * (a.x - c.x) y * (M^2 + 1) = a.y - M * (a.x - c.x - c.y * M) // 到此, y 坐标就可以求出 y = (a.y - M * (a.x - c.x - c.y * M)) / (M^2 + 1) // 得到 y 后,再带入第一步得到的 x 的方程得到 x x = (b.y - a.y) * (c.y - y) / (b.x - a.x) + c.x
顶点出发平分顶角的射线: 红色
3个角平分线交点连线得三角形: 绿色
重要性质:角平分线上的点,离角两边的距离相等.角平分线交点是三角形内切圆的圆心.
AH 是角 A 的平分线, H 是与对边 BC 的交点.
根据角平分线的性质有: AB / AC = BH / HC
B , H ,C 是共线的, H 将 BC 分为 BH / HC 这样就可以使用定比分点公式:
x = (x1 + λ * x2) / (1 + λ) y = (y1 + λ * y2) / (1 + λ)
这个公式中 x1 , x2 , y1 , y2 是线段两个端点坐标, λ 是比例,是分线段为两段后的长度比例.
λ = BH / HC = AB / AC 而 AB / AC 可以使用两点间距离公式求出.这样就得到 λ 值.
B , C 坐标已知,故能求出 x , y
三边中点的垂线: 红色
重要性质: 中垂线交点是三角形外接圆的圆心.
图中,HD HE HF 是中垂线,那么就有 AB ⊥ HD BC ⊥ HE CA ⊥ HF 根据垂直向量性质,得到方程组.
AB * HD = 0 BC * HE = 0 CA * HF = 0 // 取两个建立方程组 AB * HD = 0 BC * HE = 0 // 设 H 点的坐标是 (x , y) , A 点 (a.x , a.y) B 点 (b.x , b.y) C 点(c.x , c.y) ① (b.x - a.x) * (d.x - x) + (b.y - a.y) * (d.y - y) = 0 ② (c.x - b.x) * (e.x - x) + (c.y - b.y) * (e.y - y) = 0 // 解这2个方程得出 x , y 值,就是中垂线交点坐标
// ① (b.x - a.x) * (d.x - x) + (b.y - a.y) * (d.y - y) = 0 x = d.x + (d.y - y) * (b.y - a.y) / (b.x - a.x) // ② (c.x - b.x) * (e.x - x) + (c.y - b.y) * (e.y - y) = 0 x = e.x + (e.y - y) * (c.y - b.y) / (c.x - b.x) // 设 A1 , A2 是 ① , ② 的系数 A1 = (b.y - a.y) / (b.x - a.x) A2 = (c.y - b.y) / (c.x - b.x) // 那么 x = d.x + (d.y - y) * A1 x = e.x + (e.y - y) * A2 d.x + (d.y - y) * A1 = e.x + (e.y - y) * A2 // 解出 y , 带入上面其中一个 x 解出 x y = (e.x - d.x + e.y * A2 - d.y * A1) / (A2 - A1)
内切圆圆心是角平分线交点,圆心坐标与半径可以由下列公式计算出
// r = 内切圆半径 S = 三角形面积 C = 三角形周长 r = 2S / C // 三角形三个顶点 a : (x,y) , b : (x,y) , c : (x,y) // 内切圆圆心坐标 (x , y) x = (bc * a.x + ca * b.x + ab * c.x) / C y = (bc * a.y + ca * b.y + ab * c.y) / C
外接圆圆心是中垂线交点,这个坐标已实现计算函数,半径就是圆心到任意一个顶点的距离
内切圆圆心:绿色 , 外接圆圆心:黄色
以每条边的中点为圆心,长度为直径的圆
三角形三边垂足,三边中点,顶点与垂心的三条连线的中点,共九点都在半径为 R / 2 (三角形外接圆半径)的圆上,圆心是外心与垂心所连线段的中点.
根据这个定义画出圆和点位.
垂足: 红色 , 中点: 绿色 , 顶点与垂心连线中点: 黄色
九点圆圆心: 黑色
垂心: 蓝色 , 重心(中线交点): 灰色 , 内心(角平分线交点): 棕色 , 外心(中垂线交点): 天蓝色
三角形的一边及其他两边的延长线相切的圆.三角形都有3个旁切圆
旁心是由一个顶角的平分线和另外两个角的外角平分线角点.旁心是旁切圆的圆心
// 三角形 ABC 三点坐标 a(x1 , y1) b(x2 , y2) c(x3 , y3) // a , b ,c 分别对应 ABC 三个顶角的对边 // S 是三角形面积 // ap 角 A 的角平分线上的旁心坐标, ra 旁心圆半径 ap.x = (-ax1 + bx2 + cx3) / (-a + b + c) ap.y = (-ay1 + by2 + cy3) / (-a + b + c) ra = 2S / (b + c - a) // bp 角 B 的角平分线上的旁心坐标, rb 旁心圆半径 bp.x = (ax1 - bx2 + cx3) / (a - b + c) bp.y = (ay1 - by2 + cy3) / (a - b + c) rb = 2S / (a + c - b) // cp 角 C 的角平分线上的旁心坐标, rb 旁心圆半径 cp.x = (ax1 + bx2 - cx3) / (a + b - c) cp.y = (ay1 + by2 - cy3) / (a + b - c) rc = 2S / (a + b - c)
角 A 平分线线上的旁心 P , 其旁心圆与三角形三边相切的切点 D , E , F 坐标计算:
对于 D 点,连接 A , D ,P 会得到直角三角形,而 PD 是其边 AD 上的高.所以,可以用求垂足的方法得出.(上文已实现方法)
对于 E 点,连接 A , E ,P 这个与求 D 点一样.
对于 F 点,连接 B , P ,C 因为F点是切点,所以 PF ⊥ BC ,也就是 BPC 的 BC 上的高.同样使用求垂足方法得出.