Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cVector3f Class Reference

#include <cVector.h>

Inheritance diagram for GrayLib::cVector3f:
GrayLib::cVecT3< DVALUEDEF_t > GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >

Public Member Functions

 cVector3f () noexcept
 
 cVector3f (const SUPER_t &v) noexcept
 
 cVector3f (DVALUE_t _x, DVALUE_t _y, DVALUE_t _z) noexcept
 
DVALUE_t GetMinAxis (const THIS_t &v2, DVALUE_t fDistMin=k_FLT_MIN2) const
 
bool IsNearHeight (const THIS_t &v2, DVALUE_t fDist=k_FLT_MIN2) const
 
bool IsNearXZ (const THIS_t &v2, DVALUE_t fDist=k_FLT_MIN2) const
 
DVALUE_t GetDistXZ (const THIS_t &v2) const
 
THIS_t GetProj (const cMatrix4x4f &M) const
 
THIS_t GetProj2 (const cMatrix4x4f &M) const
 
THIS_t GetTransNorm (const cMatrix4x4f &M) const
 
THIS_t GetTransNorm2 (const cMatrix4x4f &M) const
 
THIS_t GetVectorToTarget (const cVector3f &vTarget) const
 
DVALUE_t GetDistSeg (const THIS_t &v1, const THIS_t &v2) const
 
RADIANf_t GetEulerHeading (const THIS_t &v2) const
 
void SetMin ()
 
void SetMax ()
 
void SetEulerWrapSigned ()
 
 UNITTEST2_PREDEF (cVector)
 
- Public Member Functions inherited from GrayLib::cVecT3< DVALUEDEF_t >
 cVecT3 () noexcept
 
 cVecT3 (const SUPER_t &v) noexcept
 
 cVecT3 (const DVALUEDEF_t *pVals) noexcept
 
 cVecT3 (DVALUEDEF_t n0, DVALUEDEF_t n1, DVALUEDEF_t n2=0) noexcept
 
DVALUEDEF_t get_X () const noexcept
 
DVALUEDEF_t get_Y () const noexcept
 
DVALUEDEF_t get_Z () const noexcept
 
const cVecT2< DVALUEDEF_t > & get_V2 () const noexcept
 
bool IsSame2D (const THIS_t &pt) const noexcept
 
DVALUEDEF_t GetDist2DSq (DVALUEDEF_t nX, DVALUEDEF_t nY) const
 
DVALUEDEF_t GetDist2DSq (const THIS_t &pt) const
 
DVALUEDEF_t GetDist2D (const THIS_t &pt) const
 
void InitCross (const THIS_t &rA, const THIS_t &rB)
 
THIS_t GetCross (const THIS_t &rB) const
 
void SetCross (const THIS_t &v2)
 
- Public Member Functions inherited from GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >
DVALUEDEF_tget_T () noexcept
 
const DVALUEDEF_tget_CT () const noexcept
 
const cVecT3< DVALUEDEF_t > & get_CR () const noexcept
 
 operator const DVALUEDEF_t * () const noexcept
 
DVALUEDEF_t GetElem (int i) const noexcept
 
DVALUEDEF_t operator[] (int i) const noexcept
 
DVALUEDEF_toperator[] (int i)
 
bool isZero () const noexcept
 
COMPARE_t Compare (const THIS_t &v2) const noexcept
 
bool operator== (const THIS_t &v2) const noexcept
 
bool operator!= (const THIS_t &v2) const noexcept
 
bool IsNear (const THIS_t &v2, DVALUEDEF_t fDist=(DVALUEDEF_t) k_FLT_MIN2) const
 
DVALUEDEF_t get_MagnitudeSq () const noexcept
 
DVALUEDEF_t get_Magnitude () const noexcept
 
cVecT3< DVALUEDEF_toperator- () const
 
