Calculate intersection between to lines

January 25, 2012 by

Here’s something that will calculate where two lines will intersect. If they don’t intersect then the two resulting vectors will mark the points where both lines are closest together.

/* setup vectors */
 Vector3 l1begin = playerCurrentPosition;
 Vector3 l1end = playerTargetPosition - l1begin;
 Vector3 l2begin = enemyCurrentPosition;
 Vector3 l2end = enemyTargetPosition - l2begin;
/* calculate vectors */
 Vector3 n = Vector3.Cross(l1end, l2end);
 Vector3 u = Vector3.Cross(n, l1begin - l2begin) / Vector3.Dot(n, n);
 Vector3 intersection1 = l1begin - l1end * Vector3.Dot(l2end, u);
 Vector3 intersection2 = l2begin - l2end * Vector3.Dot(l1end, u);
/* draw vectors */
 Debug.DrawRay(l1begin, l1end, Color.cyan);
 Debug.DrawRay(l2begin, l2end, Color.magenta);
 Debug.DrawLine(intersection1, intersection2, Color.white);

Categorised in: ,

Leave a Reply

Your email address will not be published.