Skip to content

Commit

Permalink
add extra operators and multiply/multiplied method to Vector3D
Browse files Browse the repository at this point in the history
  • Loading branch information
benkuper committed Oct 28, 2024
1 parent ed80adb commit 9bc7227
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions modules/juce_opengl/geometry/juce_Vector3D.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,27 @@ class Vector3D
/** Returns a vector that lies along the Z axis. */
static Vector3D zAxis() noexcept { return { 0, 0, (Type) 1 }; }

Vector3D& operator+= (Vector3D other) noexcept { x += other.x; y += other.y; z += other.z; return *this; }
Vector3D& operator-= (Vector3D other) noexcept { x -= other.x; y -= other.y; z -= other.z; return *this; }
Vector3D& operator+= (Type value) noexcept { x += value; y += value; z += value; return *this; }
Vector3D& operator-= (Type value) noexcept { x -= value; y -= value; z -= scaleFactor; return *this; }
Vector3D& operator*= (Type scaleFactor) noexcept { x *= scaleFactor; y *= scaleFactor; z *= scaleFactor; return *this; }
Vector3D& operator/= (Type scaleFactor) noexcept { x /= scaleFactor; y /= scaleFactor; z /= scaleFactor; return *this; }
Vector3D& operator+= (Vector3D other) noexcept { x += other.x; y += other.y; z += other.z; return *this; }
Vector3D& operator-= (Vector3D other) noexcept { x -= other.x; y -= other.y; z -= other.z; return *this; }
Vector3D& operator/= (Vector3D other) noexcept { x /= other.x; y /= other.y; z /= other.z; return *this; }

Vector3D operator+ (Vector3D other) const noexcept { return { x + other.x, y + other.y, z + other.z }; }
Vector3D operator- (Vector3D other) const noexcept { return { x - other.x, y - other.y, z - other.z }; }
Vector3D operator+ (Type value) const noexcept { return { x + value, y + value, z + value }; }
Vector3D operator- (Type value) const noexcept { return { x - value, y - value, z - value }; }
Vector3D operator* (Type scaleFactor) const noexcept { return { x * scaleFactor, y * scaleFactor, z * scaleFactor }; }
Vector3D operator/ (Type scaleFactor) const noexcept { return { x / scaleFactor, y / scaleFactor, z / scaleFactor }; }
Vector3D operator+ (Vector3D other) const noexcept { return { x + other.x, y + other.y, z + other.z }; }
Vector3D operator- (Vector3D other) const noexcept { return { x - other.x, y - other.y, z - other.z }; }
Vector3D operator/ (Vector3D other) const noexcept { return { x / other.x, y / other.y, z / other.z }; }
Vector3D operator-() const noexcept { return { -x, -y, -z }; }


Vector3D multiplied (Vector3D other) const noexcept { return { x * other.x, y * other.y, z * other.z }; }
void multiply(Vector3D other) const noexcept { x *= other.x; y *= other.y; z *= other.z }

/** Returns the dot-product of these two vectors. */
Type operator* (Vector3D other) const noexcept { return x * other.x + y * other.y + z * other.z; }

Expand Down

0 comments on commit 9bc7227

Please sign in to comment.