2 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!

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

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'

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

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

Start Hunting!
## 0 Comments

Sign in to comment.