You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
package require vtk
|
|
package require vtkinteraction
|
|
|
|
set res 6
|
|
vtkPlaneSource plane
|
|
plane SetResolution $res $res
|
|
vtkElevationFilter colors
|
|
colors SetInputConnection [plane GetOutputPort]
|
|
colors SetLowPoint -0.25 -0.25 -0.25
|
|
colors SetHighPoint 0.25 0.25 0.25
|
|
vtkPolyDataMapper planeMapper
|
|
planeMapper SetInput [colors GetPolyDataOutput]
|
|
vtkActor planeActor
|
|
planeActor SetMapper planeMapper
|
|
[planeActor GetProperty] SetRepresentationToWireframe
|
|
|
|
# procedure for generating glyphs
|
|
proc Glyph {} {
|
|
global res
|
|
set ptId [glypher GetPointId]
|
|
set pd [glypher GetPointData]
|
|
set xyz [glypher GetPoint]
|
|
set x [lindex $xyz 0]
|
|
set y [lindex $xyz 1]
|
|
set length [[glypher GetInput 0] GetLength]
|
|
set scale [expr $length / (2.0*$res)]
|
|
|
|
squad SetScale $scale $scale $scale
|
|
eval squad SetCenter $xyz
|
|
squad SetPhiRoundness [expr abs($x)*5.0]
|
|
squad SetThetaRoundness [expr abs($y)*5.0]
|
|
}
|
|
|
|
# create simple poly data so we can apply glyph
|
|
vtkSuperquadricSource squad
|
|
vtkProgrammableGlyphFilter glypher
|
|
glypher SetInputConnection [colors GetOutputPort]
|
|
glypher SetSource [squad GetOutput]
|
|
glypher SetGlyphMethod Glyph
|
|
vtkPolyDataMapper glyphMapper
|
|
glyphMapper SetInputConnection [glypher GetOutputPort]
|
|
vtkActor glyphActor
|
|
glyphActor SetMapper glyphMapper
|
|
|
|
|
|
|
|
# Create the rendering stuff
|
|
#
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
ren1 AddActor planeActor
|
|
ren1 AddActor glyphActor
|
|
ren1 SetBackground 1 1 1
|
|
renWin SetSize 450 450
|
|
renWin Render
|
|
[ren1 GetActiveCamera] Zoom 1.5
|
|
|
|
# Get handles to some useful objects
|
|
#
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
renWin Render
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|
|
|
|
|