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?

18 vues (au cours des 30 derniers jours)
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!

Réponse acceptée

Ameer Hamza
Ameer Hamza le 28 Nov 2020
Modifié(e) : Ameer Hamza le 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

Plus de réponses (2)

M.Many
M.Many le 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 commentaires
M.Many
M.Many le 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
Alan
Alan le 28 Nov 2020
Yes, I got it. This method works well too. Thanks!

Connectez-vous pour commenter.


Jan
Jan le 28 Nov 2020
Modifié(e) : Jan le 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)
  2 commentaires
Alan
Alan le 28 Nov 2020
When I input these code, the comment window shows information: Matrix dimentsions must agree.
Jan
Jan le 30 Nov 2020
Which Matlab version are you using? The above code requires >= R2016b.

Connectez-vous pour commenter.

Catégories

En savoir plus sur NaNs 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