mirror of
https://github.com/thunderbrewhq/typhoon.git
synced 2025-12-12 10:32:29 +00:00
43 lines
1,013 B
C++
43 lines
1,013 B
C++
#include "tempest/vector/C3Vector.hpp"
|
|
#include "tempest/Math.hpp"
|
|
#include "tempest/Matrix.hpp"
|
|
|
|
C3Vector& C3Vector::operator*=(float a) {
|
|
this->x *= a;
|
|
this->y *= a;
|
|
this->z *= a;
|
|
|
|
return *this;
|
|
}
|
|
|
|
float C3Vector::Mag() const {
|
|
return CMath::sqrt(this->SquaredMag());
|
|
}
|
|
|
|
void C3Vector::Normalize() {
|
|
this->operator*=(1.0f / this->Mag());
|
|
}
|
|
|
|
float C3Vector::SquaredMag() const {
|
|
return this->x * this->x + this->y * this->y + this->z * this->z;
|
|
}
|
|
|
|
C3Vector operator+(const C3Vector& l, const C3Vector& r) {
|
|
float x = l.x + r.x;
|
|
float y = l.y + r.y;
|
|
float z = l.z + r.z;
|
|
|
|
return { x, y, z };
|
|
}
|
|
|
|
C3Vector operator*(const C3Vector& l, const C44Matrix& r) {
|
|
float x = r.c0 * l.z + r.b0 * l.y + r.a0 * l.x + r.d0;
|
|
float y = r.c1 * l.z + r.b1 * l.y + r.a1 * l.x + r.d1;
|
|
float z = r.c2 * l.z + r.b2 * l.y + r.a2 * l.x + r.d2;
|
|
|
|
return { x, y, z };
|
|
}
|
|
|
|
bool operator!=(const C3Vector& l, const C3Vector& r) {
|
|
return l.x != r.x || l.y != r.y || l.z != r.z;
|
|
}
|