Как построить vtkPolyData на основе информации в текстовом файле - PullRequest
1 голос
/ 13 ноября 2010

У меня есть текстовый файл, который содержит набор 3-х мерных точек данных, и я хотел бы создать vtkPolyData на основе этих точек.

В файле у меня есть количество точек в первой строке, в моем случае они равны 6 x 6. И после этого фактические координаты каждой точки. Содержимое файла выглядит следующим образом.

6 6 
1 1 3
2 1 3.4
3 1 3.6
4 1 3.6
5 1 3.4
6 1 3
1 2 3
2 2 3.8
3 2 4.2
4 2 4.2
5 2 3.8
6 2 3
1 3 3
2 3 3
3 3 3
4 3 3
5 3 3
6 3 3
1 4 3
2 4 3
3 4 3
4 4 3
5 4 3
6 4 3
1 5 3
2 5 3.8
3 5 4.2
4 5 4.2
5 5 3.8
6 5 3
1 6 3
2 6 3.4
3 6 3.6
4 6 3.6
5 6 3.4
6 6 3

Как я могу построить структуру vtkPolyData с txt-файлом с этими данными?

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Мне кажется, у вас есть серия точек с регулярной сеткой, верно?Если это так, vtkImageData может быть лучшим выбором.Впоследствии вы всегда можете использовать геометрический фильтр для преобразования в полиданные, если вам это действительно нужно.

  1. Создайте экземпляр vtkImageData.
  2. Установите его размеры равными (6, 6, 1).) (третье измерение игнорируется).
  3. Установите для его типа данных соответствующий тип (я полагаю, с плавающей или двойной).
  4. Вызовите AllocateScalars ();
  5. Если в C ++,

    1. вызовите GetScalarPointer () и приведите его к типу данных, установленному в 3.
    2. Этот указатель будет указывать на массив размером 36. Вы можете простозаполните каждую точку, как обычно.
  6. Если на другом языке (TCL / Python / Java), вызовите SetScalarComponentFromFloat для данных изображения с аргументами (x, y,0, 0, значение).Первый 0 - это 3-е измерение, а второй - для первого компонента.

Это даст вам сетку, и это будет гораздо более эффективно использовать память, чем полиданные.

Если вы хотите визуализировать только точки, используйте vtkDataSetMapper и установите свойство актера с помощью SetRepresentationToPoints (), установив соответствующий размер точки.Это сделает простую работу по визуализации.

0 голосов
/ 15 ноября 2010

Являются ли эти примеры полезными? В частности, это делает генерацию точек и полигонов, поэтому должна быть возможность адаптироваться. Ядро, кажется, (с лотами опущено):

# ...
vtkPolyData shell
vtkFloatPoints points
vtkCellArray strips

# Generate points...
loop {
   ...
   points InsertPoint $k $x0 $x1 $x2
}
shell SetPoints points
points Delete

# Generate triangles/polygons...
loop {
   strips InsertNextCell $NP2
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
}
shell SetStrips strips
strips Delete

# ...
...