Mega Code Archive

 
Categories / Delphi / Graphic
 

Determine if a 2D Point exists within a triangle

Title: Determine if a 2D Point exists within a triangle Function PntInTriangle(Px,Py,x1,y1,x2,y2,x3,y3:Double):Boolean; Var Or1, Or2, Or3: Double; 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); Result := (Or1 = Or2) And (Or2 = Or3); End; (* End Of PntInTriangle *) 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 Else Result := 0; (* Orientaion is neutral if result is 0 *) End; (* End Of Orientation *)