matlab求三角形中心
时间: 2023-11-02 12:50:05 浏览: 340
可以使用MATLAB中的函数来计算三角形的中心,其中包括重心、垂心、外心和内心等。以下是一些计算方法的示例:
1. 重心:三角形三条中线的交点
给定三角形三个顶点坐标(x1,y1)、(x2,y2)和(x3,y3),可以使用以下代码计算重心:
xg = (x1 + x2 + x3) / 3;
yg = (y1 + y2 + y3) / 3;
2. 垂心:三角形三条高的交点
同样给定三角形三个顶点坐标(x1,y1)、(x2,y2)和(x3,y3),可以使用以下代码计算垂心:
A = [x1, y1];
B = [x2, y2];
C = [x3, y3];
a = norm(B-C);
b = norm(C-A);
c = norm(A-B);
s = (a+b+c)/2;
K = sqrt(s*(s-a)*(s-b)*(s-c));
R = a*b*c/(4*K);
H = 2*K/a;
D = (B+C)/2;
E = (C+A)/2;
F = (A+B)/2;
P = ((H-D)*a + (H-E)*b + (H-F)*c)/(a+b+c);
xh = P(1);
yh = P(2);
3. 外心:三角形三条垂直平分线的交点
同样给定三角形三个顶点坐标(x1,y1)、(x2,y2)和(x3,y3),可以使用以下代码计算外心:
A = [x1, y1];
B = [x2, y2];
C = [x3, y3];
a = norm(B-C);
b = norm(C-A);
c = norm(A-B);
s = (a+b+c)/2;
K = sqrt(s*(s-a)*(s-b)*(s-c));
R = a*b*c/(4*K);
D = (B+C)/2;
E = (C+A)/2;
F = (A+B)/2;
xw = (D(1)*(c+b-a) + E(1)*(a+c-b) + F(1)*(a+b-c))/(2*(a+b+c));
yw = (D(2)*(c+b-a) + E(2)*(a+c-b) + F(2)*(a+b-c))/(2*(a+b+c));
4. 内心:三角形三条角平分线的交点
同样给定三角形三个顶点坐标(x1,y1)、(x2,y2)和(x3,y3),可以使用以下代码计算内心:
A = [x1, y1];
B = [x2, y2];
C = [x3, y3];
a = norm(B-C);
b = norm(C-A);
c = norm(A-B);
s = (a+b+c)/2;
K = sqrt(s*(s-a)*(s-b)*(s-c));
r = K/s;
x1 = A(1);
y1 = A(2);
x2 = B(1);
y2 = B(2);
x3 = C(1);
y3 = C(2);
A = [x1, y1];
B = [x2, y2];
C = [x3, y3];
a = norm(B-C);
b = norm(C-A);
c = norm(A-B);
s = (a+b+c)/2;
K = sqrt(s*(s-a)*(s-b)*(s-c));
lx = [0 a a*cos((pi-angle(B,A,C))/2)];
ly = [0 0 a*sin((pi-angle(B,A,C))/2)];
xq = lx(3)*(lx(2)+lx(3)-lx(1))/2/lx(3);
yq = ly(3)*(ly(2)+ly(3)-ly(1))/2/ly(3);
xi = [xq yq];
其中angle函数是计算两个向量之间的夹角,代码如下:
function [theta] = angle(v1,v2)
theta = acos(dot(v1,v2)/(norm(v1)*norm(v2)));
end
可以根据需要选择其中的一种计算方法来求解三角形中心。
阅读全文