Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

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.

Files for pyvmath, version 0.3.4
Filename, size File type Python version Upload date Hashes
Filename, size pyvmath-0.3.4.tar.gz (21.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page