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 *)