Can I create points on polygon with specific distance between them?

Can someone help to make function to create points with specific distanace from each other on a polygon made of points in XY-plane with random distance between them.
for example: if I have the blue polygon made of X and Y point (file attached) as in the pictures1, can I create points (red) in as in picture 2. with distance D between them?
Picture 1
Picture 2

 採用された回答

Image Analyst
Image Analyst 2019 年 2 月 16 日

3 投票

This is what interparc does. See John D'Errico's File Exchange: interparc

7 件のコメント

Faez Alkadi
Faez Alkadi 2019 年 2 月 16 日
seems like a good solution. but this function devides the distance based on the number of points you put .for example if t=100. this meand distance between points= length of polygon/100.
is there anyway i can input D and get number of points according t OK the length of the polygon?
thank you so much
Image Analyst
Image Analyst 2019 年 2 月 16 日
Not sure, but one thing you might try is to use interp1 to interpolate values
xq = x(1) : D : x(end);
xEvenlySpaced = interp(1:length(x), x, xq);
Same for y - you need to do both of them independently.
Of course you realize that there may be a small left over part at the end if the length of the segments or curve is not an integer multiple of D.
Faez Alkadi
Faez Alkadi 2019 年 2 月 16 日
編集済み: Faez Alkadi 2019 年 2 月 17 日
Well, for 2D data points (xy) I can use the following trick to solve for specific distance (D).
polyin = polyshape(xy);
P = perimeter(polyin);
t = round(P/D);
I'm just wondering how to get P for 3D data points (xyz)
Any idea???
Thank you so much
John D'Errico
John D'Errico 2019 年 2 月 17 日
As the author of those tools, there is no reason you cannot compute the arclength of the segmented line yourself in advance. Then use that to indicate the set of points to be generated, or just the number of points.
A piecewise linear arclength is trivial to compute, but you can be lazy and just use my arclength tool to compute that length too.
Faez Alkadi
Faez Alkadi 2019 年 2 月 17 日
編集済み: Faez Alkadi 2019 年 2 月 17 日
John, First of all thank you for making this great stuff!!!
second, I wasn't lazy as you se from my previous comment :)
I just had a problem to find it for 3D data points !!!
again thanks to all of you :)
problem solved !!!
John D'Errico
John D'Errico 2019 年 2 月 17 日
I'll admit to being lazy. :) It saves a lot of time.
Faez Alkadi
Faez Alkadi 2019 年 2 月 17 日
well, if you say so ,master :)

サインインしてコメントする。

その他の回答 (1 件)

Kevin Phung
Kevin Phung 2019 年 2 月 16 日
編集済み: Kevin Phung 2019 年 2 月 16 日

0 投票

depends if your y values are equally spaced in the first place.
Is this an appropriate workaround?:
% add this to your plot
hold on;
spacing= 10;
plot(xy(1:spacing:end,1),xy(1:spacing:end,2),'ro');
this is spacing the distance between each index used rather than the actual distance

1 件のコメント

Faez Alkadi
Faez Alkadi 2019 年 2 月 16 日
編集済み: Faez Alkadi 2019 年 2 月 16 日
What I'm looking for is the actual distance!!!
Thank you though

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by