图形几何——三角形:三角形的四心

本文详细介绍了三角形的外心(外接圆圆心)、内心(内切圆圆心)、垂心(三条高线交点)和重心(三条中线交点)的定义、性质,并提供了用Matlab编写的计算实例。通过代码展示了如何计算这些特殊点的坐标以及相应的图形表示。
摘要由CSDN通过智能技术生成

三角形的四心

外心

外心的定义及性质

  • 定义:外接圆圆心
  • 性质:
    • 三边中垂线交点
    • 外心到三顶点的距离相等

外心的计算实例(matlab)

% 三角形的顶点坐标
A = [1, 1];
B = [4, 5];
C = [7, 2];

% 计算AB、AC的中点坐标
M_AB = (A + B) / 2;
M_AC = (A + C) / 2;

% 计算AB、AC的斜率
k_AB = (B(2) - A(2)) / (B(1) - A(1));
k_AC = (C(2) - A(2)) / (C(1) - A(1));

% 计算AB、AC的垂直平分线的斜率
k_perp_AB = -1 / k_AB;
k_perp_AC = -1 / k_AC;

% 计算AB、AC的垂直平分线的方程
b_perp_AB = M_AB(2) - k_perp_AB * M_AB(1);
b_perp_AC = M_AC(2) - k_perp_AC * M_AC(1);

% 计算垂直平分线的交点坐标
x = (b_perp_AC - b_perp_AB) / (k_perp_AB - k_perp_AC);
y = k_perp_AB * x + b_perp_AB;

% 输出外心的坐标
O = [x, y];
disp(O);

% 计算外接圆的半径和圆心
R = norm(A - O);
center = O;

% 绘制三角形、外心和外接圆
figure;
hold on;
plot([A(1), B(1)], [A(2), B(2)], 'k');
plot([B(1), C(1)], [B(2), C(2)], 'k');
plot([C(1), A(1)], [C(2), A(2)], 'k');
plot(A(1), A(2), 'r*');
plot(B(1), B(2), 'r*');
plot(C(1), C(2), 'r*');
plot(O(1), O(2), 'g*');
text(A(1)-0.4, A(2), 'A', 'VerticalAlignment', 'bottom');
text(B(1), B(2)+0.1, 'B', 'VerticalAlignment', 'bottom');
text(C(1)+0.1, C(2), 'C', 'VerticalAlignment', 'bottom');
text(O(1), O(2), 'O', 'VerticalAlignment', 'bottom');
viscircles(center, R, 'Color', 'b','LineStyle','-','LineWidth',0.5);
axis equal;

输出效果如下

在这里插入图片描述

内心

内心的定义及性质

  • 定义:内接圆圆心
  • 性质:
    • 三条角平分线交点
    • 内心到三边的距离相等

内心的计算实例(matlab)

% 三角形的顶点坐标
A = [1, 1];
B = [4, 5];
C = [7, 2];

% 计算AB、AC、BC的边长
AB = norm(B - A);
AC = norm(C - A);
BC = norm(C - B);

% 计算内心的坐标
x = (AB * A(1) + AC * B(1) + BC * C(1)) / (AB + AC + BC);
y = (AB * A(2) + AC * B(2) + BC * C(2)) / (AB + AC + BC);
I = [x, y];
disp(I);

% 计算内接圆的半径
s = (AB + AC + BC) / 2;
area = sqrt(s * (s - AB) * (s - AC) * (s - BC));
r = area / s;

% 计算内接圆的圆心
center = [(BC * A(1) + AC * B(1) + AB * C(1)) / (AB + AC + BC), (BC * A(2) + AC * B(2) + AB * C(2)) / (AB + AC + BC)];

% 绘制三角形、内心和内接圆
figure;
hold on;
plot([A(1), B(1)], [A(2), B(2)], 'k');
plot([B(1), C(1)], [B(2), C(2)], 'k');
plot([C(1), A(1)], [C(2), A(2)], 'k');
plot(A(1), A(2), 'r*');
plot(B(1), B(2), 'r*');
plot(C(1), C(2), 'r*');
plot(I(1), I(2), 'g*');
text(A(1)-0.4, A(2), 'A', 'VerticalAlignment', 'bottom');
text(B(1), B(2), 'B', 'VerticalAlignment', 'bottom');
text(C(1), C(2)+0.1, 'C', 'VerticalAlignment', 'bottom');
text(I(1), I(2), 'I', 'VerticalAlignment', 'bottom');
viscircles(center, r, 'Color', 'b','LineStyle','-','LineWidth',0.5);
axis equal;
xlim padded

