三角形的内接圆

clc;
clear all;
close all;
p=rand(3,2);
v12=(p(2,:)-p(1,:))/norm(p(2,:)-p(1,:));
v13=(p(3,:)-p(1,:))/norm(p(3,:)-p(1,:));
v21=(p(1,:)-p(2,:))/norm(p(2,:)-p(1,:));
v23=(p(3,:)-p(2,:))/norm(p(2,:)-p(3,:));
%过顶点的平分线
 v1=v12+v13;
 %平分线的直线参数
 k1=v1(2)/v1(1);
 b1=p(1,2)-k1*p(1,1);
 
 %另一顶点的平分线
 v2=v21+v23;
 k2=v2(2)/v2(1);
 b2=p(2,2)-k2*p(2,1);
 
 %两个平分线的交点,就是圆心
 x0=-(b1-b2)/(k1-k2);
 y0=-(-b2*k1+b1*k2)/(k1-k2);
 k=(p(1,2)-p(2,2))/(p(1,1)-p(2,1));  
b=p(1,2)-k*p(1,1);
 r=(k*x0-y0+b)/sqrt(k^2+1);
 
 plot(p(:,1),p(:,2));
 p=circshift(p,1);%点向右移动一位
 hold on;
 plot(p(:,1),p(:,2));
hold on;
theta=0:0.01:2*pi;
x=x0+r*cos(theta);
y=y0+r*sin(theta);
plot(x,y,'-',x0,y0,'.');
axis equal

你可能感兴趣的:(三角形的内接圆)