matlab 11 多邊形凹凸性檢測

2021-09-26 07:53:58 字數 1237 閱讀 4617

clear all;close all;clc;

n=20;

p=rand(n,2);

p=createsimplypoly(p); %建立簡單多邊形

hold on;

for i=1:n

if i==1 %處理第乙個點

v1=p(n,:)-p(1,:); %當前點到前一點向量

v2=p(2,:)-p(1,:); %當前點到後一點向量

elseif i==n %最後乙個點

v1=p(n-1,:)-p(n,:);

v2=p(1,:)-p(n,:);

else %其他點

v1=p(i-1,:)-p(i,:);

v2=p(i+1,:)-p(i,:);

endr=det([v1;v2]); %叉乘後第三個向量的方向

if r>0

plot(p(i,1),p(i,2),'

r>

');

elseif r

<0

plot(p(i,1),p(i,2),'bs'

);

endendplot(p(:,1),p(:,2),'k'

);p=circshift(p,1);

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

k');

main.m

function p=createsimplypoly(p)

cen=mean(p);

ang=atan2(p(:,1)-cen(1),p(:,2)-cen(2)); %每個點到座標中心極角

p=[p,ang];

p=sortrows(p,3); %按極角排序

有時需要對多邊形各頂點的凹凸性做判斷。

先計算待處理點與相鄰點的兩個向量,再計算兩向量的叉乘,根據求得結果的正負可以判斷凹凸性。

結果為負則為凹頂點,為正則為凸頂點。

凹頂點用"bs"表示,凸頂點用"r>"表示。

matlab練習程式(多邊形頂點凹凸性)

生成簡單多邊形後,有時還需要對多邊形各頂點的凹凸性做判斷。先計算待處理點與相鄰點的兩個向量,再計算兩向量的叉乘,根據求得結果的正負可以判斷凹凸性。結果為負則為凹頂點,為正則為凸頂點。凹頂點用o表示,凸頂點用 表示。結果如下 matlab 如下 clear all close all clc n 20...

Matlab生成多邊形,並且判斷多邊形是否相交

隨機生成若干個點,就可以生成多邊形。嚴格來說,是要判斷產生的點是否共線的,但是這樣概率太低,所以我就沒有判斷。生成的點不能直接連起來,因為點的順序有可能是錯亂的,所以首先要進行順序判斷,方法是計算角度。找到平面內某一點,計算多邊形每乙個點到這個點連線和x軸的夾角,對這個夾角進行排序,就可以得到點的順...

凹 凸 分離多邊形的填充繪製

步驟 1.建立多邊形 按順時針順序逐個提供座標點。2.繪製。繪製步驟 1.計算外接矩形 就是逐個座標點比較,最後得到乙個剛好框住該多邊形的矩形。2.製作bitmap 位圖或者說柵格圖 根據外接矩形的大小,自行分配記憶體,製作乙個柵格圖。3.填寫柵格圖 畫線 在柵格圖把各個點座標和連線先畫上 畫直線的...