1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

VisualizationToolkit - Meshresolution, Cells

    • Frage
  • markus
  • 18. März 2004 um 13:40
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • markus
    Punkte
    225
    Beiträge
    31
    • 18. März 2004 um 13:40
    • #1

    hallo

    ich habe durch einlesen über vtkObjReader, weiterverarbeitet mit vtkTriangleFilter, vtkdecimate, vtkPolyDataNormals eine vtkpolydata, und ich möchte daraus den median der meshmaschenweite(abstand zwischen den einzelnen punkten) berechnen, bin mit aber nicht im klaren wie ich vorgehen soll. das soll als mass für die Resolution dienen (eine bereits implementierte methode habe ich nicht gefunden)

    cPoints=ViewNormals->GetOutput()->GetNumberOfCells();
    for(ID=0;ID<cPoints;ID++)
    {
    ViewNormals->GetOutput()->GetCell(ID,cell);
    cell->GetEdge(ID); //cell..vtkCell
    length[ID]=sqrt(cell->GetEdge(ID)->GetLength2()); //length..floatarray
    }

    ich bin mit jetzt nicht sicher ob der code stimmt, ich hab das feld ausgegeben und da gibts für gewissen feldelemente unmögliche (extrem große) werte, wo ich mir denk, der liest halt grad was zufällig am speicherplatz steht. Ich habe zweifel ob es richtig ist, die schleife über alle zellen laufen zu lassen. Kommt jede Kante genau einmal vor..?

    edge=cell->GetNumberOfEdges();

    habe ich versucht, liefert den wert 3. ich nehme mal an, dass das so sein muss weil ich vtkTriangleFilter angewendet habe.

    leider werd ich aus der Doku auch nicht mehr schlauer. freu mich über tipps

    danke
    markus

  • markus
    Punkte
    225
    Beiträge
    31
    • 24. März 2004 um 21:18
    • #2

    eine lösung, die ich gefunden habe:

    int i,k,l,edge,e=0;
    float dummy,median;
    float fBounds[6];
    vtkFloatArray *length = vtkFloatArray::New();
    vtkGenericCell *cell = vtkGenericCell::New();

    length->SetNumberOfTuples(1);
    for(i=0;i<ViewNormals->GetOutput()->GetNumberOfCells();i++)
    {
    ViewNormals->GetOutput()->GetCell(i,cell);
    for (edge=0;edge<cell->GetNumberOfEdges();edge++)
    {
    cell->GetEdge(edge);
    cell->GetEdge(edge)->GetBounds(fBounds);
    length->InsertNextValue(sqrt(pow(fBounds[1]-fBounds[0],2)+pow(fBounds[3]-fBounds[2],2)+pow(fBounds[5]-fBounds[4],2)));
    e++;
    }
    }

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum