Przykład
Aby zrealizować wyżej postawione zadanie skorzystamy z kontrolki wizualnej vtkPointWidget oraz obiektu graficznego vtkTextActor. Reprezentują one odpowiednio punkt w przestrzeni, którym możemy poruszać oraz tekst wyświetlający zadane informacje na scenie wizualizacji. Oczywiście dla kontrolki punkt powinna zostać przygotowana funkcja obsługi zdarzenia zmiany współrzędnych. W takiej sytuacji następuje pobranie wartości wskazanego woksela i wpisanie jej do obiektu tekst.
vtkPointWidget pointWidget
pointWidget SetInteractor iren
pointWidget SetInput [reader GetOutput]
pointWidget AllOff
pointWidget PlaceWidget
pointWidget AddObserver InteractionEvent pickValueCallback
pointWidget On
vtkTextActor textActor
textActor SetDisplayPosition 100 20
eval [textActor GetTextProperty] SetJustificationToCentered
eval [textActor GetTextProperty] SetFontSize 18
ren1 AddActor textActor
proc pickValueCallback {} {
set pos [pointWidget GetPosition]
set x [expr int([lindex $pos 0]) ]
set y [expr int([lindex $pos 1]) ]
set z [expr int([lindex $pos 2]) ]
set value [[reader GetOutput] GetScalarComponentAsDouble $x $y $z 0 ]
textActor SetInput "($x, $y, $z): $value"
}
Możliwości przedstawionego przykładu można zobaczyć na poniższym obrazku:
Taki sposób wyświetlania wartości danego piksela jest na pewno zdecydowanie wygodniejszy od przeglądu poszczególnych punktów w pliku lub wypisywaniu ich w linii poleceń.
0 komentarze:
Prześlij komentarz