Mega Code Archive

 
Categories / Delphi / Graphic
 

Determine the Point of intersection for two 2D segments

Title: Determine the Point of intersection for two 2D segments 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 *)