# vector_math_64 library Null safety

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).

## 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
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

Constant factor to convert and angle from degrees to radians.
`math.pi / 180.0`
Constant factor to convert and angle from radians to degrees.
`180.0 / math.pi`

## Functions

absoluteError(dynamic calculated, dynamic correct)
Returns absolute error between `calculated` and `correct`. The type of `calculated` and `correct` must match and can be any vector, matrix, or quaternion.
buildPlaneVectors(Vector3 planeNormal, Vector3 u, ) → void
Sets `u` and `v` to be two vectors orthogonal to each other and `planeNormal`.
catmullRom(double edge0, double edge1, double edge2, double edge3, double amount)
Do a catmull rom spline interpolation with `edge0`, `edge1`, `edge2` and `edge3` by `amount`.
cross2(Vector2 x, )
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.
Convert `radians` to degrees.
dot2(Vector2 x, )
2D dot product.
dot3(Vector3 x, )
3D dot product.
makeFrustumMatrix(double left, double right, double bottom, double top, double near, double far)
Constructs a new OpenGL perspective projection matrix. [...]
makeInfiniteMatrix(double fovYRadians, double aspectRatio, double zNear)
Constructs a new OpenGL infinite projection matrix. [...]
makeOrthographicMatrix(double left, double right, double bottom, double top, double near, double far)
Constructs a new OpenGL orthographic projection matrix. [...]
makePerspectiveMatrix(double fovYRadians, double aspectRatio, double zNear, double zFar)
Constructs a new OpenGL perspective projection matrix. [...]
makePlaneProjection(Vector3 planeNormal, Vector3 planePoint)
Returns a transformation matrix that transforms points onto the plane specified with `planeNormal` and `planePoint`.
makePlaneReflection(Vector3 planeNormal, Vector3 planePoint)
Returns a transformation matrix that transforms points by reflecting them through the plane specified with `planeNormal` and `planePoint`.
makeViewMatrix(Vector3 cameraPosition, Vector3 cameraFocusPosition, Vector3 upDirection)
Constructs a new OpenGL view matrix. [...]
mix(double min, double max, )
Interpolate between `min` and `max` with the amount of `a` 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` and `rayFar` are the points where the screen space `pickX`, `pickY` intersect with the near and far planes respectively. [...]
Convert `degrees` to radians.
relativeError(dynamic calculated, dynamic correct)
Returns relative error between `calculated` and `correct`. The type of `calculated` and `correct` 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)
Do a smooth step (hermite interpolation) interpolation with `edge0` and `edge1` by `amount`. 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 space `pickX`, `pickY`, and `pickZ`. [...]