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

Posted on 2012-04-12
Last Modified: 2012-04-24
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
Question by:cupper
  • 2
  • 2
  • 2
LVL 27

Accepted Solution

d-glitch earned 500 total points
ID: 37839817
The method of solution is described here:

Author Comment

ID: 37839967
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)
LVL 27

Expert Comment

ID: 37840046
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)
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.


Author Comment

ID: 37860770
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).
LVL 18

Expert Comment

ID: 37874532
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.

LVL 18

Expert Comment

ID: 37878141
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.
If not, go ahead.

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


Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The greatest common divisor (gcd) of two positive integers is their largest common divisor. Let's consider two numbers 12 and 20. The divisors of 12 are 1, 2, 3, 4, 6, 12 The divisors of 20 are 1, 2, 4, 5, 10 20 The highest number among the c…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below.…

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question