From 0631fb666d2a28a6eb9b8d1578675699b41a5de6 Mon Sep 17 00:00:00 2001 From: Mel Date: Tue, 4 Oct 2022 01:18:19 +0200 Subject: Cube Rendering --- src/Math/Vector.hpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/Math/Vector.hpp') diff --git a/src/Math/Vector.hpp b/src/Math/Vector.hpp index 0145b58..2e97217 100644 --- a/src/Math/Vector.hpp +++ b/src/Math/Vector.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include #include @@ -17,10 +17,35 @@ public: std::copy(values, values + S, elements); }; + Vector(Vector vector, T scalar) { + std::copy(vector.elements, vector.elements + S - 1, elements); + elements[S - 1] = scalar; + } + + Vector apply(T f(T)) { + return apply(static_cast>(f)); + } + + Vector apply(std::function f) { + Vector result{}; + for (int i = 0; i < S; i++) { + result[i] = f(elements[i]); + } + return result; + } + T& operator[](size_t index) { return elements[index]; } + Vector operator+(Vector other) const { + Vector result{}; + for (int i = 0; i < S; i++) { + result[i] = elements[i] + other[i]; + } + return result; + } + Vector operator*(T scalar) const { Vector result; for (size_t index; index < S; index++) { @@ -57,7 +82,7 @@ public: return elements[3]; } - std::string string() { + std::string string() const { std::stringstream str{}; str << "[ "; -- cgit 1.4.1