28 Jul, 2009 von Raimar Wagner
Vektorfeldvisualisierung durch Flow Streams
In einem vorherigen Artikel hatte ich bereits über Visualisierungen von Vektorfeldern geschrieben, hier werden wir ein identisches Vektorfeld nutzen. Unser Beispielfeld ist wieder:
Wir setzen wieder gridPoints, glyPoints als gegeben vorraus. Des weiteren können wir auch wieder ein Magnituden-Array mag und ein Beschleunigungs-3Tupel-Array velocity als gegeben vorraussetzen:
vtkPoints gridPoints vtkPoints glyPoints vtkFloatArray velocity velocity SetNumberOfComponents 3 velocity SetNumberOfValues [expr $x_extend*$y_extend*$z_extend] vtkFloatArray mag mag SetNumberOfComponents 1 mag SetNumberOfValues [expr $x_extend*$y_extend*$z_extend]
Im nächsten Schritt erzeugen wir wieder aus den Punkten und den zwei Arrays ein strukturiertes Gitter.
vtkStructuredGrid sgrid sgrid SetDimensions $x_extend $y_extend $z_extend sgrid SetPoints gridPoints [sgrid GetPointData] SetVectors velocity [sgrid GetPointData] SetScalars mag
Damit wäre die Definition des Feldes abgeschlossen, als erstes müssen die die Streams einen Startpunkt bekommen. In unserem Fall nehmen wir eine Linie auf der die Streams starten sollen.
vtkLineSource rake rake SetPoint1 1 9 9 rake SetPoint2 9 9 9 rake SetResolution 200
Der vtkStreamTracer wird im nächsten Schritt die Stromlinien erzeugen die dann mit einem vtkTubeFilter dargestellt werden.
vtkRungeKutta4 integ
vtkStreamTracer streamer
streamer SetInput sgrid
streamer SetSourceConnection [rake GetOutputPort]
streamer SetMaximumPropagation 5000
streamer SetMaximumPropagationUnitToTimeUnit
streamer SetInitialIntegrationStep 0.005
streamer SetInitialIntegrationStepUnitToCellLengthUnit
streamer SetIntegrationDirectionToBoth
streamer SetIntegrator integ
vtkTubeFilter streamTube
streamTube SetInputConnection [streamer GetOutputPort]
streamTube SetRadius 0.1
streamTube SetNumberOfSides 12
Im letzten Schritt muss nurnoch alles in Mapper und Aktoren gepackt werden (siehe frühere Posts) und wir bekommen das folgende Bild:









Letzte Kommentare