30 #ifndef MCL_3DL_VEC3_H 31 #define MCL_3DL_VEC3_H 43 inline constexpr
Vec3(
const float x,
const float y,
const float z)
93 return x_ == q.
x_ && y_ == q.
y_ && z_ == q.
z_;
109 return Vec3(-x_, -y_, -z_);
113 return Vec3(x_ * s, y_ * s, z_ * s);
117 return Vec3(x_ / s, y_ / s, z_ / s);
139 inline constexpr
float dot(
const Vec3& q)
const 141 return x_ * q.
x_ + y_ * q.
y_ + z_ * q.
z_;
146 z_ * q.
x_ - x_ * q.
z_,
147 x_ * q.
y_ - y_ * q.
x_);
155 return std::sqrt(
dot(*
this));
159 return *
this /
norm();
164 #endif // MCL_3DL_VEC3_H
Vec3 & operator+=(const Vec3 &q)
constexpr float dot(const Vec3 &q) const
constexpr Vec3 operator*(const float s) const
constexpr bool operator!=(const Vec3 &q) const
Vec3 & operator*=(const float &s)
float operator[](const size_t i) const
constexpr Vec3 operator-(const Vec3 &q) const
constexpr Vec3(const float x, const float y, const float z)
constexpr Vec3 times(const Vec3 &q) const
float & operator[](const size_t i)
constexpr Vec3 operator/(const float s) const
constexpr Vec3 cross(const Vec3 &q) const
Vec3 & operator-=(const Vec3 &q)
Vec3 & operator/=(const float &s)
constexpr bool operator==(const Vec3 &q) const
constexpr Vec3 operator-() const
constexpr Vec3 operator+(const Vec3 &q) const