Nicros
Nicros

Reputation: 5183

Finding coordinates of a point between two points?

Doing some 3D stuff in wpf- want to use a simpler test to see if everything is working (before moving to curves).

The basic question is given two points x1,y1,z1 and x2,y2,z2 I have calculated the distance between the points. But how to find the coordinates of another point (x3,y3,z3) that lies on that line at some distance?

I.e. if my line is 100 long between -50,0,0 and 50,0,0 what are the coordinates of the point at 100 * 0.1 along the line?

I think this is a simple formula but I haven't found it yet....

Upvotes: 9

Views: 18253

Answers (4)

Simon
Simon

Reputation: 9365

This has to do with math, but ok. Let P and Q be the two given points and X the point you're looking for.

P + r(Q - P) = X

r indicates a factor.

if 0 < r < 1: the point x will be on the line between the two points.

That's it!

EDIT:

To find a point at a given distance d from P(p1/p2/p3):

d² / euclidian_square_distance(P,Q) = r

Insert r in the equation mentioned above and you'll have your point! :)

P.S: Btw: P-Q = (Px - Qx, Py - Qy, Pz - Qz)... i bet you alread knew it :)

Upvotes: 7

Sridhar Iyer
Sridhar Iyer

Reputation: 2840

a line joining the points in 3d is given by equation:

(x - x1)/(x2 - x1) = (y - y1)/(y2 - y1) = (z - z1)/(z2 - z1)

You have the values of x1,y1,z1,x2,y2,z2. This will give you an equation for the line.

another equation would be

((x-x1)^2+(y-y1)^2+(z-z1)^2)^(1/2)=distance

Solve the 2 equations to get the value of the points.

Upvotes: 0

Dan Piponi
Dan Piponi

Reputation: 8117

Let t vary from 0 to 1. Use the following:

(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)

When t=0 you get the first point. When t=1 you get the second.

This method is called linear interpolation.

Upvotes: 1

Mark Byers
Mark Byers

Reputation: 838836

For each p between 0 and 1 then this will give you a point on the line segment:

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))

Upvotes: 15

Related Questions