How to divide a distance into some equal parts?

37 ビュー (過去 30 日間)
Zara Khan
Zara Khan 2020 年 1 月 25 日
コメント済み: Zara Khan 2020 年 1 月 31 日
Suppose there are two points (x1,y1) and (x2,y2). I am finding out the distance between these two points. Diving the distance in 2,3, 4,5 and so on. I want to mark the places also. The distance is varying in every input cases.

回答 (2 件)

Mohammad Sami
Mohammad Sami 2020 年 1 月 25 日
Assuming the coordinates are variable p1, p2
% p1 = [x1 y1];
% p2 = [x2 y2];
midpoint = p1 + 0.5.* (p2-p1); % halfway point
% just change 0.5 to something else for other point along the line between p1 and p2
  1 件のコメント
Zara Khan
Zara Khan 2020 年 1 月 25 日
how to get all the points coordinates? I mean each division coordinates

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


John D'Errico
John D'Errico 2020 年 1 月 25 日
編集済み: John D'Errico 2020 年 1 月 25 日
You have two points. Call they xy1 and xy2, where the xy are row vectors of length 2. For example...
xy1 = [-1,3];
xy2 = [2,5];
Now, you wish to create new points, that are equally spaced in distance along the line that connects the points. Lets say you want to divide the line segment into n equal parts. That means, including the two original points, you will have n+1 points as a result, with n-1 additional points created. I'll pick, for example, n=5 here. So there will be 5 segments of equal length, so 4 new points to be created in addition.
n = 5;
t = linspace(0,1,n+1)';
xy = (1-t)*xy1 + t*xy2;
plot(xy(:,1),xy(:,2),'b-o')
xy
xy =
-1 3
-0.4 3.4
0.2 3.8
0.8 4.2
1.4 4.6
2 5
As you can see, xy is an array with n+1 rows and 2 columns. The first and last rows are the original points, with the desired 4 new rows in between.
If you want to appreciate why it works so simply, note that I have taken a weighted linear combination of xy1 and xy2. Some would call this a convex linear combination, I suppose. The important thing to understand is that the weights, thus (1-t) and t respectively, sum to 1, and they are created using a tool like linspace, so they uniformly vary from 0 to 1.
  6 件のコメント
Zara Khan
Zara Khan 2020 年 1 月 31 日
we have xy1 and xy2. we are getting some intermediate coordinates between them. Now I want to draw circles that will pass through all these inteemediate coordinates. Is this possible ?
Note: This one is the extra question I am asking.
Zara Khan
Zara Khan 2020 年 1 月 31 日
More clearly I want to get all the distances from point xy1 to other points. Let assume xy1 is the center then I want to get other radius. We have all intermediate coordinates. How to calculate the distance? Like you assumed d=3, but I want to calculate distance from center to other points. This will help to draw circles with different radius around the circle.

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

カテゴリ

Help Center および File ExchangeComputational Geometry についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by