VoxelFarm::Algebra Namespace Reference

3D algebra functions and data types More...

Classes

struct  Matrix
 A Matrix for 3D operations. More...
 
class  QEF
 
class  QEFMatrix
 A matrix for minimizing Quadratic Error functions. More...
 
struct  Quaternion
 A Quaternion object. More...
 
struct  Vector
 A 3D Vector. More...
 

Typedefs

typedef struct Quaternion Quaternion
 
typedef struct Vector Vector
 

Functions

double vertex_error (const QEFMatrix &q, const double &x, const double &y, const double &z)
 
bool solveQEF (QEFMatrix &q_bar, double *vx, double *vy, double *vz, double *error)
 
void Matrix_loadIdentity (Matrix *matrix)
 Loads identity matrix.
 
Matrix Matrix_identity ()
 Returns identity matrix.
 
Matrix Matrix_withValues (float m0, float m4, float m8, float m12, float m1, float m5, float m9, float m13, float m2, float m6, float m10, float m14, float m3, float m7, float m11, float m15)
 Initializes matrix with values.
 
Matrix Matrix_fromDirectionVectors (struct Vector right, struct Vector up, struct Vector front)
 Creates matrix from direction vectors.
 
void Matrix_multiply (Matrix *matrix1, Matrix matrix2)
 Mutiplies matrices.
 
Matrix Matrix_multiplied (Matrix matrix1, Matrix matrix2)
 Returns result of matrix multiplication.
 
void Matrix_translate (Matrix *matrix1, float x, float y, float z)
 Translates matrix.
 
Matrix Matrix_translated (Matrix matrix1, float x, float y, float z)
 Returns translated matrix.
 
void Matrix_scale (Matrix *matrix, float x, float y, float z)
 Scales matrix.
 
Matrix Matrix_scaled (Matrix matrix, float x, float y, float z)
 Returns scales matrix.
 
void Matrix_rotate (Matrix *matrix, struct Vector axis, float angle)
 Rotates matrix.
 
Matrix Matrix_rotated (Matrix matrix, struct Vector axis, float angle)
 Returns rotated matrix.
 
void Matrix_shearX (Matrix *matrix, float y, float z)
 Applies a shear transofmration to matrix on X.
 
Matrix Matrix_shearedX (Matrix matrix, float y, float z)
 Returns a shear transofmration to matrix on X.
 
void Matrix_shearY (Matrix *matrix, float x, float z)
 Applies a shear transofmration to matrix on Y.
 
Matrix Matrix_shearedY (Matrix matrix, float x, float z)
 Returns a shear transofmration to matrix on Y.
 
void Matrix_shearZ (Matrix *matrix, float x, float y)
 Applies a shear transofmration to matrix on Z.
 
Matrix Matrix_shearedZ (Matrix matrix, float x, float y)
 Returns a shear transofmration to matrix on Z.
 
void Matrix_applyPerspective (Matrix *matrix, float fovY, float aspect, float zNear, float zFar)
 Applies perspective transformation to matrix.
 
Matrix Matrix_perspective (Matrix matrix, float fovY, float aspect, float zNear, float zFar)
 Returns the result of applying perspective transformation to a matrix.
 
void Matrix_transpose (Matrix *matrix)
 Transposes a matrix.
 
Matrix Matrix_transposed (Matrix matrix)
 Returns matrix transpose.
 
float Matrix_determinant (Matrix matrix)
 Returns matrix determinant.
 
void Matrix_invert (Matrix *matrix)
 Inverts a matrix.
 
Matrix Matrix_inverted (Matrix matrix)
 Reurns inverted matrix.
 
struct Vector Matrix_multiplyVector (Matrix matrix, struct Vector vector)
 Returns vector from multiplication of matrix to another vector.
 
void Quaternion_loadIdentity (Quaternion *quaternion)
 Load identity quaternion.
 
Quaternion Quaternion_identity ()
 Returns identity quaternion.
 
Quaternion Quaternion_withValues (float x, float y, float z, float w)
 Initializes quaternion.
 
Quaternion Quaternion_fromVector (struct Vector vector)
 Initializes quaternion from a vector.
 
struct Vector Quaternion_toVector (Quaternion quaternion)
 Returns vector from quaternion.
 
Quaternion Quaternion_fromAxisAngle (struct Vector axis, float angle)
 Creates quaternion from axis angle.
 
void Quaternion_toAxisAngle (Quaternion quaternion, struct Vector *axis, float *angle)
 Converts quaternion to axis angle.
 
struct Matrix Quaternion_toMatrix (Quaternion quaternion)
 Converts quaternion to Matrix.
 
void Quaternion_normalize (Quaternion *quaternion)
 Normalizes quaternion.
 
Quaternion Quaternion_normalized (Quaternion quaternion)
 Returns normalized quaternion.
 
void Quaternion_multiply (Quaternion *quaternion1, Quaternion quaternion2)
 Multiplies quaternion.
 
Quaternion Quaternion_multiplied (Quaternion quaternion1, Quaternion quaternion2)
 Returns mutiplication of quaternion.
 
Quaternion Quaternion_slerp (Quaternion start, Quaternion end, float alpha)
 Interpolates between two quaternions.
 
void Quaternion_rotate (Quaternion *quaternion, struct Vector axis, float angle)
 Rotates quaternion.
 
Quaternion Quaternion_rotated (Quaternion quaternion, struct Vector axis, float angle)
 Returns rotated quaternion.
 
void Quaternion_invert (Quaternion *quaternion)
 Inverts quaternion.
 
Quaternion Quaternion_inverted (Quaternion quaternion)
 Returns inverted quaternion.
 
struct Vector Quaternion_multiplyVector (Quaternion quaternion, struct Vector vector)
 Returns quaternion to vector multiplication.
 
Vector Vector_withValues (float x, float y, float z)
 Initializes a vector.
 
bool Vector_normalize (Vector *vector)
 Normalizes vector.
 
Vector Vector_normalized (Vector vector)
 Returns normalized vector.
 
float Vector_magnitude (Vector vector)
 Returns the magnitude of the vector.
 
float Vector_magnitudeSquared (Vector vector)
 Returns the squared magnitude.
 
Vector Vector_add (Vector vector1, Vector vector2)
 Returns sum of two vectors.
 
Vector Vector_subtract (Vector vector1, Vector vector2)
 Returns substraction of two vectors.
 
float Vector_dot (Vector vector1, Vector vector2)
 Returns dot product between two vectors.
 
Vector Vector_cross (Vector vector1, Vector vector2)
 Returns cross product between two vectors.
 
Vector Vector_mutiply (float value, Vector vector)
 
Vector closestPtPointTriangle (Vector p, Vector a, Vector b, Vector c)
 
bool testSphereTriangle (Vector center, float r, Vector a, Vector b, Vector c, Vector &p)
 
double sign2D (double p1x, double p1y, double p2x, double p2y, double p3x, double p3y)
 
bool pointInsideTriangle3D (Vector p, Vector v0, Vector v1, Vector v2)
 
int segmentIntersectTriangle3D (Vector p0, Vector p1, Vector v0, Vector v1, Vector v2, Vector *p)
 

Variables

const double piover180 = 0.0174532925
 
const float piover180f = 0.0174532925f
 

Detailed Description

3D algebra functions and data types