2012-03-11 2 views
0

У меня есть основной привет мир программа libvtk рабочей следующим образом:ВТК: Базовая визуализация heightfield

#include "vtkGraphLayoutView.h" 
#include "vtkRandomGraphSource.h" 
#include "vtkRenderWindow.h" 
#include "vtkRenderWindowInteractor.h" 

int main(int, char*[]) 
{ 
    vtkRandomGraphSource* source = vtkRandomGraphSource::New(); 

    vtkGraphLayoutView* view = vtkGraphLayoutView::New(); 
    view->SetRepresentationFromInputConnection(source->GetOutputPort()); 

    view->ResetCamera(); 
    view->Render(); 
    view->GetInteractor()->Start(); 

    source->Delete(); 
    view->Delete(); 

    return 0; 
} 

компилировать с:

$ g++ -I/usr/include/vtk-5.6 hello_vtk.cpp -lvtkInfovis -lvtkViews -lvtkFiltering 

выполнить с:

$ ./a.out 

У меня есть два набора данных, которые я хочу визуализировать, как по высоте:

Первый имеет вид:

double x1[N*M]; 

, представляющий собой N х M heightfield, где высота (I, J) является х [N * J + I]

Второй имеет вид:

map<pair<double, double>, double> x2; 

где есть образец непрерывной поверхности из (I, J) высотой Н, представленного:

x2[make_pair(i,j)] = h 

Очевидно, что экземпляр x2 может быть интерполирован, если необходимо, в x1.

Мой вопрос в том, какие классы следует использовать и каков эскиз реализации, необходимый для визуализации x1 и/или x2 в VTK?

(Есть ли сверху вниз документация ВТК? Это, кажется, очень большая библиотека и единственная ссылка, которую я мог найти это doxygene, который требует линейное время поиска, чтобы найти то, что вы ищете)

ответ

1

You должны получить ваши данные в структуре данных VTK (возможно, vtkImageData или vtkStructuredGrid). Вы можете проверить этот пример: http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/Color_a_mesh_by_height, который должен иметь много элементов, необходимых для этого.

Примечание: в этом примере используется структура данных vtkPolyData, но это, вероятно, слишком велико для этого типа регулярных/сетевых данных.

Смежные вопросы