Mega Code Archive

 
Categories / Delphi / Graphic
 

Determine if two 2d segments intersect

Title: Determine if two 2d segments intersect? function Intersect(x1, y1, x2, y2, x3, y3, x4, y4: Double): Boolean; begin Result := (Orientation(x1, y1, x2, y2, x3, y3) Orientation(x1, y1, x2, y2, x4, y4)) and (Orientation(x3, y3, x4, y4, x1, y1) Orientation(x3, y3, x4, y4, x2, y2)); end; (* End Of SegmentIntersect *) function Orientation(x1, y1, x2, y2, Px, Py: Double): Integer; var Orin: Double; begin (* Linear determinant of the 3 points *) Orin := (x2 - x1) * (py - y1) - (px - x1) * (y2 - y1); if Orin 0.0 then Result := +1 (* Orientaion is to the right-hand side *) else if Orin then Result := -1 (* Orientaion is to the left-hand side *) else Result := 0; (* Orientaion is neutral if result is 0 *) end; (* End Of Orientation *) // vérifier si 2 droites bidimensionnelles se coupent