Line intersection search

So, I hit my head about this relatively simple algorithm. I am not sure what is wrong in my code, but I do not get the intersection point where they actually intersect.

I am using Unity3D and I am trying to find the intersection point of two lines in the x, z plane, but not in the x, y plane. I assume that an algorithm that works for x, y should work for x, z;

My code is:

Vector3 thisPoint1 = thisCar.position + (2 * thisCar.forward); Vector3 thisPoint2 = thisCar.position + (20 * thisCar.forward); Debug.DrawLine(thisPoint1, thisPoint2, Color.white, 2); Vector3 otherPoint1 = threateningCar.position + (2 * threateningCar.forward); Vector3 otherPoint2 = threateningCar.position + (20 * threateningCar.forward); Debug.DrawLine(otherPoint1, otherPoint2, Color.white, 2); float A1 = thisPoint2.z - thisPoint1.z; float B1 = thisPoint1.x - thisPoint2.x; float C1 = A1 * thisPoint1.x + B1 * thisPoint1.z; float A2 = otherPoint2.z - otherPoint1.z; float B2 = otherPoint1.x - otherPoint2.x; float C2 = A2 * otherPoint1.z + B2 * otherPoint1.z; float det = A1 * B2 - A2 * B1; float x = (B2 * C1 - B1 * C2) / det; float z = (A1 * C2 - A2 * C1) / det; return new Vector3(x, this.transform.position.y, z); 

Can someone help point out what I'm doing wrong?

thisCar.forward and threateningCar.forward are usually either [0,0,1], [0,0,-1] , or [1,0,0], [-1,0,0]

+4
source share
2 answers

Found it !!!

 float A2 = otherPoint2.z - otherPoint1.z; float B2 = otherPoint1.x - otherPoint2.x; float C2 = A2 * otherPoint1.z + B2 * otherPoint1.z; 

Must be:

 float A2 = otherPoint2.z - otherPoint1.z; float B2 = otherPoint1.x - otherPoint2.x; 

float C2 = A2 * otherPoint1 .x + B2 * otherPoint1.z ;

Lot wasted time: /.

In any case, this will help anyone who wants to make the intersection of lines.

0
source

you can put the parent empty GameObject on the car and put it a little in front of it (either in the IDE or at startup). This way you can safely get the two points needed to draw a line.

0
source

All Articles