[vtkusers] vtkQuadHex test fails

Budd Hirons bhiron at lsuhsc.edu
Wed Apr 20 11:11:01 EDT 2005


Hello,

We are trying to exercise EvaluatePosition in vtkQuadraticHexahedron, 
and we find that the test included in the code only works of the point 
you are evaluating is at the parametric center of the cell points.

Is there a fix for this or is there something done wrong?  The code 
below is directly out of /Common/Testing/Cxx/quadraticEvaluation.cxx

rval is always -1 unless you set the point you are evaluating to 
.5,.5,.5 ...

Cheers,
Budd.


<code>

   vtkQuadraticHexahedron *hex = vtkQuadraticHexahedron::New();

   // vtkQuadraticHexahedron
   double hexPCoords[3], hexWeights[20], hexPosition[3];
   //double hexPoint[1][3] = {{0.25, 0.33333, 0.666667}};
	double hexPoint[1][3] = {{0.5, 0.51, 0.5}};

   double hexClosest[3];

   hex->GetPointIds()->SetId(0,0);
   hex->GetPointIds()->SetId(1,1);
   hex->GetPointIds()->SetId(2,2);
   hex->GetPointIds()->SetId(3,3);
   hex->GetPointIds()->SetId(4,4);
   hex->GetPointIds()->SetId(5,5);
   hex->GetPointIds()->SetId(6,6);
   hex->GetPointIds()->SetId(7,7);
   hex->GetPointIds()->SetId(8,8);
   hex->GetPointIds()->SetId(9,9);
   hex->GetPointIds()->SetId(10,10);
   hex->GetPointIds()->SetId(11,11);
   hex->GetPointIds()->SetId(12,12);
   hex->GetPointIds()->SetId(13,13);
   hex->GetPointIds()->SetId(14,14);
   hex->GetPointIds()->SetId(15,15);
   hex->GetPointIds()->SetId(16,16);
   hex->GetPointIds()->SetId(17,17);
   hex->GetPointIds()->SetId(18,18);
   hex->GetPointIds()->SetId(19,19);

   hex->GetPoints()->SetPoint( 0, 0, 0, 0  );
   hex->GetPoints()->SetPoint( 1, 1, 0, 0  );
   hex->GetPoints()->SetPoint( 2, 1, 1, 0  );
   hex->GetPoints()->SetPoint( 3, 0, 1, 0  );
   hex->GetPoints()->SetPoint( 4, 0, 0, 1  );
   hex->GetPoints()->SetPoint( 5, 1, 0, 1  );
   hex->GetPoints()->SetPoint( 6, 1, 1, 1  );
   hex->GetPoints()->SetPoint( 7, 0, 1, 1  );
   hex->GetPoints()->SetPoint( 8, 0.5, 0, 0);
   hex->GetPoints()->SetPoint( 9, 1, 0.5, 0);
   hex->GetPoints()->SetPoint(10, 0.5, 1, 0);
   hex->GetPoints()->SetPoint(11, 0, 0.5, 0);
   hex->GetPoints()->SetPoint(12, 0.5, 0, 1);
   hex->GetPoints()->SetPoint(13, 1, 0.5, 1);
   hex->GetPoints()->SetPoint(14, 0.5, 1, 1);
   hex->GetPoints()->SetPoint(15, 0, 0.5, 1);
   hex->GetPoints()->SetPoint(16, 0, 0, 0.5);
   hex->GetPoints()->SetPoint(17, 1, 0, 0.5);
   hex->GetPoints()->SetPoint(18, 1, 1, 0.5);
   hex->GetPoints()->SetPoint(19, 0, 1, 0.5);

   int subId = 0;
   double dist2 = 0.0;
   int rval = hex->EvaluatePosition(hexPoint[0], hexClosest, subId, 
hexPCoords, dist2, hexWeights);

   cout << rval << endl;

</code>




More information about the vtkusers mailing list