sta-peak/src/quaternion.cpp
2024-12-11 20:08:27 +01:00

58 lines
1004 B
C++

/*
* quaternion.cpp
*
* Created on: Jun 17, 2024
* Author: Dario
*/
#include <sta/math/quaternion.hpp>
#include <math.h>
namespace sta
{
namespace math
{
Quaternion::Quaternion(float w, float x, float y, float z)
: x{x}, y{y}, z{z}, w{w}
{
}
Quaternion::Quaternion()
: x{0}, y{0}, z{0}, w{1}
{
}
Quaternion Quaternion::unit()
{
return Quaternion();
}
float Quaternion::norm()
{
return sqrtf(x*x + y*y + z*z + w*w);
}
Quaternion Quaternion::normalized()
{
float n = norm();
return Quaternion(w / n, x / n, y / n, z / n);
}
Quaternion Quaternion::operator+(const Quaternion& quat)
{
return Quaternion(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
}
Quaternion Quaternion::operator*(float scalar)
{
return Quaternion(x * scalar, y * scalar, z * scalar, w * scalar);
}
} // namespace math
} // namespace sta