Mega Code Archive

 
Categories / Delphi / Graphic
 

Determine if a point exists within a triangle

Title: Determine if a point exists within a triangle? function PointInTriangle(const Px, Py, x1, y1, x2, y2, x3, y3: Double): Boolean; var Or1: Integer; Or2: Integer; Or3: Integer; begin Or1 := Orientation(x1, y1, x2, y2, Px, Py); Or2 := Orientation(x2, y2, x3, y3, Px, Py); Or3 := Orientation(x3, y3, x1, y1, Px, Py); if (Or1 = Or2) and (Or2 = Or3) then Result := True else if Or1 = 0 then Result := (Or2 = 0) or (Or3 = 0) else if Or2 = 0 then Result := (Or1 = 0) or (Or3 = 0) else if Or3 = 0 then Result := (Or2 = 0) or (Or1 = 0) else Result := False; end; (* End of PointInTriangle *) function Orientation(const 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 aka collinear *) end; (* End of Orientation *)