mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-04 02:33:09 +02:00
* Add crossproduct and normalize to TPointF
This commit is contained in:
parent
8179aadb2c
commit
7bcc949308
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user