Dışbükey çokgen (convex hull) bulma ve çokgenin içinde noktalar oluşturma
Açıklama: Köşe noktaları verilen bir şeklin dışbükey çokgeninin (convex hull) içinde istenilen sayıda rastgele nokta oluşturma ve bunları çizdirme.
Şekil bilgisine sahip olduğumuz ve içinde örnek noktalar oluşturmak istediğimiz bir alanda kullanılabilir. Örneğin, genelde renk veya deri sezimi yaparken önce resimlerde rengi/cildi kapsayan köşegenler bulunur, daha sonra içindeki tüm noktalar işleme tabi tutulur. Bu zaman açısından çok masraflı olur. Onun yerine bu kod ile rastgele noktalar bulunup onlarla eğitim yapılabilir. Tabii rand(1,1)
kısmının şeklin içinde olması ihtimalini arttırmak için o değeri şeklin en alçak ve en yüksek koordinat değerlerinin arasına taşımak gerekli.
English description: Finding the convex hull of the given vertices and creating sample points inside this convex hull.
Kaynak kod
% createRandomPointsInsideAPolygon.m: Köşe noktaları verilen bir şeklin % dışbükey çokgeninin (convex hull) içinde istenilen sayıda rastgele nokta % oluşturma ve bunları çizdirme clear, clc % Şeklin köşelerinin x ve y koordinatlarini belirleyelim. xVertices = rand(20,1); yVertices = rand(20,1); % Kaç tane rastgele nokta istiyoruz numPoints = 1000; % Verdiğimiz noktaların dışbükey çokgenini bulalım k = convhull(xVertices,yVertices); xPolygonVertices = xVertices(k); yPolygonVertices = yVertices(k); % 'numPoints' kadar noktanın x ve y koordinatlarını bulacağız x = zeros(numPoints,1); y = zeros(numPoints,1); for i = 1:numPoints isIn = 0; while ~isIn % Çokgenin içine düşene kadar dene x(i) = rand(1,1); y(i) = rand(1,1); isIn = inpolygon(x(i),y(i),xPolygonVertices,yPolygonVertices); % Kullanım: inpolygon(noktanın x koordinatı, y koordinatı,0 ... % çokgenin köşelerinin x koordinatları, y koordinatları) end end plot(xVertices, yVertices, 'o', 'Linewidth',2) hold on plot(xPolygonVertices,yPolygonVertices,x,y,'r+') hold off legend('Şekil noktaları','Dışbükey çokgen', 'Rastgele bulunan noktalar') shg % Çizim penceresini göster
2 yorum
ismail abi verilen bir şekli çevreleyen polygon'u noktalar oluşturarak nasıl bulabiliriz ?
Bu konuda taze bir bilgim yok. Fakat hullfit örneğinden bakılabilir.