三角形两角的角平分线就能确定内切圆。
结果如下:
matlab代码如下:
clear all;close all;clc; p=rand(,); %(x,y) v12=(p(,:)-p(,:))/norm(p(,:)-p(,:)); %一个顶点两边的归一化向量
v13=(p(,:)-p(,:))/norm(p(,:)-p(,:)); v21=(p(,:)-p(,:))/norm(p(,:)-p(,:)); %另一个顶点两边的归一化向量
v23=(p(,:)-p(,:))/norm(p(,:)-p(,:)); v1=v12+v13; %过顶点一的角平分线
k1=v1()/v1();
b1=p(,)-k1*p(,); v2=v21+v23; %过顶点二的角平分线
k2=v2()/v2();
b2=p(,)-k2*p(,); x0=-(b1-b2)/(k1-k2); %求两直线交点,圆心
y0=-(-b2*k1+b1*k2)/(k1-k2); k=(p(,)-p(,))/(p(,)-p(,));
b=p(,)-k*p(,);
r=(k*x0-y0+b)/sqrt(k^+); %求圆心到一条边的距离,半径 hold on;
plot(p(:,),p(:,));
p=circshift(p,);
plot(p(:,),p(:,)); theta=:0.01:*pi;
x=x0+r*cos(theta);
y=y0+r*sin(theta);
plot(x,y,'-',x0,y0,'.');
axis equal