Skip to content

Commit d02792a

Browse files
ADD: Update libs
1 parent 2738a87 commit d02792a

28 files changed

+496
-43
lines changed

miniprojects/2048/uvectormath.pas

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(******************************************************************************)
22
(* uvectormat.pas 12.11.2014 *)
33
(* *)
4-
(* Version : 0.18 *)
4+
(* Version : 0.19 *)
55
(* *)
66
(* Author : Uwe Schächterle (Corpsman) *)
77
(* *)
@@ -60,6 +60,7 @@
6060
(* TMatrix3x3.getInverse, TMatrix2x2.getInverse *)
6161
(* InvertMatrix2 for TMatrix4x4, TMatrix2x2 *)
6262
(* 0.18 CalculatePlumbFootPoint *)
63+
(* 0.19 Convolve *)
6364
(* *)
6465
(******************************************************************************)
6566
Unit uvectormath;
@@ -580,6 +581,14 @@
580581
// Die Koeffizienten von a werden als Vector übergben
581582
Function CalculatePolynom(x: TBaseType; Const a: TVectorN): TBaseType;
582583

584+
// Faltet 2 Vectoren mit einander und gibt das Ergebnis zurück, Achtung,
585+
// hier wird die "ineffiziente" Quadratische Faltung verwendet,
586+
// also die Vectoren lieber nicht zu groß machen!
587+
// Es gibt auch noch die Variante, bei der man zuerst die beiden Vektoren
588+
// durch eine FFT jagt, dann komponentenweise multipliziert und dann wieder
589+
// zurück transformiert, das ist bei Großen Vektoren tatsächlich schneller (siehe hier: https://www.youtube.com/watch?v=KuXjwB4LzSA )
590+
Function Convolve(Const a, b: tvectorN): TVectorN;
591+
583592
Implementation
584593

585594
{$IFDEF UseOperandOverloading}
@@ -3302,6 +3311,21 @@
33023311
End;
33033312
End;
33043313

3314+
Function Convolve(Const a, b: tvectorN): TVectorN;
3315+
Var
3316+
i, j: Integer;
3317+
Begin
3318+
result := Nil;
3319+
setlength(result, length(a) + length(b) - 1);
3320+
For i := 0 To High(Result) Do Begin
3321+
Result[i] := 0;
3322+
For j := 0 To High(a) Do Begin
3323+
If (i - j >= 0) And (i - j <= High(b)) Then
3324+
Result[i] := Result[i] + a[j] * b[i - j];
3325+
End;
3326+
End;
3327+
End;
3328+
33053329
Function CalculateOrthoganlProjection(A, B, M: TVector2): TVector2;
33063330
Var
33073331
d_AB, d_M: TVector2;

miniprojects/3d_puzzle/uvectormath.pas

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(******************************************************************************)
22
(* uvectormat.pas 12.11.2014 *)
33
(* *)
4-
(* Version : 0.18 *)
4+
(* Version : 0.19 *)
55
(* *)
66
(* Author : Uwe Schächterle (Corpsman) *)
77
(* *)
@@ -60,6 +60,7 @@
6060
(* TMatrix3x3.getInverse, TMatrix2x2.getInverse *)
6161
(* InvertMatrix2 for TMatrix4x4, TMatrix2x2 *)
6262
(* 0.18 CalculatePlumbFootPoint *)
63+
(* 0.19 Convolve *)
6364
(* *)
6465
(******************************************************************************)
6566
Unit uvectormath;
@@ -580,6 +581,14 @@
580581
// Die Koeffizienten von a werden als Vector übergben
581582
Function CalculatePolynom(x: TBaseType; Const a: TVectorN): TBaseType;
582583

584+
// Faltet 2 Vectoren mit einander und gibt das Ergebnis zurück, Achtung,
585+
// hier wird die "ineffiziente" Quadratische Faltung verwendet,
586+
// also die Vectoren lieber nicht zu groß machen!
587+
// Es gibt auch noch die Variante, bei der man zuerst die beiden Vektoren
588+
// durch eine FFT jagt, dann komponentenweise multipliziert und dann wieder
589+
// zurück transformiert, das ist bei Großen Vektoren tatsächlich schneller (siehe hier: https://www.youtube.com/watch?v=KuXjwB4LzSA )
590+
Function Convolve(Const a, b: tvectorN): TVectorN;
591+
583592
Implementation
584593

585594
{$IFDEF UseOperandOverloading}
@@ -3302,6 +3311,21 @@
33023311
End;
33033312
End;
33043313

3314+
Function Convolve(Const a, b: tvectorN): TVectorN;
3315+
Var
3316+
i, j: Integer;
3317+
Begin
3318+
result := Nil;
3319+
setlength(result, length(a) + length(b) - 1);
3320+
For i := 0 To High(Result) Do Begin
3321+
Result[i] := 0;
3322+
For j := 0 To High(a) Do Begin
3323+
If (i - j >= 0) And (i - j <= High(b)) Then
3324+
Result[i] := Result[i] + a[j] * b[i - j];
3325+
End;
3326+
End;
3327+
End;
3328+
33053329
Function CalculateOrthoganlProjection(A, B, M: TVector2): TVector2;
33063330
Var
33073331
d_AB, d_M: TVector2;

miniprojects/Bridge_Builder/ugraphics.pas

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
math // max, min, arctan2
6262
;
6363

64+
Const
65+
AlphaOpaque = 0;
66+
AlphaTranslucent = 255;
67+
6468
Type
6569
TInterpolationMode = (
6670
imNone, // Keine Interpolierung die Koordinaten werden immer auf trunc und dann direkt ausgegen => nur Sinnvoll bei 1:1 Abtastungen da sonst bildfehler entstehen können
@@ -104,7 +108,7 @@
104108
Function RGB(r, g, b: Byte): TRGB;
105109
Function RGBA(R, G, B, A: Byte): TRGBA;
106110
Function ColorToRGB(c: TColor): TRGB;
107-
Function ColorToRGBA(c: TColor; AlphaValue: byte = 0): TRGBA;
111+
Function ColorToRGBA(c: TColor; AlphaValue: byte = AlphaOpaque): TRGBA;
108112
Function RGBToColor(rgb: TRGB): TColor;
109113
Function RGBAToColor(rgba: TRGBA): TColor;
110114
Function FPColorToColor(Const Color: TFPColor): TColor; // Wandelt eine FPColor in TColor um
@@ -531,7 +535,7 @@
531535

532536
Function RGBAtoLuminanz(Value: TRGBA): Byte;
533537
Begin
534-
//Y = 0.3R + 0.59G + 0.11B
538+
//Y = 0.3R + 0.59G + 0.11B
535539
result := min(255, max(0,
536540
round(
537541
value.R * 0.3 +

miniprojects/Bridge_Builder/uvectormath.pas

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(******************************************************************************)
22
(* uvectormat.pas 12.11.2014 *)
33
(* *)
4-
(* Version : 0.18 *)
4+
(* Version : 0.19 *)
55
(* *)
66
(* Author : Uwe Schächterle (Corpsman) *)
77
(* *)
@@ -60,6 +60,7 @@
6060
(* TMatrix3x3.getInverse, TMatrix2x2.getInverse *)
6161
(* InvertMatrix2 for TMatrix4x4, TMatrix2x2 *)
6262
(* 0.18 CalculatePlumbFootPoint *)
63+
(* 0.19 Convolve *)
6364
(* *)
6465
(******************************************************************************)
6566
Unit uvectormath;
@@ -580,6 +581,14 @@
580581
// Die Koeffizienten von a werden als Vector übergben
581582
Function CalculatePolynom(x: TBaseType; Const a: TVectorN): TBaseType;
582583

584+
// Faltet 2 Vectoren mit einander und gibt das Ergebnis zurück, Achtung,
585+
// hier wird die "ineffiziente" Quadratische Faltung verwendet,
586+
// also die Vectoren lieber nicht zu groß machen!
587+
// Es gibt auch noch die Variante, bei der man zuerst die beiden Vektoren
588+
// durch eine FFT jagt, dann komponentenweise multipliziert und dann wieder
589+
// zurück transformiert, das ist bei Großen Vektoren tatsächlich schneller (siehe hier: https://www.youtube.com/watch?v=KuXjwB4LzSA )
590+
Function Convolve(Const a, b: tvectorN): TVectorN;
591+
583592
Implementation
584593

585594
{$IFDEF UseOperandOverloading}
@@ -3302,6 +3311,21 @@
33023311
End;
33033312
End;
33043313

3314+
Function Convolve(Const a, b: tvectorN): TVectorN;
3315+
Var
3316+
i, j: Integer;
3317+
Begin
3318+
result := Nil;
3319+
setlength(result, length(a) + length(b) - 1);
3320+
For i := 0 To High(Result) Do Begin
3321+
Result[i] := 0;
3322+
For j := 0 To High(a) Do Begin
3323+
If (i - j >= 0) And (i - j <= High(b)) Then
3324+
Result[i] := Result[i] + a[j] * b[i - j];
3325+
End;
3326+
End;
3327+
End;
3328+
33053329
Function CalculateOrthoganlProjection(A, B, M: TVector2): TVector2;
33063330
Var
33073331
d_AB, d_M: TVector2;

miniprojects/Clickomania/ugraphics.pas

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
math // max, min, arctan2
6262
;
6363

64+
Const
65+
AlphaOpaque = 0;
66+
AlphaTranslucent = 255;
67+
6468
Type
6569
TInterpolationMode = (
6670
imNone, // Keine Interpolierung die Koordinaten werden immer auf trunc und dann direkt ausgegen => nur Sinnvoll bei 1:1 Abtastungen da sonst bildfehler entstehen können
@@ -104,7 +108,7 @@
104108
Function RGB(r, g, b: Byte): TRGB;
105109
Function RGBA(R, G, B, A: Byte): TRGBA;
106110
Function ColorToRGB(c: TColor): TRGB;
107-
Function ColorToRGBA(c: TColor; AlphaValue: byte = 0): TRGBA;
111+
Function ColorToRGBA(c: TColor; AlphaValue: byte = AlphaOpaque): TRGBA;
108112
Function RGBToColor(rgb: TRGB): TColor;
109113
Function RGBAToColor(rgba: TRGBA): TColor;
110114
Function FPColorToColor(Const Color: TFPColor): TColor; // Wandelt eine FPColor in TColor um
@@ -531,7 +535,7 @@
531535

532536
Function RGBAtoLuminanz(Value: TRGBA): Byte;
533537
Begin
534-
//Y = 0.3R + 0.59G + 0.11B
538+
//Y = 0.3R + 0.59G + 0.11B
535539
result := min(255, max(0,
536540
round(
537541
value.R * 0.3 +

miniprojects/Clickomania/uvectormath.pas

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(******************************************************************************)
22
(* uvectormat.pas 12.11.2014 *)
33
(* *)
4-
(* Version : 0.18 *)
4+
(* Version : 0.19 *)
55
(* *)
66
(* Author : Uwe Schächterle (Corpsman) *)
77
(* *)
@@ -60,6 +60,7 @@
6060
(* TMatrix3x3.getInverse, TMatrix2x2.getInverse *)
6161
(* InvertMatrix2 for TMatrix4x4, TMatrix2x2 *)
6262
(* 0.18 CalculatePlumbFootPoint *)
63+
(* 0.19 Convolve *)
6364
(* *)
6465
(******************************************************************************)
6566
Unit uvectormath;
@@ -580,6 +581,14 @@
580581
// Die Koeffizienten von a werden als Vector übergben
581582
Function CalculatePolynom(x: TBaseType; Const a: TVectorN): TBaseType;
582583

584+
// Faltet 2 Vectoren mit einander und gibt das Ergebnis zurück, Achtung,
585+
// hier wird die "ineffiziente" Quadratische Faltung verwendet,
586+
// also die Vectoren lieber nicht zu groß machen!
587+
// Es gibt auch noch die Variante, bei der man zuerst die beiden Vektoren
588+
// durch eine FFT jagt, dann komponentenweise multipliziert und dann wieder
589+
// zurück transformiert, das ist bei Großen Vektoren tatsächlich schneller (siehe hier: https://www.youtube.com/watch?v=KuXjwB4LzSA )
590+
Function Convolve(Const a, b: tvectorN): TVectorN;
591+
583592
Implementation
584593

585594
{$IFDEF UseOperandOverloading}
@@ -3302,6 +3311,21 @@
33023311
End;
33033312
End;
33043313

3314+
Function Convolve(Const a, b: tvectorN): TVectorN;
3315+
Var
3316+
i, j: Integer;
3317+
Begin
3318+
result := Nil;
3319+
setlength(result, length(a) + length(b) - 1);
3320+
For i := 0 To High(Result) Do Begin
3321+
Result[i] := 0;
3322+
For j := 0 To High(a) Do Begin
3323+
If (i - j >= 0) And (i - j <= High(b)) Then
3324+
Result[i] := Result[i] + a[j] * b[i - j];
3325+
End;
3326+
End;
3327+
End;
3328+
33053329
Function CalculateOrthoganlProjection(A, B, M: TVector2): TVector2;
33063330
Var
33073331
d_AB, d_M: TVector2;

miniprojects/Gorilla/ugraphics.pas

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
math // max, min, arctan2
6262
;
6363

64+
Const
65+
AlphaOpaque = 0;
66+
AlphaTranslucent = 255;
67+
6468
Type
6569
TInterpolationMode = (
6670
imNone, // Keine Interpolierung die Koordinaten werden immer auf trunc und dann direkt ausgegen => nur Sinnvoll bei 1:1 Abtastungen da sonst bildfehler entstehen können
@@ -104,7 +108,7 @@
104108
Function RGB(r, g, b: Byte): TRGB;
105109
Function RGBA(R, G, B, A: Byte): TRGBA;
106110
Function ColorToRGB(c: TColor): TRGB;
107-
Function ColorToRGBA(c: TColor; AlphaValue: byte = 0): TRGBA;
111+
Function ColorToRGBA(c: TColor; AlphaValue: byte = AlphaOpaque): TRGBA;
108112
Function RGBToColor(rgb: TRGB): TColor;
109113
Function RGBAToColor(rgba: TRGBA): TColor;
110114
Function FPColorToColor(Const Color: TFPColor): TColor; // Wandelt eine FPColor in TColor um
@@ -531,7 +535,7 @@
531535

532536
Function RGBAtoLuminanz(Value: TRGBA): Byte;
533537
Begin
534-
//Y = 0.3R + 0.59G + 0.11B
538+
//Y = 0.3R + 0.59G + 0.11B
535539
result := min(255, max(0,
536540
round(
537541
value.R * 0.3 +

miniprojects/Gorilla/uvectormath.pas

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(******************************************************************************)
22
(* uvectormat.pas 12.11.2014 *)
33
(* *)
4-
(* Version : 0.18 *)
4+
(* Version : 0.19 *)
55
(* *)
66
(* Author : Uwe Schächterle (Corpsman) *)
77
(* *)
@@ -60,6 +60,7 @@
6060
(* TMatrix3x3.getInverse, TMatrix2x2.getInverse *)
6161
(* InvertMatrix2 for TMatrix4x4, TMatrix2x2 *)
6262
(* 0.18 CalculatePlumbFootPoint *)
63+
(* 0.19 Convolve *)
6364
(* *)
6465
(******************************************************************************)
6566
Unit uvectormath;
@@ -580,6 +581,14 @@
580581
// Die Koeffizienten von a werden als Vector übergben
581582
Function CalculatePolynom(x: TBaseType; Const a: TVectorN): TBaseType;
582583

584+
// Faltet 2 Vectoren mit einander und gibt das Ergebnis zurück, Achtung,
585+
// hier wird die "ineffiziente" Quadratische Faltung verwendet,
586+
// also die Vectoren lieber nicht zu groß machen!
587+
// Es gibt auch noch die Variante, bei der man zuerst die beiden Vektoren
588+
// durch eine FFT jagt, dann komponentenweise multipliziert und dann wieder
589+
// zurück transformiert, das ist bei Großen Vektoren tatsächlich schneller (siehe hier: https://www.youtube.com/watch?v=KuXjwB4LzSA )
590+
Function Convolve(Const a, b: tvectorN): TVectorN;
591+
583592
Implementation
584593

585594
{$IFDEF UseOperandOverloading}
@@ -3302,6 +3311,21 @@
33023311
End;
33033312
End;
33043313

3314+
Function Convolve(Const a, b: tvectorN): TVectorN;
3315+
Var
3316+
i, j: Integer;
3317+
Begin
3318+
result := Nil;
3319+
setlength(result, length(a) + length(b) - 1);
3320+
For i := 0 To High(Result) Do Begin
3321+
Result[i] := 0;
3322+
For j := 0 To High(a) Do Begin
3323+
If (i - j >= 0) And (i - j <= High(b)) Then
3324+
Result[i] := Result[i] + a[j] * b[i - j];
3325+
End;
3326+
End;
3327+
End;
3328+
33053329
Function CalculateOrthoganlProjection(A, B, M: TVector2): TVector2;
33063330
Var
33073331
d_AB, d_M: TVector2;

miniprojects/Image_Multiplication/ugraphics.pas

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
math // max, min, arctan2
6262
;
6363

64+
Const
65+
AlphaOpaque = 0;
66+
AlphaTranslucent = 255;
67+
6468
Type
6569
TInterpolationMode = (
6670
imNone, // Keine Interpolierung die Koordinaten werden immer auf trunc und dann direkt ausgegen => nur Sinnvoll bei 1:1 Abtastungen da sonst bildfehler entstehen können
@@ -104,7 +108,7 @@
104108
Function RGB(r, g, b: Byte): TRGB;
105109
Function RGBA(R, G, B, A: Byte): TRGBA;
106110
Function ColorToRGB(c: TColor): TRGB;
107-
Function ColorToRGBA(c: TColor; AlphaValue: byte = 0): TRGBA;
111+
Function ColorToRGBA(c: TColor; AlphaValue: byte = AlphaOpaque): TRGBA;
108112
Function RGBToColor(rgb: TRGB): TColor;
109113
Function RGBAToColor(rgba: TRGBA): TColor;
110114
Function FPColorToColor(Const Color: TFPColor): TColor; // Wandelt eine FPColor in TColor um
@@ -531,7 +535,7 @@
531535

532536
Function RGBAtoLuminanz(Value: TRGBA): Byte;
533537
Begin
534-
//Y = 0.3R + 0.59G + 0.11B
538+
//Y = 0.3R + 0.59G + 0.11B
535539
result := min(255, max(0,
536540
round(
537541
value.R * 0.3 +

0 commit comments

Comments
 (0)