DAVID 3D Scanning SDK for Sprout  1.8.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
FastVector.h File Reference

Basic vector/frame operations working on template<>-arrays. More...

#include <math.h>

Go to the source code of this file.

Functions

template<class T1 , class T2 >
void Vset (T1 *Vr, T2 x, T2 y, T2 z)
 set vector (3d)
 
template<class T1 , class T2 >
void VcV (T1 *Vr, const T2 *V)
 copy vector
 
template<class T1 , class T2 , class T3 >
void VmV (T1 *Vr, const T2 *V1, const T3 *V2)
 subtract vector
 
template<class T1 , class T2 >
T1 * VmV (T1 *Vr, const T2 *V1)
 substract vector inplace
 
template<class T1 , class T2 , class T3 >
void VpV (T1 *Vr, const T2 *V1, const T3 *V2)
 add vector
 
template<class T1 , class T2 >
T1 * VpV (T1 *Vr, const T2 *V1)
 add vector inplace
 
template<class T1 , class T2 , class T3 >
void VxS (T1 *Vr, const T2 *V, T3 s)
 scale vector
 
template<class T1 , class T2 >
T1 * VxS (T1 *Vr, T2 s)
 scale vector inplace
 
template<class T1 , class T2 , class T3 >
void VcrossV (T1 *Vr, const T2 *V1, const T3 *V2)
 cross(vector)-product
 
template<class T1 , class T2 >
T1 VdotV (const T1 *V1, const T2 *V2)
 dot-product
 
template<class T1 >
T1 Vlength (const T1 *V)
 length of a vector
 
template<class T1 , class T2 >
T1 VdistV (const T1 *V1, const T2 *V2)
 distance between two vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 VsdistV (const T1 *V1, const T2 *V2)
 square distance between two vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 VcosV (const T1 *V1, const T2 *V2)
 cosine of angle between two vectors
 
template<class T1 , class T2 >
T1 VsinV (const T1 *V1, const T2 *V2)
 sinus of angle between two vectors
 
template<class T1 , class T2 >
T1 VangleV (const T1 *V1, const T2 *V2)
 angle between two vectors
 
template<class T1 , class T2 , class T3 >
void VV2SC (T1 *SC, const T2 *V1, const T3 *V2)
 calculates (sine,cosine)-vector of the angle between two given vectors
 
template<class T1 , class T2 , class T3 >
void SCpSC (T1 *SC_sum, const T2 *SC_a, const T3 *SC_b)
 Calculates (sin(a+b),cos(a+b)) out of (sin(a),cos(a)) and (sin(b),cos(b))
 
template<class T1 , class T2 >
T1 * SCpSC (T1 *SC_r, const T2 *SC_b)
 Calculates (sin(a+b),cos(a+b)) out of (sin(a),cos(a)) and (sin(b),cos(b)) inplace.
 
template<class T1 , class T2 >
void Angle2SC (T1 *SC, T2 angle)
 Calculates (sin(a),cos(a))
 
template<class T1 , class T2 , class T3 >
void SCmSC (T1 *SC_diff, const T2 *SC_a, const T3 *SC_b)
 Calculates (sin(a-b),cos(a-b)) out of (sin(a),cos(a)) and (sin(b),cos(b))
 
template<class T1 , class T2 , class T3 >
void SCdouble (T1 *SC_double, const T2 *SC_a)
 Calculates (sin(2*a),cos(2*a) out of (sin(a),cos(a))
 
template<class T1 , class T2 >
void Vnormalize (T1 *Vr, const T2 *V)
 normalize vector
 
template<class T1 >
T1 * Vnormalize (T1 *V)
 normalize vector inplace
 
template<class T1 >
T1 * VnormalizeIf (T1 *V)
 normalize vector inplace but only if length is != 0
 
template<class T1 >
T1 detVVV (const T1 *V1, const T1 *V2, const T1 *V3)
 determinant of matrix (in columns or rows)
 
template<class T1 >
T1 det3x3 (const T1 a00, const T1 a01, const T1 a02, const T1 a10, const T1 a11, const T1 a12, const T1 a20, const T1 a21, const T1 a22)
 determinant of matrix (in single entries)
 
template<class Tr , class T1 , class T2 , class T3 >
void FxV (Tr *Vr, const T1 *F, const T2 *V, const T3 V3)
 frame-vector product
 
template<class Tr , class T1 , class T3 >
Tr * FxV (const T1 *F, Tr *V, const T3 V3)
 frame-vector product inplace
 
template<class Tr , class T1 >
void V4set (Tr *Vr, T1 x, T1 y, T1 z, T1 h)
 set vector4
 
template<class Tr , class T1 >
void V4cV4 (Tr *Vr, const T1 *V)
 copy vector4
 
template<class Tr , class T1 >
void FcF (Tr *Fr, const T1 *F)
 copy frame
 
template<class Tr , class T1 , class T2 >
void FxV4 (Tr *Vr, const T1 *F, const T2 *V)
 frame-vector4 product
 
template<class Tr , class T1 , class T2 >
void FxF (Tr *Fr, const T1 *F1, const T2 *F2)
 frame-frame product
 
template<class Tr >
void Finverse (Tr *Fr)
 frame inversion (only for orthonormed frames!!)
 
template<class Tr >
void Fidentity (Tr *Fr)
 load identity frame
 
template<class Tr , class T1 >
void Frotx (Tr *Fr, const T1 angle)
 load x-rotation frame
 
template<class Tr , class T1 >
void Froty (Tr *Fr, const T1 angle)
 load y-rotation frame
 
template<class Tr , class T1 >
void Frotz (Tr *Fr, const T1 angle)
 load z-rotation frame
 
template<class Tr , class T1 , class T2 >
void Frotv (Tr *Fr, const T1 *V, const T2 angle)
 load vector-rotation frame
 
template<class T1 , class T2 >
void V6set (T1 *Vr, T2 x, T2 y, T2 z, T2 nx, T2 ny, T2 nz)
 set 6d-vector
 
template<class T1 , class T2 >
void V6cV6 (T1 *Vr, const T2 *V)
 copy 6d-vector
 
template<class T1 , class T2 , class T3 >
void V6mV6 (T1 *Vr, const T2 *V1, const T3 *V2)
 subtract 6d-vector
 
template<class T1 , class T2 >
T1 * V6mV6 (T1 *Vr, const T2 *V1)
 substract 6d-vector inplace
 
template<class T1 , class T2 , class T3 >
void V6pV6 (T1 *Vr, const T2 *V1, const T3 *V2)
 add 6d-vector
 
template<class T1 , class T2 >
T1 * V6pV6 (T1 *Vr, const T2 *V1)
 add 6d-vector inplace
 
template<class T1 , class T2 , class T3 >
void V6xS (T1 *Vr, const T2 *V, T3 s)
 scale 6d-vector
 
template<class T1 , class T2 >
T1 * V6xS (T1 *Vr, T2 s)
 scale 6d-vector inplace
 
template<class T1 , class T2 >
T1 V6dotV6 (const T1 *V1, const T2 *V2)
 6d-vector dot-product
 
template<class T1 >
T1 V6length (const T1 *V)
 length of a 6d-vector
 
template<class T1 , class T2 >
T1 V6distV6 (const T1 *V1, const T2 *V2)
 distance between two 6d-vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 V6sdistV6 (const T1 *V1, const T2 *V2)
 square distance between two 6d-vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 V6angleV6 (const T1 *V1, const T2 *V2)
 angle between two 6d-vectors
 
template<class T1 , class T2 >
void V6normalize (T1 *Vr, const T2 *V)
 normalize 6d-vector
 
template<class T1 >
T1 * V6normalize (T1 *V)
 normalize 6d-vector inplace
 
template<class Tr , class T1 , class T2 >
void MxV6 (Tr *Vr, const T1 *M, const T2 *V)
 6x6Matrix-6d-vector product
 
template<class T1 , class T2 >
void V0cV0 (T1 *Vr, const T2 *V, const int dim)
 copy vector
 
template<class T1 , class T2 , class T3 >
void V0mV0 (T1 *Vr, const T2 *V1, const T3 *V2, const int dim)
 subtract vector
 
template<class T1 , class T2 >
T1 * V0mV0 (T1 *Vr, const T2 *V1, const int dim)
 substract vector inplace
 
template<class T1 , class T2 , class T3 >
void V0pV0 (T1 *Vr, const T2 *V1, const T3 *V2, const int dim)
 add vector
 
template<class T1 , class T2 >
T1 * V0pV0 (T1 *Vr, const T2 *V1, const int dim)
 add vector inplace
 
template<class T1 , class T2 , class T3 >
void V0xS (T1 *Vr, const T2 *V, T3 s, const int dim)
 scale vector
 
template<class T1 , class T2 >
T1 * V0xS (T1 *Vr, T2 s, const int dim)
 scale vector inplace
 
template<class T1 , class T2 >
T1 V0dotV0 (const T1 *V1, const T2 *V2, const int dim)
 vector dot-product
 
template<class T1 >
T1 V0length (const T1 *V, const int dim)
 length of a vector
 
template<class T1 , class T2 >
T1 V0distV0 (const T1 *V1, const T2 *V2, const int dim)
 distance between two vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 V0sdistV0 (const T1 *V1, const T2 *V2, const int dim)
 square distance between two vectors (=length of difference vector)
 
template<class T1 , class T2 >
T1 V0angleV0 (const T1 *V1, const T2 *V2, const int dim)
 angle between two vectors
 
template<class T1 , class T2 >
void V0normalize (T1 *Vr, const T2 *V, const int dim)
 normalize vector
 
template<class T1 >
T1 * V0normalize (T1 *V, const int dim)
 normalize vector inplace
 

Variables

const double PI = 3.14159265358979323846
 define pi if its not already defined
 

Detailed Description

Basic vector/frame operations working on template<>-arrays.

Definition in file FastVector.h.