From 20d341227dec437679c1821814ccc772030ecb6e Mon Sep 17 00:00:00 2001 From: Kearwood Kip Gilbert Date: Wed, 28 Mar 2018 12:59:33 -0700 Subject: [PATCH] Added min(vector, vector) and max(vector,vector) functions --- include/vector2.h | 3 ++- include/vector2i.h | 4 +++- include/vector3.h | 4 +++- include/vector4.h | 3 +++ src/vector2.cpp | 9 +++++++++ src/vector2i.cpp | 9 +++++++++ src/vector3.cpp | 9 +++++++++ src/vector4.cpp | 9 +++++++++ 8 files changed, 47 insertions(+), 3 deletions(-) diff --git a/include/vector2.h b/include/vector2.h index e12e7a9..ce2be47 100644 --- a/include/vector2.h +++ b/include/vector2.h @@ -94,8 +94,9 @@ public: static Vector2 Normalize(const Vector2 &v); static float Cross(const Vector2 &v1, const Vector2 &v2); - static float Dot(const Vector2 &v1, const Vector2 &v2); + static Vector2 Min(const Vector2 &v1, const Vector2 &v2); + static Vector2 Max(const Vector2 &v1, const Vector2 &v2); static Vector2 Min(); static Vector2 Max(); static Vector2 Zero(); diff --git a/include/vector2i.h b/include/vector2i.h index 12882a9..4e9a3db 100644 --- a/include/vector2i.h +++ b/include/vector2i.h @@ -95,8 +95,10 @@ public: static Vector2i Normalize(const Vector2i &v); static int Cross(const Vector2i &v1, const Vector2i &v2); - static int Dot(const Vector2i &v1, const Vector2i &v2); + static Vector2i Min(const Vector2i &v1, const Vector2i &v2); + static Vector2i Max(const Vector2i &v1, const Vector2i &v2); + static Vector2i Min(); static Vector2i Max(); static Vector2i Zero(); diff --git a/include/vector3.h b/include/vector3.h index d4a4c97..27d0797 100644 --- a/include/vector3.h +++ b/include/vector3.h @@ -115,8 +115,10 @@ public: static Vector3 Normalize(const Vector3 &v); static Vector3 Cross(const Vector3 &v1, const Vector3 &v2); - static float Dot(const Vector3 &v1, const Vector3 &v2); + static Vector3 Min(const Vector3 &v1, const Vector3 &v2); + static Vector3 Max(const Vector3 &v1, const Vector3 &v2); + static Vector3 Min(); static Vector3 Max(); static Vector3 Zero(); diff --git a/include/vector4.h b/include/vector4.h index b65e551..acf820f 100644 --- a/include/vector4.h +++ b/include/vector4.h @@ -90,6 +90,9 @@ public: static Vector4 Normalize(const Vector4 &v); static float Dot(const Vector4 &v1, const Vector4 &v2); + static Vector4 Min(const Vector4 &v1, const Vector4 &v2); + static Vector4 Max(const Vector4 &v1, const Vector4 &v2); + static Vector4 Min(); static Vector4 Max(); static Vector4 Zero(); diff --git a/src/vector2.cpp b/src/vector2.cpp index 6839d9d..ac5f7ef 100644 --- a/src/vector2.cpp +++ b/src/vector2.cpp @@ -30,6 +30,7 @@ // #include "../include/kraken-math.h" +#include "krhelpers.h" namespace kraken { @@ -259,4 +260,12 @@ float Vector2::Dot(const Vector2 &v1, const Vector2 &v2) { return v1.x * v2.x + v1.y * v2.y; } +Vector2 Vector2::Min(const Vector2 &v1, const Vector2 &v2) { + return Vector2::Create(KRMIN(v1.x, v2.x), KRMIN(v1.y, v2.y)); +} + +Vector2 Vector2::Max(const Vector2 &v1, const Vector2 &v2) { + return Vector2::Create(KRMAX(v1.x, v2.x), KRMAX(v1.y, v2.y)); +} + } // namepsace kraken diff --git a/src/vector2i.cpp b/src/vector2i.cpp index 244da22..23da6a5 100644 --- a/src/vector2i.cpp +++ b/src/vector2i.cpp @@ -30,6 +30,7 @@ // #include "../include/kraken-math.h" +#include "krhelpers.h" namespace kraken { @@ -253,4 +254,12 @@ int Vector2i::Dot(const Vector2i &v1, const Vector2i &v2) { return v1.x * v2.x + v1.y * v2.y; } +Vector2i Vector2i::Min(const Vector2i &v1, const Vector2i &v2) { + return Vector2i::Create(KRMIN(v1.x, v2.x), KRMIN(v1.y, v2.y)); +} + +Vector2i Vector2i::Max(const Vector2i &v1, const Vector2i &v2) { + return Vector2i::Create(KRMAX(v1.x, v2.x), KRMAX(v1.y, v2.y)); +} + } // namepsace kraken diff --git a/src/vector3.cpp b/src/vector3.cpp index 3ce7dee..899e730 100644 --- a/src/vector3.cpp +++ b/src/vector3.cpp @@ -30,6 +30,7 @@ // #include "../include/kraken-math.h" +#include "krhelpers.h" namespace kraken { @@ -416,6 +417,14 @@ float Vector3::Dot(const Vector3 &v1, const Vector3 &v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; } +Vector3 Vector3::Min(const Vector3 &v1, const Vector3 &v2) { + return Vector3::Create(KRMIN(v1.x, v2.x), KRMIN(v1.y, v2.y), KRMIN(v1.z, v2.z)); +} + +Vector3 Vector3::Max(const Vector3 &v1, const Vector3 &v2) { + return Vector3::Create(KRMAX(v1.x, v2.x), KRMAX(v1.y, v2.y), KRMAX(v1.z, v2.z)); +} + bool Vector3::operator >(const Vector3& b) const { // Comparison operators are implemented to allow insertion into sorted containers such as std::set diff --git a/src/vector4.cpp b/src/vector4.cpp index b644bd0..4aa8514 100644 --- a/src/vector4.cpp +++ b/src/vector4.cpp @@ -30,6 +30,7 @@ // #include "../include/kraken-math.h" +#include "krhelpers.h" namespace kraken { @@ -312,6 +313,14 @@ float Vector4::Dot(const Vector4 &v1, const Vector4 &v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w; } +Vector4 Vector4::Min(const Vector4 &v1, const Vector4 &v2) { + return Vector4::Create(KRMIN(v1.x, v2.x), KRMIN(v1.y, v2.y), KRMIN(v1.z, v2.z), KRMIN(v1.w, v2.w)); +} + +Vector4 Vector4::Max(const Vector4 &v1, const Vector4 &v2) { + return Vector4::Create(KRMAX(v1.x, v2.x), KRMAX(v1.y, v2.y), KRMAX(v1.z, v2.z), KRMAX(v1.w, v2.w)); +} + bool Vector4::operator >(const Vector4& b) const { // Comparison operators are implemented to allow insertion into sorted containers such as std::set