clear all;close all;clc;main.mn=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');
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.填寫柵格圖 畫線 在柵格圖把各個點座標和連線先畫上 畫直線的...