10#ifndef M5_UNIT_IMU_MATH_VECTOR3_HPP
11#define M5_UNIT_IMU_MATH_VECTOR3_HPP
32 constexpr Vector3(
const float x_,
const float y_,
const float z_) :
x(x_),
y(y_),
z(z_)
49 return Vector3(
x * scalar,
y * scalar,
z * scalar);
54 return x * rhs.
x +
y * rhs.
y +
z * rhs.
z;
64 return std::sqrt(
x *
x +
y *
y +
z *
z);
72 const float n =
norm();
76 const float inv = 1.0f / n;
Top level namespace of M5Stack.
Definition ahrs_controller.cpp:26
Plain 3D vector (float)
Definition vector3.hpp:25
Vector3 operator-(const Vector3 &rhs) const
Component-wise subtraction.
Definition vector3.hpp:42
float dot(const Vector3 &rhs) const
Dot product.
Definition vector3.hpp:52
constexpr Vector3(const float x_, const float y_, const float z_)
Construct from components.
Definition vector3.hpp:32
Vector3 normalized() const
Return a normalized copy (zero vector maps to zero vector)
Definition vector3.hpp:83
Vector3 operator+(const Vector3 &rhs) const
Component-wise addition.
Definition vector3.hpp:37
Vector3 cross(const Vector3 &rhs) const
Cross product (right-handed)
Definition vector3.hpp:57
Vector3 operator*(const float scalar) const
Scalar multiplication.
Definition vector3.hpp:47
bool normalize()
Normalize this vector in place.
Definition vector3.hpp:70
float z
Z component.
Definition vector3.hpp:28
float norm() const
Euclidean norm (magnitude)
Definition vector3.hpp:62
float x
X component.
Definition vector3.hpp:26
float y
Y component.
Definition vector3.hpp:27
constexpr float VECTOR3_ZERO_EPSILON
Vectors shorter than this are treated as zero length (normalize safety)
Definition vector3.hpp:19