Calculate the largest, smallest diameter and the centroid of a polyshape (irregula rpolygon) from a set of points
18 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a set of points (x,y) for a polyshape (almost 120 coordinates), I want to find the largest, smallest diameter and the centroid of this irregular polygon.
1 Kommentar
Akzeptierte Antwort
Matt J
am 8 Sep. 2022
Bearbeitet: Matt J
am 8 Sep. 2022
If the min and max feret diameters are what you want, then one approach would be,
pgon=nsidedpoly(4,'Radius',0.5); %input polyshape
fun=@(theta) feretDiam(pgon.Vertices,theta);
Theta=linspace(-pi,pi,1e4);
%Min Diameter
[~,i0]=min(fun(Theta));
[thetamin,minDiam]=fminsearch(@(t)fun(t),Theta(i0));
minDiam
%Max Diameter
[~,i0]=max(fun(Theta));
[thetamax,maxDiam]=fminsearch(@(t)-fun(t),Theta(i0));
maxDiam=-maxDiam
function d=feretDiam(V,theta)
p=V*[cos(theta);sin(theta)];
d=max(p,[],1)-min(p,[],1);
end
14 Kommentare
Matt J
am 9 Sep. 2022
Can you please tell me what the problem in this code:
The code doesn't include the lines that compute thetamin and thetamax.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Elementary Polygons finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!