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
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.
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.
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))
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 :)