输出效果如下

在这里插入图片描述

垂心

垂心的定义及性质

  • 定义:三条高的交点

垂心的计算实例(matlab)

% 三角形的顶点坐标
A = [1, 1];
B = [4, 5];
C = [7, 2];

% 计算AB、AC、BC的边长
AB = norm(B - A);
AC = norm(C - A);
BC = norm(C - B);

% 计算垂心的坐标
x = (AB * A(1) + AC * B(1) + BC * C(1)) / (AB + AC + BC);
y = (AB * A(2) + AC * B(2) + BC * C(2)) / (AB + AC + BC);
H = [x, y];

% 计算三条垂线的方程
% AB边的垂线
m1 = -1 / ((B(2) - A(2)) / (B(1) - A(1)));
c1 = H(2) - m1 * H(1);
% BC边的垂线
m2 = -1 / ((B(2) - C(2)) / (B(1) - C(1)));
c2 = H(2) - m2 * H(1);
% AC边的垂线
m3 = -1 / ((A(2) - C(2)) / (A(1) - C(1)));
c3 = H(2) - m3 * H(1);

% 绘制三角形、垂心和三条垂线
figure;
hold on;
plot([A(1), B(1)], [A(2), B(2)], 'k');
plot([B(1), C(1)], [B(2), C(2)], 'k');
plot([C(1), A(1)], [C(2), A(2)], 'k');
plot(A(1), A(2), 'r*');
plot(B(1), B(2), 'r*');
plot(C(1), C(2), 'r*');
plot(H(1), H(2), 'g*');
fplot(@(x) m1*x+c1, [min([A(1), B(1), C(1)]), max([A(1), B(1), C(1)])], 'b');
fplot(@(x) m2*x+c2, [min([A(1), B(1), C(1)]), max([A(1), B(1), C(1)])], 'b');
fplot(@(x) m3*x+c3, [3.4, 4.2], 'b');
text(A(1), A(2), 'A', 'VerticalAlignment', 'bottom');
text(B(1), B(2), 'B', 'VerticalAlignment', 'bottom');
text(C(1), C(2), 'C', 'VerticalAlignment', 'bottom');
text(H(1)+0.3, H(2)-0.1, 'H', 'VerticalAlignment', 'bottom');
axis equal;

输出效果如下

在这里插入图片描述

重心

重心的定义及性质

  • 定义:三条中线的交点
  • 性质:
    • 它是到三角形三顶点距离的平方和最小的点
    • 它是三角形内部到三边距离之积最大的点

重心的计算实例(matlab)

% 三角形的顶点坐标
A = [1, 1];
B = [4, 5];
C = [7, 2];

% 计算重心的坐标
G = (A + B + C) / 3;

% 计算三条中线的端点坐标
D = (B + C) / 2;
E = (A + C) / 2;
F = (A + B) / 2;

% 绘制三角形、重心、三条中线和交汇点
figure;
hold on;
plot([A(1), B(1)], [A(2), B(2)], 'k');
plot([B(1), C(1)], [B(2), C(2)], 'k');
plot([C(1), A(1)], [C(2), A(2)], 'k');
plot(A(1), A(2), 'r*');
plot(B(1), B(2), 'r*');
plot(C(1), C(2), 'r*');
plot(G(1), G(2), 'g*');
plot([A(1), D(1)], [A(2), D(2)], 'b--');
plot([B(1), E(1)], [B(2), E(2)], 'b--');
plot([C(1), F(1)], [C(2), F(2)], 'b--');
text(A(1)-0.1, A(2)+0.2, 'A', 'VerticalAlignment', 'bottom');
text(B(1), B(2)+0.1, 'B', 'VerticalAlignment', 'bottom');
text(C(1)+0.1, C(2), 'C', 'VerticalAlignment', 'bottom');
text(G(1)+0.1, G(2)+0.1, 'G', 'VerticalAlignment', 'bottom');
axis equal;
xlim padded

输出效果如下图

在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值