Source code for mm.mm_math

import math

[docs]def addvs(vec,s): """add scalar to elements of vector""" return map(lambda x: x+s, vec)
[docs]def subvs(vec,s): """subtract scalar from elements of vector""" return map(lambda x: x-s, vec)
[docs]def mulvs(vec,s): """multiply elements of vector by scalar""" return map(lambda x: x*s, vec)
[docs]def divvs(vec,s): """divide elements of vector by scalar""" return map(lambda x: x/s, vec)
[docs]def addv3s(vec, scalar): """add scalar to elements of 3-vector""" return (vec[0]+scalar, vec[1]+scalar, vec[2]+scalar)
[docs]def subv3s(vec, scalar): """subtract scalar from elements of 3-vector""" return (vec[0]-scalar, vec[1]-scalar, vec[2]-scalar)
[docs]def mulv3s(vec, scalar): """multiply elements of 3-vector by scalar""" return (vec[0]*scalar, vec[1]*scalar, vec[2]*scalar)
[docs]def divv3s(vec, scalar): """divide elements of 3-vector by scalar""" return (vec[0]/scalar, vec[1]/scalar, vec[2]/scalar)
[docs]def negv3(a): """negate 3-vector""" return (-a[0], -a[1], -a[2])
[docs]def subv3(a, b): """subtract 3-vector b from a""" return (a[0]-b[0], a[1]-b[1], a[2]-b[2])
[docs]def addv3(a, b): """add 3-vector b to a""" return (a[0]+b[0], a[1]+b[1], a[2]+b[2])
[docs]def dotv3(a,b): """dot product of 3-vectors a and b""" return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
[docs]def lerpv3(a,b,t): """linear interplation (1-t)*a + (t)*b""" return ( (1-t)*a[0] + (t)*b[0], (1-t)*a[1] + (t)*b[1], (1-t)*a[2] + (t)*b[2] )
[docs]def deg_to_rad(angle): """convert angle from degrees to radians""" return angle * math.pi / 180.0
[docs]def rad_to_deg(angle): """convert angle from radians to degrees""" return angle * 180.0 / math.pi
[docs]def make_rotX_matrix(angle): """construct matrix that rotates around X axis by angle (in radians)""" c0 = math.cos(angle) s0 = math.sin(angle) return ( 1, 0, 0, 0, c0, -s0, 0, s0, c0 )
[docs]def make_rotY_matrix(angle): """construct matrix that rotates around Y axis by angle (in radians)""" c0 = math.cos(angle) s0 = math.sin(angle) return ( c0, 0, s0, 0, 1, 0, -s0, 0, c0 )
[docs]def make_rotZ_matrix(angle): """construct matrix that rotates around Z axis by angle (in radians)""" c0 = math.cos(angle) s0 = math.sin(angle) return ( c0, -s0, 0, s0, c0, 0, 0, 0, 1 )
[docs]def make_matrix_from_axes(x,y,z): """construct orientation matrix from basis vectors""" return ( x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2] )
[docs]def transpose(matrix): """return the transpose of a matrix stored as a 9-element tuple""" return (matrix[0], matrix[3], matrix[6], matrix[1], matrix[4], matrix[7], matrix[2], matrix[5], matrix[8])