# Calculation of the intersection of two 3D lines in space.

If I have two lines in 3 dimensional space defined by:

Line 1:  (x1,y1,z1) and (x2,y2,z2)
Line 2: (x3,y3,z3) and (x4,y4,z4)

Does anyone have the source code to solve this?
I am working in C#.Net
###### Who is Participating?

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
The method of solution is described here:  http://mathforum.org/library/drmath/view/63719.html

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Author Commented:
The proposed solution is for a point-vector pair. I'm looking for the equations for two lines, each defined by two points in space.

Line 1:  (x1,y1,z1) and (x2,y2,z2)
Line 2: (x3,y3,z3) and (x4,y4,z4)
Commented:
For each of your line segments, you can convert to point-vector form by using either point, and the difference between the two points as the direction vector.

(x ,y ,z ) =  (x1,y1,z1)  =  t*( x2-x1), (y2-y1), (z2-z1))   for the first line.    t=0  gives  (x1,y1,z1)     and    t=1  gives  (x2,y2,z2)
Author Commented:
Sorry for getting back to this so late.
In the example provided, the final answer is unclear to me (i.e. the (X,Y,Z) location of the intersection point).
Is the final intersection point (X,Y,Z) = (5,6,2)?

Also as an aside, I'm not getting the cross product he is getting in his example (see below)

from article
"Using Bensegueni's method, we find

a(V1 x V2) = a(-10,-11,-13)"

I get  a(V x V2) =  a (-10, 11, -13)   (i.e. middle term positive).
Graphics ExpertCommented:
In 2D, if two lines aren't parallel, it exists, for sure, an interception point.
In 3D there is another requirement: besides to be not parallel, the lines must be coplanar, say, they must be in a same plane.

The John Taylor's article Intersecting Lines in 3D: describes these conditions and gives some examples.

Jose
Graphics ExpertCommented:
Assuming the lines are defined by their end points (x1, y1, z1) and (x2, y2, z2) lets use the general parametric equation:

x = x1 + (x2 - x1)*t
y = y1 + (y2 - y1)*t
z = z1 + (z2 - z1)*t

if lines are
Line A --> (xa1,ya1, za1,  xa2,ya2, za2) and
Line B --> (xb1,yb1, zb1,  xb2,yb2, zb2),

first define the parametric equations

Line A
x = xa1 + (xa2 - xa1) * ta
y = ya1 + (ya2 - ya1) * ta
z = za1 + (za2 - za1) * ta

Line B
x = xb1 + (xb2 - xb1) * tb
y = yb1 + (yb2 - yb1) * tb
z = zb1 + (zb2 - zb1) * tb

To check if they are parallel,  get the vectors for each line.

Line A
(the components of the vector are the coefficients of ta):
M1 = (xa2 - xa1) * i + (ya2 - ya1) * j + (za2 - za1) * k

Line B
(do the same as for Line A, by using the coefficients of tb):
M2 = (xb2 - xb1) * i + ...

If M1 and M2 are equal or proportional, the lines are parallel, so there is no interception point.

Now set the x and y values.
Of course, x and y must be the same in both lines equations, so,

x = xa1 + (xa2 - xa1) * ta = xb1 + (xb2 - xb1) * tb
and
y = ya1 + (ya2 - ya1) * ta = yb1 + (yb2 - yb1) * tb

By solving tha above equations, we have values for ta and tb.
Now, just apply these values in the z equations to chek is they are true.
If so, you found the interception point, if not, they don't intercept each another.

Jose
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Algorithms

From novice to tech pro — start learning today.