Beispiel #1
0
MsqMatrix<3,2> LVQDTargetTest::target( const double* L, 
                                       const MsqMatrix<3,2>* V, 
                                       const MsqMatrix<2,2>* Q, 
                                       const MsqMatrix<2,2>* D )
{
  ConstantTarget W_size  ( L ? *L : 1.0, true );
  ConstantTarget W_orient( V ? *V : I32 );
  ConstantTarget W_skew  ( Q ? *Q : I22 );
  ConstantTarget W_aspect( D ? *D : I22 );
  LVQDTargetCalculator LVQD( L ? &W_size   : NULL,
                             V ? &W_orient : NULL,
                             Q ? &W_skew   : NULL,
                             D ? &W_aspect : NULL );
  MsqError err;
  MsqMatrix<3,2> W;
  bool v;
  if (!V) {
    MsqMatrix<2,2> W_2D;
    v = LVQD.get_2D_target( pd2D, 0, Sample(0,0), W_2D, err );
    W.set_row( 0, W_2D.row(0) );
    W.set_row( 1, W_2D.row(1) );
    W.set_row( 2, MsqMatrix<1,2>(0.0) );
  }
  else {
    v = LVQD.get_surface_target( pd2D, 0, Sample(0,0), W, err );
  }
  ASSERT_NO_ERROR(err);
  CPPUNIT_ASSERT(v);
  return W;
}
Beispiel #2
0
 bool get_surface_target( PatchData& pd, 
                          size_t element,
                          Sample sample,
                          MsqMatrix<3,2>& W_out,
                          MsqError& err )
 { MsqMatrix<2,2> W;
   bool rval = get_2D_target( pd, element, sample, W, err );
   W_out.set_row( 0, W.row(0) );
   W_out.set_row( 1, W.row(1) );
   W_out.set_row( 2, MsqMatrix<1,2>(0.0) );
   return rval;
 }