Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvmath-0.1.5.tar.gz (19.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page