1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
void Action_Signal3DRepresentation::plot3D(SignalTextFiles * comp, SignalTextFiles * comp1, SignalTextFiles * comp2){
QString compName = comp->getFileName();
QString compName1 = comp1->getFileName();
QString compName2 = comp2->getFileName();
/*
vtkFloatArray* pcoords = vtkFloatArray::New();
pcoords->SetNumberOfComponents(3);
pcoords->SetNumberOfTuples(4);
pcoords->SetTuple3(0, 0.0, 0.0, 0.0);
pcoords->SetTuple3(1, 1.0, 1.0, 1.0);
pcoords->SetTuple3(2, 2.0, 2.0, 2.0);
pcoords->SetTuple3(3, 3.0, 3.0, 3.1);
vtkDoubleArray * data = vtkDoubleArray::New();
pcoords->GetData(3, 3, 2, 2,data);
float value = data->GetValue(0);
*/
int numbPoints = comp->setNumberOfPOints(compName);
double i;
//Créer le tableau
vtkFloatArray* pcoords = vtkFloatArray::New();
//Définir trois éléments au lieu d'un (pour points de coordonnées 3D)
pcoords->SetNumberOfComponents(3);
pcoords->SetNumberOfTuples(numbPoints);
//Récupérer La valeur des signaux, soient les cordonnées x, y, z des points
QList <float> list = comp->setValues(compName);
QList <float> list1 = comp->setValues(compName1);
QList <float> list2 = comp->setValues(compName2);
for (i = 0.0; i < numbPoints; i++)
{
//remplir les lignes du tablau
pcoords->SetTuple3(i, list[i], list1[i], list2[i]);
}
//On vérirfie que pcoords est rempli avec les bonnes valeurs
vtkDoubleArray * data = vtkDoubleArray::New();
pcoords->GetData(0, 0, 0, 0, data);
float value = data->GetValue(0);
// Attribuer aux points, leur valeur
vtkPoints* points = vtkPoints::New();
points->SetData(pcoords);
vtkPolyData *poly = vtkPolyData::New();
poly->SetPoints(points);
// Create the mapper and set the appropriate scalar range
// (default is (0,1)
vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
mapper->SetInput(poly);
mapper->SetScalarRange(0, 0.5);
vtkActor* actor = vtkActor::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetColor(0, 1, 0);
// Create the rendering objects.
vtkRenderer* ren = vtkRenderer::New();
ren->AddActor(actor);
ren->SetBackground(1,1, 1);
vtkRenderWindow* renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren);
renWin->Render();
vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
} |
Partager