From e655ee6b78b7a635983a72d0b9c4cb63511bcfa5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Wed, 18 Aug 2021 12:49:12 +0200 Subject: [PATCH] Tweaks Double2 --- Source/Engine/Core/Math/Double2.cpp | 26 ++++++++++++++++++++------ Source/Engine/Core/Math/Double2.h | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/Source/Engine/Core/Math/Double2.cpp b/Source/Engine/Core/Math/Double2.cpp index 4aa16249f..48534cc7d 100644 --- a/Source/Engine/Core/Math/Double2.cpp +++ b/Source/Engine/Core/Math/Double2.cpp @@ -1,6 +1,8 @@ // Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. #include "Double2.h" +#include "Double3.h" +#include "Double4.h" #include "Vector2.h" #include "Vector3.h" #include "Vector4.h" @@ -12,10 +14,10 @@ static_assert(sizeof(Double2) == 16, "Invalid Double2 type size."); -const Double2 Double2::Zero(0); -const Double2 Double2::One(1); -const Double2 Double2::UnitX(1, 0); -const Double2 Double2::UnitY(0, 1); +const Double2 Double2::Zero(0.0); +const Double2 Double2::One(1.0); +const Double2 Double2::UnitX(1.0, 0.0); +const Double2 Double2::UnitY(0.0, 1.0); const Double2 Double2::Minimum(MIN_double); const Double2 Double2::Maximum(MAX_double); @@ -55,6 +57,18 @@ Double2::Double2(const Vector4& xyzw) { } +Double2::Double2(const Double3& xyz) + : X(xyz.X) + , Y(xyz.Y) +{ +} + +Double2::Double2(const Double4& xyzw) + : X(xyzw.X) + , Y(xyzw.Y) +{ +} + Double2::Double2(const Color& color) : X(color.R) , Y(color.G) @@ -81,12 +95,12 @@ Double2 Double2::Normalize(const Double2& v) Int2 Double2::CeilToInt(const Double2& v) { - return Int2(Math::CeilToInt(v.X), Math::CeilToInt(v.Y)); + return Int2((int32)Math::CeilToInt(v.X), (int32)Math::CeilToInt(v.Y)); } Int2 Double2::FloorToInt(const Double2& v) { - return Int2(Math::FloorToInt(v.X), Math::FloorToInt(v.Y)); + return Int2((int32)Math::FloorToInt(v.X), (int32)Math::FloorToInt(v.Y)); } double Double2::TriangleArea(const Double2& v0, const Double2& v1, const Double2& v2) diff --git a/Source/Engine/Core/Math/Double2.h b/Source/Engine/Core/Math/Double2.h index a01e44fcb..e1ee3ef46 100644 --- a/Source/Engine/Core/Math/Double2.h +++ b/Source/Engine/Core/Math/Double2.h @@ -7,6 +7,8 @@ #include "Engine/Core/Formatting.h" #include "Engine/Core/Templates.h" +struct Double3; +struct Double4; struct Vector2; struct Vector3; struct Vector4; @@ -89,6 +91,16 @@ public: { } + /// + /// Init + /// + /// X and Z components in an array + explicit Double2(double xy[2]) + : X(xy[0]) + , Y(xy[1]) + { + } + // Init // @param v Int2 to use X and Y components explicit Double2(const Int2& xy); @@ -113,6 +125,14 @@ public: // @param v Vector4 to use X and Y components explicit Double2(const Vector4& xyzw); + // Init + // @param v Double3 to use X and Y components + explicit Double2(const Double3& xyz); + + // Init + // @param v Double4 to use X and Y components + explicit Double2(const Double4& xyzw); + // Init // @param color Color value explicit Double2(const Color& color);