441 lines
10 KiB
Plaintext
441 lines
10 KiB
Plaintext
|
Operations
|
||
|
==========
|
||
|
|
||
|
.. js:function:: add(a1, a2[, result])
|
||
|
|
||
|
:param Matrix a1: first operand
|
||
|
:param Matrix a2: second operand
|
||
|
:param Matrix result: result buffer
|
||
|
:returns: result
|
||
|
|
||
|
Adds two buffers of the same size.
|
||
|
|
||
|
.. js:function:: subtract(a1, a2[, result])
|
||
|
|
||
|
:param Matrix a1: first operand
|
||
|
:param Matrix a2: second operand
|
||
|
:param Matrix result: result buffer
|
||
|
:returns: result
|
||
|
|
||
|
Subtracts two buffers of the same size.
|
||
|
|
||
|
.. js:function:: scale(a, s[, result])
|
||
|
|
||
|
:param Matrix a: buffer
|
||
|
:param number s: scalar
|
||
|
:param Matrix result: result
|
||
|
:returns: result
|
||
|
|
||
|
Scales a buffer by multiplying each component by a scalar.
|
||
|
|
||
|
.. js:function:: equal(a1, a2[, e])
|
||
|
|
||
|
:param Matrix a1: first operand
|
||
|
:param Matrix a2: second operand
|
||
|
:param number e: comparision tolerance, defaults to ``10E-5``
|
||
|
:returns: true if operands are equal (within tolerance), false otherwise
|
||
|
|
||
|
Compares two buffers component-wise for equality. Differences smaller than ``e`` are ignored.
|
||
|
|
||
|
.. js:function:: clone(a[, result])
|
||
|
|
||
|
:param Matrix a: buffer
|
||
|
:param Matrix result: result buffer
|
||
|
|
||
|
Creates a component-wise copy of a buffer.
|
||
|
|
||
|
.. js:function:: clear(a[, s])
|
||
|
|
||
|
:param Matrix a: buffer
|
||
|
:param number s: scalar, defaults to 0
|
||
|
|
||
|
Clears a buffer by writing a scalar into each component.
|
||
|
|
||
|
.. js:function:: toMathML(a)
|
||
|
|
||
|
:param Matrix a: buffer
|
||
|
|
||
|
Converts a buffer to MathML representation.
|
||
|
|
||
|
.. js:function:: toString(a)
|
||
|
|
||
|
:param Matrix a: buffer
|
||
|
|
||
|
Converts a buffer to string representation.
|
||
|
|
||
|
Vector
|
||
|
------
|
||
|
|
||
|
.. js:function:: set(v, values)
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param Array values: array of values
|
||
|
:returns: ``v``
|
||
|
|
||
|
.. js:function:: length(v)
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:returns: length of ``v``
|
||
|
|
||
|
.. js:function:: length2(v)
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:returns: squared length of ``v``
|
||
|
|
||
|
.. js:function:: dot(v1, v2)
|
||
|
|
||
|
:param Vector v1: first vector
|
||
|
:param Vector v2: second vector
|
||
|
:returns: inner product of ``v1`` and ``v2``
|
||
|
|
||
|
.. js:function:: negate(v[, result])
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param Vector result: result
|
||
|
:returns: negation of ``v``
|
||
|
|
||
|
.. js:function:: limit(v, s[, result])
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param number s: scalar limit
|
||
|
:returns: ``v`` resized to have length at most ``s``
|
||
|
|
||
|
.. js:function:: normalize(v[, result])
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param Vector result: result
|
||
|
:returns: a unit vector in the direction of ``v``
|
||
|
|
||
|
.. js:function:: distance(v1, v2)
|
||
|
|
||
|
:param Vector v1: origin vector
|
||
|
:param Vector v2: target vector
|
||
|
:returns: the distance from v1 to v2
|
||
|
|
||
|
.. js:function:: angle(v1, v2)
|
||
|
|
||
|
:param Vector v1: first vector
|
||
|
:param Vector v2: second vector
|
||
|
:returns: the angle betwen ``v1`` and ``v2``
|
||
|
|
||
|
.. js:function:: lerp(v1, v2, s[, result])
|
||
|
|
||
|
:param Vector v1: origin vector
|
||
|
:param Vector v2: target vector
|
||
|
:param number s: interpolation scalar
|
||
|
:param Vector result: result
|
||
|
:returns: interpolation from ``v1`` to ``v2`` by s
|
||
|
|
||
|
.. js:function:: direction(v1, v2[, result])
|
||
|
|
||
|
:param Vector v1: origin vector
|
||
|
:param Vector v2: target vector
|
||
|
:param Vector result: result
|
||
|
:returns: unit vector pointing from ``v1`` to ``v2``
|
||
|
|
||
|
.. js:function:: extract(v, offset, length[, result])
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param number offset: offset from the start ov ``v``
|
||
|
:param number length: number of elements to extract
|
||
|
:param Vector result: result
|
||
|
:returns: ``length`` elements of ``v``, starting from ``offset``
|
||
|
|
||
|
.. js:function:: zero(v)
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:returns: ``v`` with all components 0
|
||
|
|
||
|
.. js:function:: zero(d)
|
||
|
|
||
|
:param number d: dimension
|
||
|
:returns: a new ``Vector`` with all components 0
|
||
|
|
||
|
.. js:function:: one(v)
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:returns: ``v`` with all components 1
|
||
|
|
||
|
.. js:function:: one(d)
|
||
|
|
||
|
:param number d: dimension
|
||
|
:returns: a new ``Vector`` with all components 1
|
||
|
|
||
|
Vector2
|
||
|
-------
|
||
|
|
||
|
.. js:function:: x([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 2-dimensional y unit vector (1, 0)
|
||
|
|
||
|
.. js:function:: y([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 2-dimensional y unit vector (0, 1)
|
||
|
|
||
|
.. js:function:: u([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 2-dimensional u unit vector (1, 0)
|
||
|
|
||
|
.. js:function:: v([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 2-dimensional v unit vector (0, 1)
|
||
|
|
||
|
Vector3
|
||
|
-------
|
||
|
|
||
|
.. js:function:: cross(v1, v2[, result])
|
||
|
|
||
|
:param Vector v1: first vector
|
||
|
:param Vector v2: second vector
|
||
|
:param Vector result: result
|
||
|
:returns: outer product of ``v1`` and ``v2``
|
||
|
|
||
|
.. js:function:: unproject(v, view, projection, viewport[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Vector v: screen space vector
|
||
|
:param Matrix view: view matrix
|
||
|
:param Matrix projection: projection matrix
|
||
|
:param Array viewport: viewport parameters, as ``[x, y, width, height]``
|
||
|
:param Vector result: result
|
||
|
:returns: vector projected from screen space to object space
|
||
|
|
||
|
.. js:function:: x([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 3-dimensional y unit vector (1, 0, 0)
|
||
|
|
||
|
.. js:function:: y([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 3-dimensional y unit vector (0, 1, 0)
|
||
|
|
||
|
.. js:function:: z([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 3-dimensional z unit vector (0, 0, 1)
|
||
|
|
||
|
Vector4
|
||
|
--------
|
||
|
|
||
|
.. js:function:: x([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 4-dimensional y unit vector (1, 0, 0, 0)
|
||
|
|
||
|
.. js:function:: y([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 4-dimensional y unit vector (0, 1, 0, 0)
|
||
|
|
||
|
.. js:function:: z([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 4-dimensional z unit vector (0, 0, 1, 0)
|
||
|
|
||
|
.. js:function:: w([result])
|
||
|
|
||
|
:param Vector result: result
|
||
|
:returns: 4-dimensional w unit vector (0, 0, 0, 1)
|
||
|
|
||
|
Quaternion
|
||
|
----------
|
||
|
|
||
|
.. js:function:: inverse(q[, result])
|
||
|
|
||
|
:param Quaternion q: quaternion
|
||
|
:param Quaternion result: result
|
||
|
:returns: inverse of ``q``
|
||
|
|
||
|
.. js:function:: conjugate(q[, result])
|
||
|
|
||
|
:param Quaternion q: quaternion
|
||
|
:param Quaternion result: result
|
||
|
:returns: conjugate of ``q``
|
||
|
|
||
|
.. js:function:: identity([result])
|
||
|
|
||
|
:param Quaternion result: result
|
||
|
:returns: the identity quaternion (0, 0, 0, 1)
|
||
|
|
||
|
.. js:function:: slerp(q1, q2, s[, result])
|
||
|
|
||
|
:param Quaternion q1: origin quaternion
|
||
|
:param Quaternion q2: target quaternion
|
||
|
:param number s: interpolation scalar
|
||
|
:param Quaternion result: result
|
||
|
:returns: spherical linear interpolation between ``q1`` and ``q2``
|
||
|
|
||
|
.. js:function:: rotation(v1, v2[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Vector v1: origin vector
|
||
|
:param Vector v2: target vector
|
||
|
:param Quaternion result: result
|
||
|
:returns: quaternion of rotation between two 3-dimensional vectors
|
||
|
|
||
|
.. js:function:: toAxisAngle(q[, result])
|
||
|
|
||
|
:param Quaternion q: quaternion
|
||
|
:param Vector result: result
|
||
|
:returns: axis-angle representated as a 3-dimensional vector
|
||
|
|
||
|
.. js:function:: fromAxisAngle(v[, result])
|
||
|
|
||
|
:param Vector v: vector
|
||
|
:param Quaternion result: result
|
||
|
:returns: quaternion computed from axis-angle as a 3-dimensional vector
|
||
|
|
||
|
Matrix
|
||
|
------
|
||
|
|
||
|
.. js:function:: multiply(m1, m2[, reuslt])
|
||
|
|
||
|
:param Matrix m1: first matrix
|
||
|
:param Matrix m2: second matrix
|
||
|
:param Matrix result: result
|
||
|
:returns: the matrix product of ``m1`` with ``m2``
|
||
|
|
||
|
.. js:function:: inverse(m[, result])
|
||
|
|
||
|
.. note:: Valid for square matrices only
|
||
|
|
||
|
:param Matrix m: square matrix
|
||
|
:param Matrix result: result
|
||
|
:returns: inverse of ``m``
|
||
|
|
||
|
.. js:function:: transpose(m[, result])
|
||
|
|
||
|
.. note:: Implemented for square matrices only
|
||
|
|
||
|
:param Matrix m: matrix
|
||
|
:param Matrix result: result
|
||
|
:returns: transpose of ``m``
|
||
|
|
||
|
.. js:function:: identity(m)
|
||
|
|
||
|
.. note:: Valid for square matrices only
|
||
|
|
||
|
:param Matrix m: square matrix
|
||
|
:returns: identity matrix
|
||
|
|
||
|
.. js:function:: identity(d)
|
||
|
|
||
|
:param number d: dimension
|
||
|
:returns: identity matrix of dimension ``d``
|
||
|
|
||
|
.. js:function:: extract(m, rowOffset, columnOffset, rows, columns[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Matrix m: matrix
|
||
|
:param number rowOffset: starting row
|
||
|
:param number columnOffset: starting column
|
||
|
:param number rows: number of rows to extract
|
||
|
:param number columns: number of columns to extract
|
||
|
:param Matrix result: result
|
||
|
:returns: sub-matrix of ``m``
|
||
|
|
||
|
Matrix2
|
||
|
-------
|
||
|
|
||
|
.. js:function:: toAngle(m)
|
||
|
|
||
|
:param Matrix m: rotation matrix
|
||
|
:returns: angle in radians
|
||
|
|
||
|
.. js:function:: fromAngle(angle[, result])
|
||
|
|
||
|
:param number angle: angle in radians
|
||
|
:param Matrix result: result
|
||
|
:returns: 2-dimensional rotation matrix
|
||
|
|
||
|
Matrix3
|
||
|
-------
|
||
|
|
||
|
.. js:function:: toQuaternion(m[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Matrix m: rotation matrix
|
||
|
:param Quaternion result: result
|
||
|
:returns: quaternion rotation
|
||
|
|
||
|
.. js:function:: fromQuaternion(q[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Quaternion q: quaternion
|
||
|
:param Matrix result: matrix
|
||
|
:returns: rotation matrix
|
||
|
|
||
|
.. js:function:: toAxisAngle(m[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Matrix m: matrix
|
||
|
:param Vector result: vector
|
||
|
:returns: axis-angle vector
|
||
|
|
||
|
.. js:function:: fromAxisAngle(v[, result])
|
||
|
|
||
|
.. note:: Not yet implemented
|
||
|
|
||
|
:param Vector v: axis-angle vector
|
||
|
:param Matrix result: result
|
||
|
:returns: rotation matrix
|
||
|
|
||
|
Transform
|
||
|
---------
|
||
|
|
||
|
.. js:function:: translate(left, right[, result])
|
||
|
|
||
|
.. note:: One of the operands must be a Transform
|
||
|
|
||
|
:param left: left operand
|
||
|
:param right: right operand
|
||
|
:param Transform result: result
|
||
|
:returns: transform with translation applied
|
||
|
|
||
|
The translation should be expressed as a 3-dimensional vector.
|
||
|
|
||
|
.. js:function:: rotate(left, right[, result])
|
||
|
|
||
|
.. note:: One of the operands must be a Transform
|
||
|
|
||
|
:param left: left operand
|
||
|
:param right: right operand
|
||
|
:param Transform result: result
|
||
|
:returns: transform with rotation applied
|
||
|
|
||
|
The rotation should be expressed as an angle or rotation matrix for 2 dimensions, or rotation matrix, axis-angle or quaternion for 3 dimensions.
|
||
|
|
||
|
.. js:function:: scale(left, right[, result])
|
||
|
|
||
|
.. note:: One of the operands must be a Transform
|
||
|
|
||
|
:param left: left operand
|
||
|
:param right: right operand
|
||
|
:param Transform result: result
|
||
|
:returns: transform with scaling applied
|
||
|
|
||
|
The scaling should be expressed as a vector, with each component specifying the factor in the corresponding dimension.
|
||
|
|
||
|
.. js:function:: linear(t[, result])
|
||
|
|
||
|
:param Transform t: transform
|
||
|
:param Matrix result: result
|
||
|
:returns: linear part (rotation and scaling) of the affine transform
|
||
|
|
||
|
.. js:function:: svd(t, translation, rotation, scaling)
|
||
|
|
||
|
:param Transform t: transform
|
||
|
:param Vector translation: result vector to store translation
|
||
|
:param Quaternion rotation: result quaternion to store rotation
|
||
|
:param Vector scaling: result vector to store scaling
|