Create coordinates on a convex hull

16 vues (au cours des 30 derniers jours)
Kwek Lawrence
Kwek Lawrence le 12 Sep 2019
Modifié(e) : Bruno Luong le 12 Sep 2019
I have a convex hull, defined by
k=convhull(x,y)
P=[x(k),y(k)]
kS=polyshape(P)
kP=perimeter(kShape)
How can I divide the perimeter of the convex hull into n (e.g. 500) equal distance/lengths, and find the respective coordinates?

Réponse acceptée

Bruno Luong
Bruno Luong le 12 Sep 2019
Modifié(e) : Bruno Luong le 12 Sep 2019
% test data
xy=rand(100,2);
P=xy(convhull(xy),:);
d=[0;cumsum(sqrt(sum(diff(P).^2,2)))];
xyi=interp1(d,P,linspace(0,d(end),501)); % first point ~= last point
plot(P(:,1),P(:,2),'or',xyi(:,1),xyi(:,2),'b.-');

Plus de réponses (1)

Bjorn Gustavsson
Bjorn Gustavsson le 12 Sep 2019
Perhaps this function is overkill, but to me it seems as if this FEX-contribution should help:
xy2sn, I don't know if it is the functionality of xy2sn or the sn2xy that most resembles your request.
Perhaps either of these contributions solves your problem better:
arclength, interparc. But one of these should get you at least 90% of the way.
HTH

Catégories

En savoir plus sur Computational Geometry dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by