Samples/Math/MathUtilities.py
 
 
 
Samples/Math/MathUtilities.py
# Copyright 2009 Autodesk, Inc.  All rights reserved.
# Use of this software is subject to the terms of the Autodesk license agreement 
# provided at the time of installation or download, or which otherwise accompanies
# this software in either electronic or hard copy form.
#
# Script description:
# Show the global functions for math
#
# Topic: Matrix, T,R,S to Matrix, Matrix to T,R,S, Local/Global conversions, Vector operations,
# Quaternion operations, Vertex operations, Rotation utilities, Miscellaneous utilities
#

from pyfbsdk import *

lMatrix = FBMatrix()
lMatrixResult = FBMatrix()

lVertex = FBVertex()
lVertexResult = FBVertex()

lVector4d = FBVector4d()
lVector4dResult = FBVector4d()

lVector3d = FBVector3d()
lVector3dResult = FBVector3d()

lSVector = FBSVector()
lSVectorResult = FBSVector()

lDouble = 1.0
lDoubleResult = 1.0

# Matrix
FBMatrixInverse(lMatrixResult,lMatrix)
FBMatrixInverse(lMatrixResult,lMatrix)
FBMatrixTranspose(lMatrixResult,lMatrix)

FBMatrixMult(lMatrixResult,lMatrix,lMatrix)
FBVertexMatrixMult(lVertexResult, lMatrix, lVertex)
FBVectorMatrixMult(lVector4d, lMatrix, lVector4d)

# T,R,S to Matrix
FBTranslationToMatrix(lMatrixResult, lVector4d)
FBRotationToMatrix(lMatrixResult, lVector3d, FBRotationOrder.kFBXYZ)
FBScalingToMatrix(lMatrixResult, lSVector)
FBTRSToMatrix(lMatrixResult, lVector4d, lVector3d, lSVector)

# Matrix to T,R,S
FBMatrixToTranslation(lVector4d, lMatrix)
FBMatrixToRotation(lVector3d, lMatrix, FBRotationOrder.kFBXYZ)
FBMatrixToScaling(lSVector, lMatrix)
FBMatrixToTRS(lVector4d, lVector3d, lSVector, lMatrix)

# Quaternion
FBRotationToQuaternion(lVector4d, lVector3d, FBRotationOrder.kFBXYZ)
FBQuaternionToRotation(lVector3d, lVector4d, FBRotationOrder.kFBXYZ)

# Local/Global conversions
FBGetLocalMatrix(lMatrixResult, lMatrix, lMatrix)
FBGetGlobalMatrix(lMatrixResult, lMatrix, lMatrix)
FBMatrixOrthogonalize(lMatrix)

# Vector operations
FBAdd(lVector4dResult, lVector4d, lVector4d)
FBSub(lVector4dResult, lVector4d, lVector4d)
FBMult(lVector4dResult, lVector4d, lDouble)
FBMult(lVector4dResult, lVector4d, lVector4d)
FBMult(lMatrixResult, lMatrix, lSVector)
lDoubleResult = FBDot(lVector4d, lVector4d)
lDoubleResult = FBLength(lVector4d)

# Quaternion operations
FBQAdd(lVector4dResult, lVector4d, lVector4d)
FBQSub(lVector4dResult, lVector4d, lVector4d)
FBQMult(lVector4dResult, lVector4d, lDouble)
FBQMult(lVector4dResult, lVector4d, lVector4d)
lDoubleResult = FBQDot(lVector4d, lVector4d)
lDoubleResult = FBQLength(lVector4d)

# Vertex operations
lDoubleResult = FBLength(lVertex)

# Rotation utilities
FBInterpolateRotation(lVector3dResult, lVector3d, lVector3d, lDouble)
FBInterpolateRotation(lVector4dResult, lVector4d, lVector4d, lDouble)
FBGetContinuousRotation(lVector3dResult, lVector3d, lVector3d)

# Miscellaneous utilities
FBClamp(lDoubleResult, lDouble, lDouble)

print lMatrix
print lMatrixResult
print lVertex
print lVertexResult
print lVector4d
print lVector4dResult
print lVector3d
print lVector3dResult
print lSVector
print lSVectorResult
print lDouble
print lSVectorResult