Mega Code Archive

 
Categories / Delphi / Graphic
 

Determine the point at which two 2D segments intersect

Title: Determine the point at which two 2D segments intersect? procedure IntersectPoint(x1, y1, x2, y2, x3, y3, x4, y4: Double; var Nx, Ny: Double); var R: Double; dx1, dx2, dx3: Double; dy1, dy2, dy3: Double; begin dx1 := x2 - x1; dx2 := x4 - x3; dx3 := x1 - x3; dy1 := y2 - y1; dy2 := y1 - y3; dy3 := y4 - y3; R := dx1 * dy3 - dy1 * dx2; if R 0 then begin R := (dy2 * (x4 - x3) - dx3 * dy3) / R; Nx := x1 + R * dx1; Ny := y1 + R * dy1; end else begin if Collinear(x1, y1, x2, y2, x3, y3) then begin Nx := x3; Ny := y3; end else begin Nx := x4; Ny := y4; end; end; end; function Collinear(x1, y1, x2, y2, x3, y3: Double): Boolean; begin Result := (((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) = 0); end; (* End Of Collinear *) // calcule le point d'intersection de 2 droites bidimensionnelles