42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Crytek Engine Source File.
|
|
// Copyright (C), Crytek Studios, 2002.
|
|
// -------------------------------------------------------------------------
|
|
// File name: affineparts.h
|
|
// Version: v1.00
|
|
// Created: 19/8/2002 by Timur.
|
|
// Compilers: Visual Studio.NET
|
|
// Description:
|
|
// -------------------------------------------------------------------------
|
|
// History:
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __affineparts_h__
|
|
#define __affineparts_h__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
struct AffineParts
|
|
{
|
|
Vec3 pos; //!< Translation components
|
|
Quat rot; //!< Essential rotation.
|
|
Quat rotScale; //!< Stretch rotation.
|
|
Vec3 scale; //!< Stretch factors.
|
|
float fDet; //!< Sign of determinant.
|
|
|
|
/** Decompose matrix to its affnie parts.
|
|
*/
|
|
void Decompose( const Matrix44 &mat );
|
|
|
|
/** Decompose matrix to its affnie parts.
|
|
Assume there`s no stretch rotation.
|
|
*/
|
|
void SpectralDecompose( const Matrix44 &mat );
|
|
};
|
|
|
|
#endif // __affineparts_h__
|