DryPhys 1.0.0
...
Loading...
Searching...
No Matches
DryPhys::Vector3D Class Reference

#include <vector3d.hpp>

Inheritance diagram for DryPhys::Vector3D:

Public Member Functions

DRYPHYS_CONSTEXPR Vector3D () noexcept=default
 Constructors.
 
DRYPHYS_CONSTEXPR Vector3D (const real x, const real y, const real z) noexcept
 
DRYPHYS_CONSTEXPR real & operator[] (unsigned i)
 Element access.
 
DRYPHYS_CONSTEXPR const real & operator[] (unsigned i) const
 
DRYPHYS_CONSTEXPR void operator+= (const Vector3D &rhs)
 Arithmetic Operators.
 
DRYPHYS_CONSTEXPR Vector3D operator+ (const Vector3D &rhs) const
 
DRYPHYS_CONSTEXPR void operator-= (const Vector3D &rhs)
 
DRYPHYS_CONSTEXPR Vector3D operator- (const Vector3D &rhs) const
 
DRYPHYS_CONSTEXPR void operator*= (real rhs)
 
DRYPHYS_CONSTEXPR Vector3D operator* (real rhs) const
 
DRYPHYS_CONSTEXPR void operator/= (real rhs)
 
DRYPHYS_CONSTEXPR Vector3D operator/ (real rhs) const
 
DRYPHYS_CONSTEXPR void operator*= (const Vector3D &rhs)
 We use operator*= for the component product.
 
DRYPHYS_CONSTEXPR Vector3D operator* (const Vector3D &rhs) const
 We use operator* for the component product.
 
DRYPHYS_CONSTEXPR real dot (const Vector3D &rhs) const
 
DRYPHYS_CONSTEXPR Vector3D cross (const Vector3D &rhs) const
 
DRYPHYS_CONSTEXPR void invert ()
 
DRYPHYS_CONSTEXPR real magnitudeSquared () const
 
real magnitude () const
 
void normalize ()
 

Private Attributes

real x {}
 
real y {}
 
real z {}
 

Friends

DRYPHYS_CONSTEXPR friend bool operator== (const Vector3D &lhs_, const Vector3D &rhs_)
 Comparison operators - only the equality operator is symmetric.
 
DRYPHYS_CONSTEXPR friend bool operator< (const Vector3D &lhs_, const Vector3D &rhs_)
 
DRYPHYS_CONSTEXPR friend bool operator> (const Vector3D &lhs_, const Vector3D &rhs_)
 
DRYPHYS_CONSTEXPR friend bool operator<= (const Vector3D &lhs_, const Vector3D &rhs_)
 
DRYPHYS_CONSTEXPR friend bool operator>= (const Vector3D &lhs_, const Vector3D &rhs_)
 

Detailed Description

A class representing a mathematical/physical vector with three dimensions: x, y, z. The type is defined using the tuple-like API so it can be used with structured bindings.

Note
Enabling phys_four_word_alignment when building adds an additional, unused variable which makes use of four-word alignment. This is off by default.

Constructor & Destructor Documentation

◆ Vector3D() [1/2]

DRYPHYS_CONSTEXPR DryPhys::Vector3D::Vector3D ( )
defaultnoexcept

◆ Vector3D() [2/2]

DRYPHYS_CONSTEXPR DryPhys::Vector3D::Vector3D ( const real x,
const real y,
const real z )
inlinenoexcept

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

Member Function Documentation

◆ operator[]() [1/2]

DRYPHYS_CONSTEXPR real & DryPhys::Vector3D::operator[] ( unsigned i)
inline

References x.

◆ operator[]() [2/2]

DRYPHYS_CONSTEXPR const real & DryPhys::Vector3D::operator[] ( unsigned i) const
inline

References x.

◆ operator+=()

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::operator+= ( const Vector3D & rhs)
inline

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

◆ operator+()

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::operator+ ( const Vector3D & rhs) const
inline

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

◆ operator-=()

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::operator-= ( const Vector3D & rhs)
inline

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

◆ operator-()

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::operator- ( const Vector3D & rhs) const
inline

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

◆ operator*=() [1/2]

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::operator*= ( real rhs)
inline

References x, y, and z.

◆ operator*() [1/2]

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::operator* ( real rhs) const
inline

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

◆ operator/=()

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::operator/= ( real rhs)
inline

References x, y, and z.

◆ operator/()

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::operator/ ( real rhs) const
inline

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

◆ operator*=() [2/2]

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::operator*= ( const Vector3D & rhs)
inline

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

◆ operator*() [2/2]

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::operator* ( const Vector3D & rhs) const
inline

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

◆ dot()

DRYPHYS_CONSTEXPR real DryPhys::Vector3D::dot ( const Vector3D & rhs) const
inline

Calculates the dot (scalar) product of the two vectors.

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

◆ cross()

DRYPHYS_CONSTEXPR Vector3D DryPhys::Vector3D::cross ( const Vector3D & rhs) const
inline

Calculates the cross (vector) product of the two vectors.

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

◆ invert()

DRYPHYS_CONSTEXPR void DryPhys::Vector3D::invert ( )
inline

Flips all the components of the vector

References x, y, and z.

Referenced by GTEST_TEST().

◆ magnitudeSquared()

DRYPHYS_CONSTEXPR real DryPhys::Vector3D::magnitudeSquared ( ) const
inline

Calculates the magnitude of this vector squared to avoid a square root call

References x, y, and z.

◆ magnitude()

real DryPhys::Vector3D::magnitude ( ) const
inline

Calculates the magnitude of this vector

References x, y, and z.

Referenced by GTEST_TEST(), and normalize().

◆ normalize()

void DryPhys::Vector3D::normalize ( )
inline

Turns a non-zero vector into a vector of unit length

References magnitude().

Referenced by GTEST_TEST().

Friends And Related Symbol Documentation

◆ operator==

DRYPHYS_CONSTEXPR friend bool operator== ( const Vector3D & lhs_,
const Vector3D & rhs_ )
friend

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

◆ operator<

DRYPHYS_CONSTEXPR friend bool operator< ( const Vector3D & lhs_,
const Vector3D & rhs_ )
friend

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

◆ operator>

DRYPHYS_CONSTEXPR friend bool operator> ( const Vector3D & lhs_,
const Vector3D & rhs_ )
friend

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

◆ operator<=

DRYPHYS_CONSTEXPR friend bool operator<= ( const Vector3D & lhs_,
const Vector3D & rhs_ )
friend

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

◆ operator>=

DRYPHYS_CONSTEXPR friend bool operator>= ( const Vector3D & lhs_,
const Vector3D & rhs_ )
friend

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

Member Data Documentation

◆ x

◆ y

◆ z


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