# TVMathLibrary

### DESCRIPTION

Singleton class containing method for mathematical calculations.
Contains methods for: vectors, matrices, quaternions, planes and colors.
Learn it, use it, worship it.
Please notice that all vector related methods have basically 4 versions (2D,3D,4D and shot version of 3D). Please add your content to all corresponding pages.

### USAGE

VB.NET

```' TV Variables
Public MathLib As TVMathLibrary

' Create new TVMathLibrary Object
MathLib = New TVMathLibrary
```

C++

```#include "CTVMathLibrary.h"

CTVMathLibrary* TVMath = new CTVMathLibrary();
float Angle = TVMath->Direction2Ang(0.5f,0.5f);```

### NOTES

TVMathLibrary is a singleton.
Common methods like vector addition and subtraction or matrix multiplication are also implemented as operators.

### METHODS

Method Description
ACos Calculates the ACos of a value
ASin Calculates the ASin of a value
ATan Calculates the ATan of a value
ATan2 Calculates the ATan2 given x and y values
Direction2Ang Converts direction to angle
GetDistance2D Calculates the distance between two 2D vectors
GetDistance3D Calculates the distance between two 3D vectors
GetDistanceVec2D Calculates the distance between two TV_2DVECTOR vectors
GetDistanceVec3D Calculates the distance between two TV_3DVECTOR vectors
GetIndex Short description of GetIndex
GetMousePickVectors Returns mouse pick vectors for current camera and x,y mouse position
IntersectionXZPlane Calculates intersection point of a ray and XZ plane
MoveAroundPoint Calculates position of point moving around specified origin given radius and angles
Project2DPointTo3D Projects a point from screen coordinates to 3D world
Project3DPointTo2D Projects a point from 3D world to 2D screen coordinates
SetIndex Short description of SetIndex
SortVectorList Short description of SortVectorList
SortVectorList Short description of SortVectorList
TVColorLerp Performs color interpolation
TVColorModulate Perfroms color modulation
TVColorNegative Calculates ngative color
TVColorScale Multiplies color by a scalar
TVColorSubtract Performs color subtraction
TVConvertMatrixToQuaternion Converts matrix to quaternion
TVConvertQuaternionToMatrix Convert quaternion to matrix
TVEulerAnglesFromMatrix Calculates Euler angles from matrix
TVMatrixClipPlaneProjection Clips projection matrix by plane
TVMatrixDecompose Decomposes matrix into scale, rotation and translation
TVMatrixIdentity Creates identity matrix
TVMatrixInverse Calculates inverse of a matrix
TVMatrixInvertReflectCulling Short description of TVMatrixInvertReflectCulling
TVMatrixLerp Interpolates between two matrices
TVMatrixLookAt Creates transformation matrix from look-at points
TVMatrixMultiply Performs matrix multiplication
TVMatrixReflect Calculates transformation matrix for reflection cameras
TVMatrixRotationAxis Creates rotation matrix given axis and angle
TVMatrixRotationQuaternion Converts quaternion to matrix
TVMatrixRotationX Crates rotation matrix for rotation along X axis
TVMatrixRotationY Crates rotation matrix for rotation along Y axis
TVMatrixRotationYawPitchRoll Crates rotation matrix from Yar, Pitch and Roll angles
TVMatrixRotationZ Crates rotation matrix for rotation along X axis
TVMatrixScaling Creates transformation matrix for scaling
TVMatrixTranslation Creates translation matrix
TVMatrixTranspose Transposes a matrix
TVPlaneDot Distance to point (TV_4DVECTOR)
TVPlaneDotCoord Distance to point (TV_3DVECTOR)
TVPlaneDotNormal Short description of TVPlaneDotNormal
TVPlaneFromPointNormal Creates plane from point and normal vector
TVPlaneFromPoints Creates plane from three points
TVPlaneIntersectLine Calculates plane-line intersection
TVPlaneNormalize Normalizes plane coefficients
TVPlaneScale Scale plane coefficients
TVPlaneTransform Transform plane by matrix
TVQuaternionBaryCentric Creates quaternion in barycentric coordinates
TVQuaternionConjugate Creates conjugate quaternion
TVQuaternionDot Calculates quaternion dot product
TVQuaternionExp Calculates quaternion Exp
TVQuaternionIdentity Creates identity quaternion
TVQuaternionInverse Inverts quaternion
TVQuaternionLength Calucates length of quaternion
TVQuaternionLengthSq Calculates squared length of quaternion
TVQuaternionLerp Performs linear interpolation of two quaternions
TVQuaternionLn Calculates quaternion Ln
TVQuaternionMultiply Multiplies two quaternions
TVQuaternionNormalize Normalizes quaternion
TVQuaternionRotationAxis Creates quaternion from axis and angle
TVQuaternionRotationMatrix Creates quaternion from rotation matrix
TVQuaternionRotationYawPitchRoll Creates quaternion from Yaw, Pitch and Roll
TVQuaternionSlerp Performs spherical linear interpolation between two quaternions
TVVec2BaryCentric Creates a vector in barycentric coordinates
TVVec2CatmulRom Performs Catmul-Rom interpolation
TVVec2Distance Calculates distance between two points
TVVec2Dot Calculates dot product of two vectors
TVVec2Hermite Performs hermite interpolation
TVVec2Length Calculates length of a vector
TVVec2LengthSq Calculates squared length of a vector
TVVec2Lerp Performs linear interpolation
TVVec2Maximize Finds maximum of two vectors
TVVec2Minimize Finds minimum of two vectors
TVVec2Normalize Normalizes a vector to unit length
TVVec2Rotate Rotates vetor using Yaw, Pitch and Roll angles
TVVec2Scale Scales vector
TVVec2Subtract Subtracts two vectors
TVVec2Transform Transforms vector by 3D matrix (returning 4D vector)
TVVec2TransformCoord Transforms vector by 3D matrix (returning 2D vector)
TVVec2TransformNormal Short description of TVVec2TransformNormal
TVVec3Add Calculates the sum of two given 3D vectors
TVVec3BaryCentric Creates a vector in barycentric coordinates
TVVec3CatmulRom Performs Catmul-Rom interpolation
TVVec3Cross Calculates the Cross product of two given 3D vectors
TVVec3Distance Calculates distance between two points
TVVec3Dot Calculates the Dot product of two given 3D vectors.
TVVec3Hermite Performs hermite interpolation
TVVec3Length Calculates length of a vector
TVVec3LengthSq Calculates squared length of a vector
TVVec3Lerp Performs linear interpolation
TVVec3Maximize Finds maximum of two vectors
TVVec3Minimize Finds minimum of two vectors
TVVec3Normalize Normalizes a vector to unit length
TVVec3Rotate Rotates vetor using Yaw, Pitch and Roll angles
TVVec3Scale Scales vector
TVVec3Subtract Subtracts two vectors
TVVec3Transform Transforms vector by 3D matrix (returning 4D vector)
TVVec3TransformCoord Transforms vector by 3D matrix (returning 3D vector)
TVVec3TransformNormal Short description of TVVec3TransformNormal
TVVec4BaryCentric Creates a vector in barycentric coordinates
TVVec4CatmulRom Performs Catmul-Rom interpolation
TVVec4Distance Calculates distance between two points
TVVec4Dot Calculates dot product of two vectors
TVVec4Hermite Performs hermite interpolation
TVVec4Length Calculates length of a vector
TVVec4LengthSq Calculates squared length of a vector
TVVec4Lerp Performs linear interpolation
TVVec4Maximize Finds maximum of two vectors
TVVec4Minimize Finds minimum of two vectors
TVVec4Normalize Normalizes a vector to unit length
TVVec4Rotate Rotates vetor using Yaw, Pitch and Roll angles
TVVec4Scale Scales vector
TVVec4Subtract Subtracts two vectors
TVVec4Transform Transforms vector by 3D matrix
VCompare Compares two vector for equality (by value)
VCompare2 Compares two vector for equality (by value) with error margin
VCrossProduct Calculates cross product of two vectors
VDotProduct Calculates dot product of two vectors
VLength Calculates length of a vector
VModulus Calculates length of a vector
VMultiply Scales vector
VNormalize Normalizes a vector to unit length
VScale Scales vector
VSubtract Subtracts two vectors