How to test if a line segment intersects an axis-aligned rectange in 2D?

前端 未结 12 754
执念已碎
执念已碎 2020-11-30 07:33

How to test if a line segment intersects an axis-aligned rectange in 2D? The segment is defined with its two ends: p1, p2. The rectangle is defined with top-left and bottom-

12条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-30 07:59

    I did a little napkin solution..

    Next find m and c and hence the equation y = mx + c

    y = (Point2.Y - Point1.Y) / (Point2.X - Point1.X)
    

    Substitute P1 co-ordinates to now find c

    Now for a rectangle vertex, put the X value in the line equation, get the Y value and see if the Y value lies in the rectangle bounds shown below

    (you can find the constant values X1, X2, Y1, Y2 for the rectangle such that)

    X1 <= x <= X2 & 
    Y1 <= y <= Y2
    

    If the Y value satisfies the above condition and lies between (Point1.Y, Point2.Y) - we have an intersection. Try every vertex if this one fails to make the cut.

提交回复
热议问题