Added ASSIMP_API to aiCreateQuaternionFromMatrix and aiDecomposeMatrix.

Added aiDecomposeMatrix to PyAssimp.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@410 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
sueastside 2009-04-27 15:43:01 +00:00
parent e4cddb9e9d
commit b2ffa9dd1b
3 changed files with 26 additions and 6 deletions

View File

@ -368,13 +368,13 @@ ASSIMP_API void aiSetImportPropertyString(const char* szName,
}
// ------------------------------------------------------------------------------------------------
void aiCreateQuaternionFromMatrix(aiQuaternion* quat,const aiMatrix3x3* mat)
ASSIMP_API void aiCreateQuaternionFromMatrix(aiQuaternion* quat,const aiMatrix3x3* mat)
{
*quat = aiQuaternion(*mat);
}
// ------------------------------------------------------------------------------------------------
void aiDecomposeMatrix(const aiMatrix4x4* mat, aiVector3D* scaling,
ASSIMP_API void aiDecomposeMatrix(const aiMatrix4x4* mat, aiVector3D* scaling,
aiQuaternion* rotation,aiVector3D* position)
{
mat->Decompose(*scaling,*rotation,*position);

View File

@ -181,12 +181,12 @@ ASSIMP_API void aiSetImportPropertyString(const char* szName,
// ---------------------------------------------------------------------------
/** @see aiQuaternion(const aiMatrix3x3& pRotMatrix)
*/
void aiCreateQuaternionFromMatrix(C_STRUCT aiQuaternion* quat,const C_STRUCT aiMatrix3x3* mat);
ASSIMP_API void aiCreateQuaternionFromMatrix(C_STRUCT aiQuaternion* quat,const C_STRUCT aiMatrix3x3* mat);
// ---------------------------------------------------------------------------
/** @see aiMatrix4x4::Decompose (aiVector3D&, aiQuaternion&, aiVector3D&) const;
*/
void aiDecomposeMatrix(const C_STRUCT aiMatrix4x4* mat,
ASSIMP_API void aiDecomposeMatrix(const C_STRUCT aiMatrix4x4* mat,
C_STRUCT aiVector3D* scaling,
C_STRUCT aiQuaternion* rotation,
C_STRUCT aiVector3D* position);

View File

@ -96,6 +96,10 @@ class aiTuple:
return self._GetData(c)
def __getitem__(self, index):
if isinstance(index, slice):
indices = index.indices(len(self))
return [self.__getitem__(i) for i in range(*indices)]
if index < 0 or index >= self._GetSize():
raise IndexError("aiTuple index out of range")
return self._GetData(index)
@ -103,6 +107,9 @@ class aiTuple:
def __iter__(self):
return self
def __len__(self):
return int(self._GetSize())
def __str__(self):
return str([x for x in self])
@ -218,7 +225,7 @@ def aiGetMaterialString(material, key):
byref(out))
if (r != AI_SUCCESS):
raise AssimpError("aiGetMaterialFloatArray failed!")
raise AssimpError("aiGetMaterialString failed!")
return str(out.data)
@ -249,3 +256,16 @@ def GetMaterialProperties(material):
result[key] = value
return result
def aiDecomposeMatrix(matrix):
if not isinstance(matrix, structs.Matrix4x4):
raise AssimpError("aiDecomposeMatrix failed: Not a aiMatrix4x4!")
scaling = structs.Vector3D()
rotation = structs.Quaternion()
position = structs.Vector3D()
from ctypes import byref, pointer
_assimp_lib.dll.aiDecomposeMatrix(pointer(matrix), byref(scaling), byref(rotation), byref(position))
return scaling._init(), rotation._init(), position._init()