コード例 #1
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_scale    (T s)                {
     return matrix3x2(s  ,0,0,s  ,0  ,0  );
 }
コード例 #2
0
ファイル: Matrix.cpp プロジェクト: ServerGame/GameEngine
/**
 ****************************************************************************************************
	\fn			void UnitTest( void )
	\brief		The unit test of Matrix class
	\param		NONE
	\return		NONE
 ****************************************************************************************************
*/
void GameEngine::Math::Matrix::UnitTest( void )
{
	FUNCTION_START;

	Matrix matrix2x2( 2, 2 );

	// Check creation
	for( UINT8 i = 0; i < 2; ++i )
	{
		for( UINT8 j = 0; j < 2; ++j )
			assert( matrix2x2(i, j) == 0 );
	}

	// Check matrix identity
	matrix2x2(0, 0) = 1;
	matrix2x2(0, 1) = 2;
	matrix2x2(1, 0) = 3;
	matrix2x2(1, 1) = 4;
	Matrix identityMatrix( 2, 2 );
	identityMatrix(0, 0) = 1;
	identityMatrix(1, 1) = 1;
	Matrix m( 2, 2 );
	m = matrix2x2.Identity();
	assert( matrix2x2.Identity() == identityMatrix );

	// Check matrix transpose
	Matrix matrix2x3( 2, 3 );
	matrix2x3( 0, 0 ) = 1;
	matrix2x3( 0, 1 ) = 2;
	matrix2x3( 0, 2 ) = 3;
	matrix2x3( 1, 0 ) = 4;
	matrix2x3( 1, 1 ) = 5;
	matrix2x3( 1, 2 ) = 6;
	matrix2x3.Transpose();
	Matrix matrix3x2( 3, 2 );
	matrix3x2( 0, 0 ) = 1;
	matrix3x2( 0, 1 ) = 4;
	matrix3x2( 1, 0 ) = 2;
	matrix3x2( 1, 1 ) = 5;
	matrix3x2( 2, 0 ) = 3;
	matrix3x2( 2, 1 ) = 6;
	assert( matrix2x3 == matrix3x2 );

	// Check matrix 3x3 inverse
	Matrix matrix3x3( 3, 3 );
	matrix3x3( 0, 0 ) = 2;
	matrix3x3( 0, 1 ) = -1;
	matrix3x3( 0, 2 ) = 3;
	matrix3x3( 1, 0 ) = 1;
	matrix3x3( 1, 1 ) = 6;
	matrix3x3( 1, 2 ) = -4;
	matrix3x3( 2, 0 ) = 5;
	matrix3x3( 2, 1 ) = 0;
	matrix3x3( 2, 2 ) = 8;
	Matrix matrix3x3Inverse( 3, 3 );
	Matrix3Inverse( matrix3x3, matrix3x3Inverse );
	assert( (matrix3x3 * matrix3x3Inverse) == matrix3x3.Identity() );

	// Check matrix 4x4 inverse
	Matrix matrix4x4( 4, 4 );
	matrix4x4( 0, 0 ) = 2;
	matrix4x4( 0, 1 ) = 3;
	matrix4x4( 0, 2 ) = 4;
	matrix4x4( 0, 3 ) = 5;
	matrix4x4( 1, 0 ) = 5;
	matrix4x4( 1, 1 ) = 7;
	matrix4x4( 1, 2 ) = 9;
	matrix4x4( 1, 3 ) = 9;
	matrix4x4( 2, 0 ) = 5;
	matrix4x4( 2, 1 ) = 8;
	matrix4x4( 2, 2 ) = 7;
	matrix4x4( 2, 3 ) = 4;
	matrix4x4( 3, 0 ) = 4;
	matrix4x4( 3, 1 ) = 3;
	matrix4x4( 3, 2 ) = 3;
	matrix4x4( 3, 3 ) = 2;
	Matrix matrix4x4Inverse( 4, 4 );
	Matrix4Inverse( matrix4x4, matrix4x4Inverse );
	Matrix matrix4x4Result( 4, 4 );
	matrix4x4Result = matrix4x4 * matrix4x4Inverse;
	assert( (matrix4x4 * matrix4x4Inverse) == matrix4x4.Identity() );

	FUNCTION_FINISH;
}
コード例 #3
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_scale    (T x, T y)           {
     return matrix3x2(x,  0,0,y,  0  ,0  );
 }
コード例 #4
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_scale    (const point2<T>& s) {
     return matrix3x2(s.x,0,0,s.y,0  ,0  );
 }
コード例 #5
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_translate(T x, T y)           {
     return matrix3x2(1  ,0,0,1  ,x,  y  );
 }
コード例 #6
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_translate(const point2<T>& t) {
     return matrix3x2(1  ,0,0,1  ,t.x,t.y);
 }
コード例 #7
0
ファイル: affine.hpp プロジェクト: JohanAberg/Ramen
 static matrix3x2 get_rotate(T rads)                {
     T c=std::cos(rads);
     T s=std::sin(rads);
     return matrix3x2(c,s,-s,c,0,0);
 }