Browse Source

* patch by Make TPointF * TPointF a component-wise multiplication, resolves #40042

(cherry picked from commit f1e391fb415239d926c4f23babe812e67824ef95)
florian 2 years ago
parent
commit
04c6cb5047
1 changed files with 10 additions and 3 deletions
  1. 10 3
      rtl/objpas/types.pp

+ 10 - 3
rtl/objpas/types.pp

@@ -139,10 +139,11 @@ type
           class operator + (const apt1, apt2 : TPointF): TPointF;
           class operator + (const apt1, apt2 : TPointF): TPointF;
           class operator - (const apt1, apt2 : TPointF): TPointF;
           class operator - (const apt1, apt2 : TPointF): TPointF;
           class operator - (const apt1 : TPointF): TPointF;
           class operator - (const apt1 : TPointF): TPointF;
-          class operator * (const apt1, apt2: TPointF): Single; // scalar product
+          class operator * (const apt1, apt2: TPointF): TPointF;
           class operator * (const apt1: TPointF; afactor: single): TPointF;
           class operator * (const apt1: TPointF; afactor: single): TPointF;
           class operator * (afactor: single; const apt1: TPointF): TPointF;
           class operator * (afactor: single; const apt1: TPointF): TPointF;
           class operator := (const apt: TPoint): TPointF;
           class operator := (const apt: TPoint): TPointF;
+          class operator ** (const apt1, apt2: TPointF): Single; // scalar product
        end;
        end;
 
 
   { TSizeF }
   { TSizeF }
@@ -723,9 +724,10 @@ begin
   result:=NOT (SameValue(apt1.x,apt2.x) and Samevalue(apt1.y,apt2.y));
   result:=NOT (SameValue(apt1.x,apt2.x) and Samevalue(apt1.y,apt2.y));
 end;
 end;
 
 
-class operator TPointF. * (const apt1, apt2: TPointF): Single;
+class operator TPointF. * (const apt1, apt2: TPointF): TPointF;
 begin
 begin
-  result:=apt1.x*apt2.x + apt1.y*apt2.y;
+  result.x:=apt1.x*apt2.x;
+  result.y:=apt1.y*apt2.y;
 end;
 end;
 
 
 class operator TPointF. * (afactor: single; const apt1: TPointF): TPointF;
 class operator TPointF. * (afactor: single; const apt1: TPointF): TPointF;
@@ -738,6 +740,11 @@ begin
   result:=apt1.Scale(afactor);
   result:=apt1.Scale(afactor);
 end;
 end;
 
 
+class operator TPointF. ** (const apt1, apt2: TPointF): Single;
+begin
+  result:=apt1.x*apt2.x + apt1.y*apt2.y;
+end;
+
 class operator TPointF.+ (const apt1, apt2 : TPointF): TPointF;
 class operator TPointF.+ (const apt1, apt2 : TPointF): TPointF;
 begin
 begin
   result.x:=apt1.x+apt2.x;
   result.x:=apt1.x+apt2.x;