vrml.vrml97.transformmatrix
index
/home/mcfletch/pylive/vrml/vrml97/transformmatrix.py

Utility module for creating transformation matrices
 
Basically this gives you the ability to construct
transformation matrices without needing OpenGL
or similar run-time engines.  The result is that
design-time utilities can process files without
trading dependencies on a particular run-time.
 
This code is originally from the mcf.vrml processing
engine, and has only been cosmetically altered to
fit the new organizational pattern.
 
Note: to apply these matrices to a particular coordinate,
you would do the following:
 
    p = ones( 4 )
    p[:3] = coordinate
    return dot( p, matrix)
 
That is, you use the homogenous coordinate, and
make it the first item in the dot'ing.

 
Modules
       
numpy.add_newdocs
numpy.core.defchararray
numpy.ctypeslib
numpy.lib.scimath
numpy.fft
vrml_accelerate.frustcullaccelnumpy
numpy.linalg
numpy.ma
math
numpy.random
numpy.core.records
vrml_accelerate.tmatrixaccelnumpy

 
Functions
       
center(translation=(0, 0, 0), center=(0, 0, 0), parentMatrix=None)
Determine the center of rotation for a transform node
 
Returns the parent-space coordinate of the
node's center of rotation.
itransformMatrix(translation=(0, 0, 0), center=(0, 0, 0), rotation=(0, 1, 0, 0), scale=(1, 1, 1), scaleOrientation=(0, 1, 0, 0), parentMatrix=None)
Convert VRML transform values to an inverse transform matrix
 
Returns 4x4 transformation matrix
Note that this uses VRML standard for rotations
(angle last, and in radians).
 
This should return matrices which, when applied to
parent-space coordinates, give you local-space
coordinates for the corresponding transform.
 
Note: this is a substantially un-tested algorithm
though it seems to be properly constructed as far
as I can see.  Whether to use dot(x, parentMatrix)
or the reverse is not immediately clear to me.
 
parentMatrix if provided, should be the child's
transformation matrix, a 4x4 matrix of such as
returned by this function.
perspectiveMatrix(fovy, aspect, zNear, zFar)
Create a perspective matrix from given parameters
 
Note that this is the same matrix as for gluPerspective,
save that we are using radians...
rotMatrix(...)
rotMatrix( [x,y,z,a] )
C accellerator for vrml.vrml97.transformmatrix.rotMatrix
x,y,z,a -- Python object compatible with Numeric double array
        a is expressed in radians, as normal for Python and VRML97
 
returns a 4x4 rotation matrix for the given scale and
the inverse of the rotation.
scaleMatrix(...)
scaleMatrix( [x,y,z] )
C accellerator for vrml.vrml97.transformmatrix.scaleMatrix
x,y,z -- Python object compatible with Numeric double array
 
returns a 4x4 translation matrix for the given scale and
the inverse of the scale.
transMatrix(...)
transMatrix( [x,y,z] )
C accellerator for vrml.vrml97.transformmatrix.transMatrix
x,y,z -- Python object compatible with Numeric double array
 
returns a 4x4 translation matrix for the given translation and
the inverse of the translation.
transformMatrix(translation=(0, 0, 0), center=(0, 0, 0), rotation=(0, 1, 0, 0), scale=(1, 1, 1), scaleOrientation=(0, 1, 0, 0), parentMatrix=None)
Convert VRML transform values to an overall matrix
 
Returns 4x4 transformation matrix
Note that this uses VRML standard for rotations
(angle last, and in radians).
 
This should return matrices which, when applied to
local-space coordinates, give you parent-space
coordinates.
 
parentMatrix if provided, should be the parent's
transformation matrix, a 4x4 matrix of such as
returned by this function.

 
Data
        DEGTORAD = 0.017453292519943295
ORIGINPOINT = array([ 0., 0., 0., 1.])
RADTODEG = 57.295779513082323
TWOPI = 6.2831853071795862
__file__ = '/home/mcfletch/pylive/vrml/vrml97/transformmatrix.pyc'
__name__ = 'vrml.vrml97.transformmatrix'
__package__ = 'vrml.vrml97'
divide_safe = <ufunc 'divide'>
implementation_name = 'numpy'