コード例 #1
0
ファイル: TransformTests.cpp プロジェクト: dabroz/Tamy
TEST( Transform, planeTransformation )
{
  // construct a transformation we'll use for testing
   Transform trans;
   Matrix transformMtx;
   {
      Matrix m1, m2;
      EulerAngles angles;
      angles.set( FastFloat::fromFloat( 45.0f ), FastFloat::fromFloat( 60.0f ), FastFloat::fromFloat( -10.0f ) );
      m1.setTranslation( Vector( 1, 2, 3 ) );
      m2.setRotation( angles );
      transformMtx.setMul( m2, m1 );

      trans.set( transformMtx );
   }

   // create a test plane
   Plane testPlane;
   testPlane.set( Float_1, Float_0, Float_0, FastFloat::fromFloat( 10.0f ) );

   // transform the plane
   Plane tamyTransformedPlane;
   trans.transform( testPlane, tamyTransformedPlane );

   // let DX help us generate a transformed plane we can compare our results against
   D3DXPLANE dxTransformedPlane;
   D3DXMATRIX dxMtx = ( const D3DXMATRIX& )transformMtx;
   D3DXMatrixInverse( &dxMtx, NULL, &dxMtx );
   D3DXMatrixTranspose( &dxMtx, &dxMtx );
   D3DXPlaneTransform( &dxTransformedPlane, ( const D3DXPLANE* )&testPlane, &dxMtx );

   COMPARE_PLANE( dxTransformedPlane, tamyTransformedPlane );
}
コード例 #2
0
TEST( MatrixInterpolator, rotation )
{
   Matrix start;
   Matrix end;

   start.setIdentity();
   EulerAngles ea;
   ea.set( FastFloat::fromFloat( 90.0f ), Float_0, Float_0 );
   end.setRotation( ea );

   Matrix result;

   MatrixUtils::lerp( start, end, Float_0, result );
   COMPARE_MTX( start, result );

   MatrixUtils::lerp( start, end, Float_1, result );
   COMPARE_MTX( end, result );

   Matrix expectedResult;
   ea.set( FastFloat::fromFloat( 45.0f ), Float_0, Float_0 );
   expectedResult.setRotation( ea );
   MatrixUtils::lerp( start, end, Float_Inv2, result );
   COMPARE_MTX(expectedResult, result );
}