Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
MathVectors.h File Reference
#include "MathHelper.h"
#include "MathVectors.inl"

Go to the source code of this file.

Classes

class  Divide::SimdVector< T >
 
class  Divide::SimdVector< F32 >
 
class  Divide::vec2< T >
 
class  Divide::vec3< T >
 
class  Divide::vec4< T >
 
class  Divide::Rect< T >
 

Namespaces

namespace  Divide
 Handle console commands that start with a forward slash.
 
namespace  Divide::AVX
 

Macros

#define DVD_MATH_VECTORS_H_
 

Functions

bool Divide::AVX::Fneq128 (__m128 const &a, __m128 const &b) noexcept
 
bool Divide::AVX::Fneq128 (__m128 const &a, __m128 const &b, const F32 epsilon) noexcept
 
__m128 Divide::AVX::DotSimd (const __m128 &a, const __m128 &b) noexcept
 
__m128 Divide::AVX::SimpleDot (__m128 a, __m128 b) noexcept
 
template<typename T , typename U >
requires std::is_pod_v<U>
vec2< T > Divide::Lerp (vec2< T > u, vec2< T > v, U factor) noexcept
 lerp between the 2 specified vectors by the specified amount
 
template<typename T >
vec2< T > Divide::Lerp (vec2< T > u, vec2< T > v, vec2< T > factor) noexcept
 lerp between the 2 specified vectors by the specified amount for each component
 
template<typename T >
vec2< T > Divide::Cross (vec2< T > v1, vec2< T > v2) noexcept
 general vec2 cross function
 
template<typename T >
vec2< T > Divide::Inverse (vec2< T > v) noexcept
 
template<typename T >
vec2< T > Divide::Normalize (vec2< T > &vector) noexcept
 
template<typename T >
vec2< T > Divide::Normalized (vec2< T > vector) noexcept
 
template<typename T >
Divide::Dot (vec2< T > a, vec2< T > b) noexcept
 general vec2 dot product
 
template<typename T >
void Divide::OrthoNormalize (vec2< T > &n, vec2< T > &u) noexcept
 
template<typename T >
vec2< T > Divide::operator* (T fl, vec2< T > v) noexcept
 multiply a vector by a value
 
template<typename T >
vec2< T > Divide::Clamped (vec2< T > v, vec2< T > min, vec2< T > max) noexcept
 
template<typename T , typename U >
requires std::is_pod_v<U>
vec3< T > Divide::Lerp (const vec3< T > &u, const vec3< T > &v, U factor) noexcept
 lerp between the 2 specified vectors by the specified amount
 
template<typename T >
vec3< T > Divide::Lerp (const vec3< T > &u, const vec3< T > &v, const vec3< T > &factor) noexcept
 lerp between the 2 specified vectors by the specified amount for each component
 
template<typename T >
vec3< T > Divide::Abs (const vec3< T > &vector) noexcept
 
template<typename T >
vec3< T > Divide::Min (const vec3< T > &v1, const vec3< T > &v2) noexcept
 
template<typename T >
vec3< T > Divide::Max (const vec3< T > &v1, const vec3< T > &v2) noexcept
 
template<typename T >
vec3< T > Divide::Normalize (vec3< T > &vector) noexcept
 
template<typename T >
vec3< T > Divide::Normalized (const vec3< T > &vector) noexcept
 
template<typename T >
Divide::Dot (const vec3< T > &a, const vec3< T > &b) noexcept
 general vec3 dot product
 
template<typename T >
vec3< T > Divide::Cross (const vec3< T > &v1, const vec3< T > &v2) noexcept
 general vec3 cross function
 
template<typename T >
vec3< T > Divide::AreOrthogonal (const vec3< T > &v1, const vec3< T > &v2) noexcept
 
template<typename T >
vec3< T > Divide::Inverse (const vec3< T > &v) noexcept
 
template<typename T >
vec3< T > Divide::operator* (T fl, const vec3< T > &v) noexcept
 multiply a vector by a value
 
template<typename T >
vec3< T > Divide::ProjectToNorm (const vec3< T > &in, const vec3< T > &direction)
 
template<typename T >
void Divide::OrthoNormalize (vec3< T > &n, vec3< T > &u) noexcept
 
template<typename T >
void Divide::OrthoNormalize (vec3< T > &v1, vec3< T > &v2, vec3< T > &v3) noexcept
 
template<typename T >
vec3< T > Divide::Perpendicular (const vec3< T > &v) noexcept
 
