- vtkPolyData *ttt = (vtkPolyData *)GetDataObject();
- int numPnts = ttt->GetNumberOfPoints();
-// printf("EED vtkTensorsVisu::Process numPnts %d \n", numPnts );
-
- vtkIdType numSourcePts, numSourceCells;
- vtkPoints *sourcePts;
- sourcePts = tg->GetSource()->GetPoints();
- numSourcePts = sourcePts->GetNumberOfPoints();
- numSourceCells = tg->GetSource()->GetNumberOfCells();
-// printf("EED vtkTensorsVisu::Process numSourcePts %d numSourceCells %d\n", numSourcePts, numSourceCells);
-
- vtkDataArray *tensorsArray = pointdata_do->GetArray("tensors");
- if (tensorsArray)
- {
- vtkFloatArray *newScalarArray = vtkFloatArray::New();
- newScalarArray->SetName( "NormalsEED" );
- newScalarArray->SetNumberOfComponents(3);
- int iNumPts,iNumSourcePts;
- int iNormalsEED=0;
- double *normalValue;
- double sumEigenvalue,sumEigenvalue1,sumEigenvalue2,sumEigenvalue3;
- double dirx,diry,dirz;
- int idEigen;
- for (iNumPts=0;iNumPts<numPnts;iNumPts++)
- {
- normalValue = tensorsArray->GetTuple9(iNumPts);
- sumEigenvalue1 = sqrt (normalValue[0]*normalValue[0] + normalValue[1]*normalValue[1] + normalValue[2]*normalValue[2]);
- sumEigenvalue2 = sqrt (normalValue[3]*normalValue[3] + normalValue[4]*normalValue[4] + normalValue[5]*normalValue[5]);
- sumEigenvalue3 = sqrt (normalValue[6]*normalValue[6] + normalValue[7]*normalValue[7] + normalValue[8]*normalValue[8]);
-
- if ((sumEigenvalue1>=sumEigenvalue2) && (sumEigenvalue1>=sumEigenvalue3))
- {
- sumEigenvalue=sumEigenvalue1;
- idEigen=0;
- }
- if ((sumEigenvalue2>sumEigenvalue1) && (sumEigenvalue2>=sumEigenvalue3))
- {
- sumEigenvalue=sumEigenvalue2;
- idEigen=3;
- }
- if ((sumEigenvalue3>=sumEigenvalue1) && (sumEigenvalue3>=sumEigenvalue2))
- {
- sumEigenvalue=sumEigenvalue3;
- idEigen=6;
- }
-
- dirx = fabs(normalValue[idEigen+0]/sumEigenvalue);
- diry = fabs(normalValue[idEigen+1]/sumEigenvalue);
- dirz = fabs(normalValue[idEigen+2]/sumEigenvalue);
-//printf("%f %f %f\n",dirx, diry,dirz );
-//printf("%f %f %f\n",sumEigenvalue1, sumEigenvalue2, sumEigenvalue3 );
-//printf("%f %f %f\n", normalValue[0], normalValue[1], normalValue[2] );
-
-
- for (iNumSourcePts=0;iNumSourcePts<numSourcePts;iNumSourcePts++)
- {
- newScalarArray->InsertTuple3( iNormalsEED, dirx,diry,dirz );
- iNormalsEED++;
- } // for iNumSourcePts
-
- }
- pointdata_tg->RemoveArray( "NormalsEED" );
- pointdata_tg->AddArray( newScalarArray );
- pointdata_pdn->Update();
- tg->Update();
- }