cVecT3< DVALUEDEF_toperator- (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_tget_Abs () const
 
cVecT3< DVALUEDEF_tGetSum (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_toperator+ (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_tGetDiff (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_tGetScaled (DVALUEDEF_t nScale) const
 
cVecT3< DVALUEDEF_toperator* (DVALUEDEF_t nScale) const
 
cVecT3< DVALUEDEF_toperator/ (DVALUEDEF_t nScale) const
 
cVecT3< DVALUEDEF_tGetMul (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_tGetDiv (const THIS_t &v2) const
 
DVALUEDEF_t GetDistSq (const THIS_t &v2) const
 
DVALUEDEF_t GetDist (const THIS_t &v2) const
 
DVALUEDEF_t GetDot (const THIS_t &v2) const
 
cVecT3< DVALUEDEF_tget_Normalized () const
 
 operator DVALUEDEF_t * ()
 
DVALUEDEF_tRefElem (int i) noexcept
 
void Set (const THIS_t &v)
 
void SetZero () noexcept
 
DVALUEDEF_t SetNormalized (void) noexcept
 
bool put_Magnitude (DVALUEDEF_t nLength)
 
void SetLerp (const THIS_t &a, const THIS_t &b, DVALUE_t t)
 
const cVecT3< DVALUEDEF_t > & operator+= (const THIS_t &v2)
 
const cVecT3< DVALUEDEF_t > & operator+= (DVALUEDEF_t n)
 
const cVecT3< DVALUEDEF_t > & operator-= (const THIS_t &v2) noexcept
 
const cVecT3< DVALUEDEF_t > & operator-= (DVALUEDEF_t n) noexcept
 
void DoScale (DVALUEDEF_t n) noexcept
 
const cVecT3< DVALUEDEF_t > & operator*= (DVALUEDEF_t nScale) noexcept
 
cVecT3< DVALUEDEF_t > & operator*= (const THIS_t &v2) noexcept
 
const cVecT3< DVALUEDEF_t > & operator/= (DVALUEDEF_t nScale)
 
cVecT3< DVALUEDEF_t > & operator/= (const THIS_t &v2)
 
void DoMul (const THIS_t &v2) noexcept
 
void DoDiv (const THIS_t &v2)
 

Static Public Member Functions

static RADIANf_t GRAYCALL GetVectorAngle (const THIS_t &v1, const THIS_t &v2)
 
static RADIANf_t GRAYCALL GetVectorAngleN (const THIS_t &lv1, const THIS_t &lv2)
 
- Static Public Member Functions inherited from GrayLib::cVecT3< DVALUEDEF_t >
static THIS_t GetCross (const THIS_t &rA, const THIS_t &rB)
 
- Static Public Member Functions inherited from GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >
static DVALUEDEF_t GetDot (const THIS_t &v1, const THIS_t &v2)
 

Static Public Attributes

static const cVector3f k_vZero
 
static const cVector3f k_vOne
 
static const cVector3f k_vXAxis
 
static const cVector3f k_vYAxis
 
static const cVector3f k_vZAxis
 
- Static Public Attributes inherited from GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >
static const int k_nDim
 

Additional Inherited Members

- Public Types inherited from GrayLib::cVecT3< DVALUEDEF_t >
typedef cVecT3< DVALUEDEF_tTHIS_t
 
typedef cVecTC< DVALUEDEF_t, k_nDim, THIS_tSUPER_t
 
- Public Types inherited from GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >
typedef DVALUEDEF_t DVALUE_t
 Dimension value type. More...
 
typedef cVecTC< DVALUEDEF_t, _IQTY, cVecT3< DVALUEDEF_t > > THIS_t
 
- Public Attributes inherited from GrayLib::cVecT3< DVALUEDEF_t >
DVALUEDEF_t m_a [k_nDim]
 
DVALUEDEF_t m_x
 
DVALUEDEF_t m_y
 
DVALUEDEF_t m_z
 
DVALUEDEF_t x
 
DVALUEDEF_t y
 
DVALUEDEF_t z
 
DVALUEDEF_t r
 
DVALUEDEF_t g
 
DVALUEDEF_t b
 
union {
   TYPE   m_a [k_nDim]
 
   struct {
      TYPE   m_x
 
      TYPE   m_y
 
      TYPE   m_z
 
   } 
 
   struct {
      TYPE   x
 
      TYPE   y
 
      TYPE   z
 
   } 
 
   struct {
      TYPE   r
 
      TYPE   g
 
      TYPE   b
 
   } 
 
}; 
 
- Protected Member Functions inherited from GrayLib::cVecTC< DVALUEDEF_t, 3, cVecT3< DVALUEDEF_t > >
 cVecTC ()
 

Detailed Description

a 3d vector, can be an Euler orientation. Simplified inline versions of the D3D functions. (so we don't have to bring in the entire D3D library) We will try to conform to HLSL vectors arithmetic in functions & operators like HLSL = float3, XMFLOAT3, CalVector

Constructor & Destructor Documentation

◆ cVector3f() [1/3]

GrayLib::cVector3f::cVector3f ( )
inlinenoexcept

◆ cVector3f() [2/3]

GrayLib::cVector3f::cVector3f ( const SUPER_t v)
inlinenoexcept

◆ cVector3f() [3/3]

GrayLib::cVector3f::cVector3f ( DVALUE_t  _x,
DVALUE_t  _y,
DVALUE_t  _z 
)
inlinenoexcept

Member Function Documentation

◆ GetDistSeg()

cVector3f::DVALUE_t GrayLib::cVector3f::GetDistSeg ( const THIS_t v1,
const THIS_t v2 
) const

get shortest distance from this point to a line segment. like cSegment3f http://softsurfer.com/Archive/algorithm_0102/algorithm_0102.htm

◆ GetDistXZ()

DVALUE_t GrayLib::cVector3f::GetDistXZ ( const THIS_t v2) const
inline

◆ GetEulerHeading()

RADIANf_t GrayLib::cVector3f::GetEulerHeading ( const THIS_t v2) const

Get the 2d Euler direction from *this to v2 in Radians.

Note
No need for normalized vectors.

◆ GetMinAxis()

DVALUE_t GrayLib::cVector3f::GetMinAxis ( const THIS_t v2,
DVALUE_t  fDistMin = k_FLT_MIN2 
) const
inline

Get an axis distance greater than fDistMin 0 = all axis are nearer than fDistMin.

◆ GetProj()

cVector3f::THIS_t GrayLib::cVector3f::GetProj ( const cMatrix4x4f M) const

equivalent to HLSL "mul" vector by 4x4, project vector to M. TransformCoord

◆ GetProj2()

cVector3f::THIS_t GrayLib::cVector3f::GetProj2 ( const cMatrix4x4f M) const

transposed version of GetProj().

◆ GetTransNorm()

cVector3f::THIS_t GrayLib::cVector3f::GetTransNorm ( const cMatrix4x4f M) const

HLSL mul by 3x3 = like GetTransNorm2() but NOT transposed. Transform (x, y, z, 0) by matrix. If you transforming a normal by a non-affine matrix, the matrix you pass to this function should be the transpose of the inverse of the matrix you would use to transform a coordinates.

Note
IS this a normalized vector ??

◆ GetTransNorm2()

cVector3f::THIS_t GrayLib::cVector3f::GetTransNorm2 ( const cMatrix4x4f M) const

Multiply vector by 3x3 transposed. like GetTransNorm() but transposed.

◆ GetVectorAngle()

RADIANf_t GrayLib::cVector3f::GetVectorAngle ( const THIS_t v1,
const THIS_t v2 
)
static

Get the Euler angle in radians between 2 vectors. radians

◆ GetVectorAngleN()

RADIANf_t GrayLib::cVector3f::GetVectorAngleN ( const THIS_t lv1,
const THIS_t lv2 
)
static

Get Euler angle between 2 (ASSUMED) normalized vectors. radians

◆ GetVectorToTarget()

THIS_t GrayLib::cVector3f::GetVectorToTarget ( const cVector3f vTarget) const
inline

Get a normalized vector from this to vTarget.

◆ IsNearHeight()

bool GrayLib::cVector3f::IsNearHeight ( const THIS_t v2,
DVALUE_t  fDist = k_FLT_MIN2 
) const
inline

◆ IsNearXZ()

bool GrayLib::cVector3f::IsNearXZ ( const THIS_t v2,
DVALUE_t  fDist = k_FLT_MIN2 
) const
inline

◆ SetEulerWrapSigned()

void GrayLib::cVector3f::SetEulerWrapSigned ( )

convert the Euler orientation to signed -PI..+PI range coordinates. radians

◆ SetMax()

void GrayLib::cVector3f::SetMax ( )
inline

◆ SetMin()

void GrayLib::cVector3f::SetMin ( )
inline

◆ UNITTEST2_PREDEF()

GrayLib::cVector3f::UNITTEST2_PREDEF ( cVector  )

Member Data Documentation

◆ k_vOne

const cVector3f GrayLib::cVector3f::k_vOne
static

◆ k_vXAxis

const cVector3f GrayLib::cVector3f::k_vXAxis
static

◆ k_vYAxis

const cVector3f GrayLib::cVector3f::k_vYAxis
static

◆ k_vZAxis

const cVector3f GrayLib::cVector3f::k_vZAxis
static

◆ k_vZero

const cVector3f GrayLib::cVector3f::k_vZero
static

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