2
0
Эх сурвалжийг харах

* Add crossproduct and normalize to TPointF

Michaël Van Canneyt 1 жил өмнө
parent
commit
7bcc949308
1 өөрчлөгдсөн 25 нэмэгдсэн , 0 устгасан
  1. 25 0
      rtl/objpas/types.pp

+ 25 - 0
rtl/objpas/types.pp

@@ -162,6 +162,8 @@ type
           class function Zero: TPointF; inline; static;
           function Angle(const b: TPointF): Single;
           function AngleCosine(const b: TPointF): single;
+          function CrossProduct(const apt: TPointF): Single;
+          function Normalize: TPointF;
 
           class function Create(const ax, ay: Single): TPointF; overload; static; inline;
           class function Create(const apt: TPoint): TPointF; overload; static; inline;
@@ -1229,6 +1231,29 @@ begin
   Result.y := apt.Y;
 end;
 
+
+function TPointF.CrossProduct(const apt: TPointF): Single;
+begin
+  Result:=X*apt.Y-Y*apt.X;
+end;
+
+function TPointF.Normalize: TPointF;
+
+var
+  L: Single;
+  
+begin
+  L:=Sqrt(Sqr(X)+Sqr(Y));
+  if SameValue(L,0,Epsilon) then
+    Result:=Self
+  else
+    begin
+    Result.X:=X/L;
+    Result.Y:=Y/L;
+    end;
+end;
+
+
 { TSizeF }
 
 function TSizeF.Add(const asz: TSize): TSizeF;