VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
visutwin::canvas::Vector3 Struct Reference

3D vector for positions, directions, and normals with multi-backend SIMD acceleration. More...

#include <core/math/vector3.h>

Public Member Functions

Vector3 cross (const Vector3 &other) const
float distance (const Vector3 &other) const
float dot (const Vector3 &other) const
float getX () const
float getY () const
float getZ () const
float length () const
float lengthSquared () const
Vector3 normalized () const
Vector3 operator* (const Vector3 &other) const
Vector3 operator* (float scalar) const
Vector3 operator+ (const Vector3 &other) const
Vector3operator+= (const Vector3 &rhs)
Vector3 operator- () const
Vector3 operator- (const Vector3 &other) const
Vector3operator-= (const Vector3 &rhs)
void print () const
Matrix4 toScalingMatrix () const
Matrix4 toTranslationMatrix () const
Vector3 transform (const Matrix4 &mat) const
Vector3 transformNormal (const Matrix4 &mat) const
 Vector3 ()
 Vector3 (const float s)
 Vector3 (const float x, const float y, const float z)
 Vector3 (const PackedVector3f &packed)
 Vector3 (const Vector4 &other)

Public Attributes

union { 
   struct { 
      float   x 
      float   y 
      float   z 
   } 
   float   v [3] 
}; 

Static Public Attributes

static Vector3 UNIT_X
static Vector3 UNIT_Y
static Vector3 UNIT_Z

Detailed Description

3D vector for positions, directions, and normals with multi-backend SIMD acceleration.

Vector3 uses a 16-byte aligned union supporting scalar, SSE, Apple SIMD, and NEON backends. The active backend is controlled by USE_SIMD_MATH / USE_SIMD_PREFER_NEON defines (currently scalar fallback is active).

Definition at line 28 of file vector3.h.

Constructor & Destructor Documentation

◆ Vector3() [1/5]

visutwin::canvas::Vector3::Vector3 ( )
inline

◆ Vector3() [2/5]

visutwin::canvas::Vector3::Vector3 ( const float s)
inlineexplicit

Definition at line 64 of file vector3.h.

References x, y, and z.

◆ Vector3() [3/5]

visutwin::canvas::Vector3::Vector3 ( const float x,
const float y,
const float z )
inline

Definition at line 77 of file vector3.h.

References v, x, y, and z.

◆ Vector3() [4/5]

visutwin::canvas::Vector3::Vector3 ( const Vector4 & other)

◆ Vector3() [5/5]

visutwin::canvas::Vector3::Vector3 ( const PackedVector3f & packed)
inlineexplicit

Definition at line 107 of file vector3.h.

References x, y, and z.

Member Function Documentation

◆ cross()

Vector3 visutwin::canvas::Vector3::cross ( const Vector3 & other) const
nodiscard

◆ distance()

float visutwin::canvas::Vector3::distance ( const Vector3 & other) const
inlinenodiscard

Definition at line 242 of file vector3.h.

References Vector3().

Referenced by visutwin::canvas::Pose::look().

◆ dot()

◆ getX()

◆ getY()

◆ getZ()

◆ length()

float visutwin::canvas::Vector3::length ( ) const
inlinenodiscard

◆ lengthSquared()

◆ normalized()

◆ operator*() [1/2]

Vector3 visutwin::canvas::Vector3::operator* ( const Vector3 & other) const

References Vector3().

◆ operator*() [2/2]

Vector3 visutwin::canvas::Vector3::operator* ( float scalar) const

References Vector3().

◆ operator+()

Vector3 visutwin::canvas::Vector3::operator+ ( const Vector3 & other) const
inline

Definition at line 158 of file vector3.h.

References Vector3(), x, y, and z.

◆ operator+=()

Vector3 & visutwin::canvas::Vector3::operator+= ( const Vector3 & rhs)
inline

Definition at line 171 of file vector3.h.

References Vector3(), x, y, and z.

◆ operator-() [1/2]

Vector3 visutwin::canvas::Vector3::operator- ( ) const

References Vector3().

◆ operator-() [2/2]

Vector3 visutwin::canvas::Vector3::operator- ( const Vector3 & other) const
inline

Definition at line 187 of file vector3.h.

References Vector3(), x, y, and z.

◆ operator-=()

Vector3 & visutwin::canvas::Vector3::operator-= ( const Vector3 & rhs)
inline

Definition at line 200 of file vector3.h.

References Vector3(), x, y, and z.

◆ print()

void visutwin::canvas::Vector3::print ( ) const
inline

Definition at line 253 of file vector3.h.

References getX(), getY(), getZ(), x, y, and z.

◆ toScalingMatrix()

Matrix4 visutwin::canvas::Vector3::toScalingMatrix ( ) const
nodiscard

◆ toTranslationMatrix()

Matrix4 visutwin::canvas::Vector3::toTranslationMatrix ( ) const
nodiscard

◆ transform()

Vector3 visutwin::canvas::Vector3::transform ( const Matrix4 & mat) const
nodiscard

References Vector3().

◆ transformNormal()

Vector3 visutwin::canvas::Vector3::transformNormal ( const Matrix4 & mat) const
nodiscard

Member Data Documentation

◆ [union]

◆ UNIT_X

Vector3 visutwin::canvas::Vector3::UNIT_X
static

Definition at line 47 of file vector3.h.

◆ UNIT_Y

Vector3 visutwin::canvas::Vector3::UNIT_Y
static

Definition at line 48 of file vector3.h.

◆ UNIT_Z

Vector3 visutwin::canvas::Vector3::UNIT_Z
static

Definition at line 49 of file vector3.h.

◆ v

float visutwin::canvas::Vector3::v[3]

Definition at line 43 of file vector3.h.

Referenced by Vector3().

◆ x

float visutwin::canvas::Vector3::x

◆ y

float visutwin::canvas::Vector3::y

◆ z

float visutwin::canvas::Vector3::z

The documentation for this struct was generated from the following file: