matlab實現三角形的外接圓與內接圓

2021-07-28 04:41:57 字數 2264 閱讀 4551

三角形的內接圓 演算法原理:

1.三角形角平分線的交點就是三角形內切圓的圓心。

2.(單位向量相加後的向量即為角平分線向量)把兩個向量a、b分別歸一化(就是分別除以自己的長度),得到

c = a/|a| ,d = b/|b| ,然後 c + d 就是原來 a和b的角平分線的向量,用該向量易得角平分線的斜率。

3.構建出角平分線方程y=kx+b後,求交點,求出內切圓的圓心。

%三角形的內接圓

clear all;clc;

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(1,:)-p(2,:));

v23=(p(3,:)-p(2,:))/norm(p(3,:)-p(2,:));

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(2,2)-p(1,2))/(p(2,1)-p(1,1));

b=p(2,2)-k*p(2,1);

r=(k*x0-y0+b)/sqrt(k^2+1);

%畫圖

hold on;

plot(p(:,1),p(:,2),'r');

p=circshift(p,1);

plot(p(:,1),p(:,2));

theta=0:0.01:2*pi;

x=x0+r*cos(theta);

y=y0+r*sin(theta);

plot(x,y,'-',x0,y0,'r.');

axis equal

三角形外切圓演算法原理:

1.垂直平分線的交點是內切圓的圓心;2.中點與斜率確定垂直平分線方程

clear all;close all;clc;

%三角形外接圓

clear;clc;

p=rand(3,2);

%求垂直平分線

center1=(p(1,:)+p(2,:))/2;%中點

center2=(p(2,:)+p(3,:))/2;

k1=-1/((p(2,2)-p(1,2))/(p(2,1)-p(1,1)));%斜率

k2=-1/((p(3,2)-p(2,2))/(p(3,1)-p(2,1)));

b1=center1(2)-k1*center1(1);%垂直平分線fang

b2=center2(2)-k2*center2(1);

%求交點

x0=-(b1-b2)/(k1-k2) %求兩直線交點

y0=-(-b2*k1+b1*k2)/(k1-k2)

%求半徑

r=sqrt((x0-p(1,1))^2+(y0-p(1,2))^2)

hold on;

plot(p(:,1),p(:,2),'r');

p=circshift(p,1);%畫三角形的

plot(p(:,1),p(:,2),'b');

thea=0:0.01:2*pi;

x=x0+r*cos(thea);

y=y0+r*sin(thea);

plot(x,y,'-',x0,y0,'r');

axis equal;

三角形的外接圓 計算幾何

給定三角形三點座標 三點不會在同一直線 和乙個點 x,y 要你判斷點 x,y 是否在三角形外接圓之外。若在圓外,輸出 accepted 若在圓上或圓內,則輸出 rejected sample input 3 2 0 0 2 2 0 2 2 2 0 0 2 2 0 0 2 2 0 0 2 2 0 1 ...

圓與三角形(圓與三角形是否相交)

給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...

圓與三角形

1298 圓與三角形 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試...