vector_math library
A library containing different type of vector operations for use in games, simulations, or rendering.
The library contains Vector classes (Vector2, Vector3 and Vector4), Matrices classes (Matrix2, Matrix3 and Matrix4) and collision detection related classes (Aabb2, Aabb3, Frustum, Obb3, Plane, Quad, Ray, Sphere and Triangle).
In addition some utilities are available as color operations (See Colors class), noise generators (SimplexNoise) and common OpenGL operations (like makeViewMatrix, makePerspectiveMatrix, or pickRay).
There is also a vector_math_64 library available that uses double precision (64-bit) instead of single precision (32-bit) floating point numbers for storage.
Classes
- Aabb2
- Defines a 2-dimensional axis-aligned bounding box between a min and a max position.
- Aabb3
- Defines a 3-dimensional axis-aligned bounding box between a min and a max position.
- Colors
- Contains functions for converting between different color models and manipulating colors. In addition to that, some known colors can be accessed for fast prototyping.
- Frustum
- Defines a frustum constructed out of six Planes.
- IntersectionResult
- Defines a result of an intersection test.
- Matrix2
- 2D Matrix. Values are stored in column major order.
- Matrix3
- 3D Matrix. Values are stored in column major order.
- Matrix4
- 4D Matrix. Values are stored in column major order.
- Obb3
- Defines a 3-dimensional oriented bounding box defined with a center, halfExtents and axes.
- Plane
- Quad
- Defines a quad by four points.
- Quaternion
- Defines a Quaternion (a four-dimensional vector) for efficient rotation calculations. [...]
- Ray
- Defines a Ray by an origin and a direction.
- SimplexNoise
- Sphere
- Defines a sphere with a center and a radius.
- Triangle
- Defines a triangle by three points.
- Vector
- Base class for vectors
- Vector2
- 2D column vector.
- Vector3
- 3D column vector.
- Vector4
- 4D column vector.
Constants
- degrees2Radians → const double
-
Constant factor to convert and angle from degrees to radians.
math.pi / 180.0
- radians2Degrees → const double
-
Constant factor to convert and angle from radians to degrees.
180.0 / math.pi
Functions
-
absoluteError(
dynamic calculated, dynamic correct) → double -
Returns absolute error between
calculated
andcorrect
. The type ofcalculated
andcorrect
must match and can be any vector, matrix, or quaternion. -
buildPlaneVectors(
Vector3 planeNormal, Vector3 u, Vector3 v) → void -
Sets
u
andv
to be two vectors orthogonal to each other andplaneNormal
. -
catmullRom(
double edge0, double edge1, double edge2, double edge3, double amount) → double -
Do a catmull rom spline interpolation with
edge0
,edge1
,edge2
andedge3
byamount
. -
cross2(
Vector2 x, Vector2 y) → double - 2D cross product. vec2 x vec2.
-
cross2A(
double x, Vector2 y, Vector2 out) → void - 2D cross product. double x vec2.
-
cross2B(
Vector2 x, double y, Vector2 out) → void - 2D cross product. vec2 x double.
-
cross3(
Vector3 x, Vector3 y, Vector3 out) → void - 3D Cross product.
-
degrees(
double radians) → double -
Convert
radians
to degrees. -
dot2(
Vector2 x, Vector2 y) → double - 2D dot product.
-
dot3(
Vector3 x, Vector3 y) → double - 3D dot product.
-
makeFrustumMatrix(
double left, double right, double bottom, double top, double near, double far) → Matrix4 - Constructs a new OpenGL perspective projection matrix. [...]
-
makeInfiniteMatrix(
double fovYRadians, double aspectRatio, double zNear) → Matrix4 - Constructs a new OpenGL infinite projection matrix. [...]
-
makeOrthographicMatrix(
double left, double right, double bottom, double top, double near, double far) → Matrix4 - Constructs a new OpenGL orthographic projection matrix. [...]
-
makePerspectiveMatrix(
double fovYRadians, double aspectRatio, double zNear, double zFar) → Matrix4 - Constructs a new OpenGL perspective projection matrix. [...]
-
makePlaneProjection(
Vector3 planeNormal, Vector3 planePoint) → Matrix4 -
Returns a transformation matrix that transforms points onto
the plane specified with
planeNormal
andplanePoint
. -
makePlaneReflection(
Vector3 planeNormal, Vector3 planePoint) → Matrix4 -
Returns a transformation matrix that transforms points by reflecting
them through the plane specified with
planeNormal
andplanePoint
. -
makeViewMatrix(
Vector3 cameraPosition, Vector3 cameraFocusPosition, Vector3 upDirection) → Matrix4 - Constructs a new OpenGL view matrix. [...]
-
mix(
double min, double max, double a) → double -
Interpolate between
min
andmax
with the amount ofa
using a linear interpolation. The computation is equivalent to the GLSL function mix. -
pickRay(
Matrix4 cameraMatrix, num viewportX, num viewportWidth, num viewportY, num viewportHeight, num pickX, num pickY, Vector3 rayNear, Vector3 rayFar) → bool -
On success,
rayNear
andrayFar
are the points where the screen spacepickX
,pickY
intersect with the near and far planes respectively. [...] -
radians(
double degrees) → double -
Convert
degrees
to radians. -
relativeError(
dynamic calculated, dynamic correct) → double -
Returns relative error between
calculated
andcorrect
. The type ofcalculated
andcorrect
must match and can be any vector, matrix, or quaternion. -
setFrustumMatrix(
Matrix4 perspectiveMatrix, double left, double right, double bottom, double top, double near, double far) → void -
Constructs an OpenGL perspective projection matrix in
perspectiveMatrix
. [...] -
setInfiniteMatrix(
Matrix4 infiniteMatrix, double fovYRadians, double aspectRatio, double zNear) → void -
Constructs an OpenGL infinite projection matrix in
infiniteMatrix
.fovYRadians
specifies the field of view angle, in radians, in the y direction.aspectRatio
specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio of x (width) to y (height).zNear
specifies the distance from the viewer to the near plane (always positive). -
setModelMatrix(
Matrix4 modelMatrix, Vector3 forwardDirection, Vector3 upDirection, double tx, double ty, double tz) → void -
Constructs an OpenGL model matrix in
modelMatrix
. Model transformation is the inverse of the view transformation. Model transformation is also known as "camera" transformation. Model matrix is commonly used to compute a object location/orientation into the full model-view stack. [...] -
setOrthographicMatrix(
Matrix4 orthographicMatrix, double left, double right, double bottom, double top, double near, double far) → void -
Constructs an OpenGL orthographic projection matrix in
orthographicMatrix
. [...] -
setPerspectiveMatrix(
Matrix4 perspectiveMatrix, double fovYRadians, double aspectRatio, double zNear, double zFar) → void -
Constructs an OpenGL perspective projection matrix in
perspectiveMatrix
. [...] -
setRotationMatrix(
Matrix4 rotationMatrix, Vector3 forwardDirection, Vector3 upDirection) → void -
Constructs a rotation matrix in
rotationMatrix
. [...] -
setViewMatrix(
Matrix4 viewMatrix, Vector3 cameraPosition, Vector3 cameraFocusPosition, Vector3 upDirection) → void -
Constructs an OpenGL view matrix in
viewMatrix
. View transformation is the inverse of the model transformation. View matrix is commonly used to compute the camera location/orientation into the full model-view stack. [...] -
smoothStep(
double edge0, double edge1, double amount) → double -
Do a smooth step (hermite interpolation) interpolation with
edge0
andedge1
byamount
. The computation is equivalent to the GLSL function smoothstep. -
unproject(
Matrix4 cameraMatrix, num viewportX, num viewportWidth, num viewportY, num viewportHeight, num pickX, num pickY, num pickZ, Vector3 pickWorld) → bool -
On success, Sets
pickWorld
to be the world space position of the screen spacepickX
,pickY
, andpickZ
. [...]