# 2D line-segment - line intersection?

This topic is 4532 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

This is probably a simple problem, but my math skills aren't that sharp. What I have is a line segment from (x1,z1) to (x2,z2) and a value z. z represents a horizontal, one-dimensional line. I've gotten to the point where I can tell if z is between the segment's points. Now I'm stuck though, I have no idea how to get the intersection point. Point consists of two variables: X and Z
		public static Point LinePlaneIntersection( Point A, Point B, short Z )
{
if( A.Z == Z )
{
return A;
}
if( B.Z == Z )
{
return B;
}
if( A.Z < B.Z )
{
if( ( Z < A.Z ) || ( Z > B.Z ) )
{
return null;
}
}
else
{
if( ( Z < B.Z ) || ( Z > A.Z ) )
{
return null;
}
}
// intersection test should go here
return null;
}


Anyone have any ideas? I thought about getting the slope, but what do I do after that?

##### Share on other sites
Try:
float dx = x2 - x1;float dz = z2 - z1;if (std::fabs(dz) > 0.0f) { // Or an epsilon instead of 0.0    float t = (z1 - z) / dz;    float newX = x1 + t * dx;    float newZ = z1 + t * dz;}
Typed into post, so may or may not be correct.

##### Share on other sites
You calculate the slope by
    m = (y2 - y1) / (x2 - x1)

To calculate the b-value, you put it an arbitrary point you know are on the line, with the m you know, and then solve for b.
    y = m * x + b    b = y1 - m * x1

You now know the equation of the line. Now you wonder for which (x_ans, y_ans) the line intersects with a horizontal line y = z.
We express this as an equation and solve for x
    z = m * x_ans + b    x_ans = (z - b) / m

So now we know the x for intersection, so we can easily get the y from the line equation:
    y_ans = m * x_ans + b

Edit: Oh, stupid me, y_ans will of course always be equal to z, so you're done when you know x_ans.

##### Share on other sites
Edit: Thanks guys, I'll try both methods out once I get home.

1. 1
2. 2
3. 3
Rutin
18
4. 4
JoeJ
14
5. 5

• 14
• 10
• 23
• 9
• 33
• ### Forum Statistics

• Total Topics
632631
• Total Posts
3007538
• ### Who's Online (See full list)

There are no registered users currently online

×