C++ extension Vector Mathematics Package for 3D and 2D games.
Project description
pyvmath
C++ extension Vector Mathematics Package for 3D and 2D games.
objects
vec2 a 2-D vector in array-of-structures format
vec3 a 3-D vector in array-of-structures format
vec4 a 4-D vector in array-of-structures format
quat quaternion in array-of-structures format
mat22 a 2x2 matrix in array-of-structures format
mat33 a 3x3 matrix in array-of-structures format
mat44 a 4x4 matrix in array-of-structures format
functions
add
add two vectors or two matrices c = add(a, b)
sub
sub two vectors or two matrices c = sub(a, b)
mul
multiply 2 elements c = mul(a, b)
the following combinations are possible
vector = vector x scalar matrix = matrix x scalar vector = matrix x vector (transform vector) matrix = matrix x matrix quatanion = quatanion x quatanion vector = vector * vector (multiply per element)
div
division vector by a scalar vector = div(vector, scalar)
division vector per element vector = div(vector, vector)
recip
compute the reciprocal of a vector per element vector = recip(vector)
sqrt
compute the square root of a vector per element vector = sqrt(vector)
rsqrt
compute the reciprocal square root of a vector per element vector = rsqrt(vector)
abs
compute the absolute value of a vector per element vector = abs(vector)
max
maximum element of a vector scalar = max(vector)
min
minimum element of a vector scalar = min(vector)
maxElem
maximum of two vectors per element vector = matElem(vector,vector)
minElem
minimum of two vectors per element vector = minElem(vector, vector)
sum
compute the sum of all elements of a vector scalar = sum(vector)
dot
compute the dot product of two vectors scalar = dot(vector, vector)
lengthSqr
compute the square of the length of a vector scalar = lengthSqr(vector)
length
compute the length of a vector scalar = length(vector)
normalize
normalize a vector vector = normalize(vector)
cross
compute cross product of two vectors scalar = cross(vec2, vec2) vec3 = cross(vec3, vec3)
lerp
linear interpolation between two vectors vector = lerp(t, vector, vector) (0<= t <= 1)
slerp
spherical linear interpolation between two vectors vector = slerp(t, vector, vector) (0<= t <= 1)
quat_rotation
construct a quaternion quat = quat_rotation(vec3, vec3)
construct a quaternion to rotate between two unit - length 3D vectors the result is unpredictable if 2 vectors point in opposite directions quat = quat_rotation(scalar, vec3)
construct a quaternion to rotate around a unit-length 3D vector quat = quat_rotation(scalar) construct a quaternion to rotate around a Z(0,0,1) axis
quat_rotationX
construct a quaternion to rotate around the x axis quat = quat_rotationX(radian)
quat_rotationY
construct a quaternion to rotate around the y axis quat = quat_rotationY(radian)
quat_rotationZ
construct a quaternion to rotate around the z axis quat = quat_rotationZ(radian)
conj
compute the conjugate of a quaternion quat = conj(quat)
squad
spherical quadrangle interpolation quat = squad(t,quat, quat, quat, quat)
rotate
use a unit - length quaternion to rotate a 3D vector vec = rotate(vec, quat)
mat_rotation
construct a matrix to rotate around a unit-length 3D vector matrix = mat_rotation(radian, dimension, vector) dimension is 2 or 3 or 4 to output matrix if you omit vector, Zaxis(0,0,1) will be entered as default
mat_rotationX
construct a matrix to rotate around the Xaxis matrix = mat_rotationX(radian, dimension) dimension is 2 or 3 or 4 to output matrix
mat_rotationY
construct a matrix to rotate around the Yaxis matrix = mat_rotationY(radian, dimension) dimension is 2 or 3 or 4 to output matrix
mat_rotationZ
construct a matrix to rotate around the Zaxis matrix = mat_rotationZ(radian, dimension) dimension is 2 or 3 or 4 to output matrix
mat_rotationZYX
construct a matrix to rotate around the x, y, and z axes matrix = mat_rotationZYX( (xradian, yradian, zradian) )
mat_identity
construct an identity matrix matrix = mat_identity(dimension) dimension is 2 or 3 or 4 to output matrix
mat_scale
construct a matrix to perform scaling matrix = mat_scale(vector, dimension) dimension is 2 or 3 or 4 to output matrix
mat_translation
construct a 4x4 matrix to perform translation matrix = mat_translation(vector)
transpose
transpose of a matrix matrix = transpose(matrix)
inverse
compute the inverse of a matrix matrix = inverse(matrix)
orthoInverse
compute the inverse of a 4x4 matrix, which is expected to be an affine matrix with an orthogonal upper-left 3x3 submatrix this can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions matrix = orthoInverse(matrix)
determinant
determinant of a matrix scalar = determinant(matrix)
appendScale
append (post-multiply) a scale transformation to a matrix faster than creating and multiplying a scale transformation matrix matrix = appendScale(matrix, vector)
prependScale
prepend (pre-multiply) a scale transformation to a 4x4 matrix faster than creating and multiplying a scale transformation matrix matrix = prependScale(matrix, vector)
lookAt
construct viewing matrix based on eye position, position looked at, and up direction matrix4 = lookAt(eyeVector, lookatVector, upVector)
perspective
construct a perspective projection matrix matrix4 = perspective(fovyRadians, aspect, zNear, zFar)
frustum
construct a perspective projection matrix based on frustum matrix4 = frustum(left, right, bottom, top, zNear, zFar) (all scalar value)
orthographic
construct an orthographic projection matrix matrix4 = orthographic(left, right, bottom, top, zNear, zFar) (all scalar value)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.