template<typename T >
vec3< T > Divide::Clamped (const vec3< T > &v, const vec3< T > &min, const vec3< T > &max) noexcept
 
template<typename T >
vec4< T > Divide::Lerp (const vec4< T > &u, const vec4< T > &v, T factor) noexcept
 lerp between the 2 specified vectors by the specified amount
 
template<typename T >
vec4< T > Divide::Lerp (const vec4< T > &u, const vec4< T > &v, const vec4< T > &factor) noexcept
 lerp between the 2 specified vectors by the specified amount for each component
 
template<typename T >
vec4< T > Divide::Abs (const vec4< T > &vector) noexcept
 
template<typename T >
vec4< T > Divide::Min (const vec4< T > &v1, const vec4< T > &v2) noexcept
 min/max functions
 
template<typename T >
vec4< T > Divide::Max (const vec4< T > &v1, const vec4< T > &v2) noexcept
 
template<typename T >
vec4< T > Divide::Normalize (vec4< T > &vector) noexcept
 
template<typename T >
vec4< T > Divide::Normalized (const vec4< T > &vector) noexcept
 
template<typename T >
vec4< T > Divide::operator* (T fl, const vec4< T > &v) noexcept
 multiply a vector by a value
 
template<typename T >
void Divide::OrthoNormalize (vec4< T > &n, vec4< T > &u)
 
template<typename T >
void Divide::OrthoNormalize (vec4< T > &v1, vec4< T > &v2, vec4< T > &v3)
 
template<typename T >
vec4< T > Divide::Perpendicular (const vec4< T > &vec, const vec4< T > &hint1, const vec4< T > &hint2) noexcept
 
template<typename T >
vec4< T > Divide::Clamped (const vec4< T > &v, const vec4< T > &min, const vec4< T > &max) noexcept
 

Variables

static const vec2< F32 > Divide::VECTOR2_ZERO { 0.0f }
 Quaternion multiplications require these to be floats.
 
static const vec3< F32 > Divide::VECTOR3_ZERO { 0.0f }
 
static const vec4< F32 > Divide::VECTOR4_ZERO { 0.0f }
 
static const vec2< F32 > Divide::VECTOR2_UNIT { 1.0f }
 
static const vec3< F32 > Divide::VECTOR3_UNIT { 1.0f }
 
static const vec4< F32 > Divide::VECTOR4_UNIT { 1.0f }
 
static const vec3< F32 > Divide::WORLD_X_AXIS { 1.0f, 0.0f, 0.0f }
 
static const vec3< F32 > Divide::WORLD_Y_AXIS { 0.0f, 1.0f, 0.0f }
 
static const vec3< F32 > Divide::WORLD_Z_AXIS { 0.0f, 0.0f, 1.0f }
 
static const vec3< F32 > Divide::WORLD_X_NEG_AXIS { -1.0f, 0.0f, 0.0f }
 
static const vec3< F32 > Divide::WORLD_Y_NEG_AXIS { 0.0f, -1.0f, 0.0f }
 
static const vec3< F32 > Divide::WORLD_Z_NEG_AXIS { 0.0f, 0.0f, -1.0f }
 
static const vec3< F32 > Divide::DEFAULT_GRAVITY { 0.0f, -9.81f, 0.0f }
 
static const vec2< I32 > Divide::iVECTOR2_ZERO { 0 }
 
static const vec3< I32 > Divide::iVECTOR3_ZERO { 0 }
 
static const vec4< I32 > Divide::iVECTOR4_ZERO { 0 }
 
static const vec3< I32 > Divide::iWORLD_X_AXIS { 1, 0, 0 }
 
static const vec3< I32 > Divide::iWORLD_Y_AXIS { 0, 1, 0 }
 
static const vec3< I32 > Divide::iWORLD_Z_AXIS { 0, 0, 1 }
 
static const vec3< I32 > Divide::iWORLD_X_NEG_AXIS { -1, 0, 0 }
 
static const vec3< I32 > Divide::iWORLD_Y_NEG_AXIS { 0, -1, 0 }
 
static const vec3< I32 > Divide::iWORLD_Z_NEG_AXIS { 0, 0, -1 }
 
static const Rect< I32 > Divide::UNIT_VIEWPORT { 0, 0, 1, 1 }
 
static const Rect< I32 > Divide::UNIT_RECT { -1, 1, -1, 1 }
 

Macro Definition Documentation

◆ DVD_MATH_VECTORS_H_

#define DVD_MATH_VECTORS_H_

Definition at line 56 of file MathVectors.h.