From 3aca9124247fc5f4ec70b481ccb44bb4058714b0 Mon Sep 17 00:00:00 2001 From: Bergmann89 Date: Tue, 29 Dec 2015 00:31:15 +0100 Subject: [PATCH] * [ugluVector] added some usefull methods for Vector2f --- ugluVector.pas | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/ugluVector.pas b/ugluVector.pas index bea8190..61999e4 100644 --- a/ugluVector.pas +++ b/ugluVector.pas @@ -167,6 +167,7 @@ type //Vektor Konstruktoren function gluVector4f(const X, Y, Z, W: Single): TgluVector4f; function gluVector4f(const aVec: TgluVector3f; const W: Single): TgluVector4f; + function gluVector4f(const aVec: TgluVector2f; const Z, W: Single): TgluVector4f; function gluVector4d(const X, Y, Z, W: Single): TgluVector4d; function gluVector3f(const X, Y, Z: Single): TgluVector3f; overload; function gluVector3f(const v: TgluVector4f): TgluVector3f; overload; @@ -204,6 +205,8 @@ type function gluVectorClamp(const v: TgluVector4f; const aMin, aMax: Single): TgluVector4f; overload; function gluVectorAdd(const v1, v2: TgluVector3f): TgluVector3f; function gluVectorSubtract(const v1, v2: TgluVector3f): TgluVector3f; + function gluVectorAdd(const v1, v2: TgluVector2f): TgluVector2f; + function gluVectorSubtract(const v1, v2: TgluVector2f): TgluVector2f; procedure gluVectorOrthoNormalize(var reference, tangent: TgluVector3f); function gluGetAbsCoord(const v: TgluVector3f): TgluVector3f; @@ -264,6 +267,9 @@ type operator + (const v1, v2: TgluVector3f): TgluVector3f; inline; operator - (const v1, v2: TgluVector3f): TgluVector3f; inline; + operator + (const v1, v2: TgluVector2f): TgluVector2f; inline; + operator - (const v1, v2: TgluVector2f): TgluVector2f; inline; + const gluVectorNull : TgluVector3f = (0,0,0); gluVectorUnitX: TgluVector3f = (1,0,0); @@ -355,6 +361,16 @@ begin result := gluVectorSubtract(v1, v2); end; +operator + (const v1, v2: TgluVector2f): TgluVector2f; +begin + result := gluVectorAdd(v1, v2); +end; + +operator - (const v1, v2: TgluVector2f): TgluVector2f; +begin + result := gluVectorSubtract(v1, v2); +end; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //speichert einen Vector in einem Stream //@vec: Vector die gespeichert werden soll; @@ -436,6 +452,14 @@ begin result[3] := W; end; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +function gluVector4f(const aVec: TgluVector2f; const Z, W: Single): TgluVector4f; +begin + PgluVector2f(@result[0])^ := aVec; + result[2] := Z; + result[3] := W; +end; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //erstellt einen Vector //@W: 1. Wert im Vector; @@ -778,6 +802,20 @@ begin result[i] := v1[i] - v2[i]; end; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +function gluVectorAdd(const v1, v2: TgluVector2f): TgluVector2f; +begin + result[0] := v1[0] + v2[0]; + result[1] := v1[1] + v2[1]; +end; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +function gluVectorSubtract(const v1, v2: TgluVector2f): TgluVector2f; +begin + result[0] := v1[0] - v2[0]; + result[1] := v1[1] - v2[1]; +end; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Verändert die Vektoren so, dass sie orthogonal und normalisiert sind, bleibt dabei in der gleichen Ebene //@v1: Vektor 1;