I have two 3d points, A(1,0,0) and B(0,1,0). And I connect these two points as a line AB. How to divide this line into 10 equally segments and get their coordinates?

6 views (last 30 days)
Hello,
I have two 3d points, A(1,0,0) and B(0,1,0). And I connect these two points as a line AB. How to divide this line into 10 equally segments and get their coordinates?
Many thanks!

Accepted Answer

Ameer Hamza
Ameer Hamza on 28 Nov 2020
Edited: Ameer Hamza on 28 Nov 2020
This is one way
A = [1,0,0];
B = [0,1,0];
n = 10;
X = [A; B];
t = linspace(0, 1, n+1);
points = interp1([0 1], X, t)
Result
>> points
points =
1.0000 0 0
0.9000 0.1000 0
0.8000 0.2000 0
0.7000 0.3000 0
0.6000 0.4000 0
0.5000 0.5000 0
0.4000 0.6000 0
0.3000 0.7000 0
0.2000 0.8000 0
0.1000 0.9000 0
0 1.0000 0

More Answers (2)

M.Many
M.Many on 28 Nov 2020
Hi, you can use vectors to solve this problem
AB = [-1 1 0]' %vector AB
discretization = linspace(0,1,10) %10 values
vectors = AB*discretization %matrix multiplication
This gives the matrix whose columns are the vectors AP, to get the coords of the points P just add the coords of A to the columns of 'vectors'
  3 Comments
M.Many
M.Many on 28 Nov 2020
Yes, you can do this if you add these lines at the end of the code
AB = [-1 1 0]' %vector AB
discretization = linspace(0,1,11) %11 values for 10 segments
vectors = AB*discretization %matrix multiplication
A = [1,0,0]'
P = A+vectors
The result is
P =
1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0.4000 0.3000 0.2000 0.1000 0
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
0 0 0 0 0 0 0 0 0 0 0
Where each culumn is the coordinates of corresponding point P

Sign in to comment.


Jan
Jan on 28 Nov 2020
Edited: Jan on 30 Nov 2020
A = [1, 0, 0];
B = [0, 1, 0];
ab = B - A;
v = linspace(0, 1, 10).';
C = A + v .* ab % >= R2016b, auto-expanding
% For older versions:
C = A + bsxfun(@times, v, ab)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!