Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.

150 lines
4.6 KiB

2 years ago
package require vtk
package require vtkinteraction
package require vtktesting
set size 3187;#maximum number possible
#set size 100;#maximum number possible
set xAxis "INTEREST_RATE"
set yAxis "MONTHLY_PAYMENT"
set zAxis "MONTHLY_INCOME"
set scalar "TIME_LATE"
# extract data from field as a polydata (just points), then extract scalars
vtkDataObjectReader fdr
fdr SetFileName "$VTK_DATA_ROOT/Data/financial.vtk"
vtkDataObjectToDataSetFilter do2ds
do2ds SetInputConnection [fdr GetOutputPort]
do2ds SetDataSetTypeToPolyData
#format: component#, arrayname, arraycomp, minArrayId, maxArrayId, normalize
do2ds DefaultNormalizeOn
do2ds SetPointComponent 0 $xAxis 0
do2ds SetPointComponent 1 $yAxis 0 0 $size 1
do2ds SetPointComponent 2 $zAxis 0
do2ds Update
vtkFieldDataToAttributeDataFilter fd2ad
fd2ad SetInputConnection [do2ds GetOutputPort]
fd2ad SetInputFieldToDataObjectField
fd2ad SetOutputAttributeDataToPointData
fd2ad DefaultNormalizeOn
fd2ad SetScalarComponent 0 $scalar 0
# construct pipeline for original population
vtkGaussianSplatter popSplatter
popSplatter SetInputConnection [fd2ad GetOutputPort]
popSplatter SetSampleDimensions 50 50 50
popSplatter SetRadius 0.05
popSplatter ScalarWarpingOff
vtkMarchingContourFilter popSurface
popSurface SetInputConnection [popSplatter GetOutputPort]
popSurface SetValue 0 0.01
vtkPolyDataMapper popMapper
popMapper SetInputConnection [popSurface GetOutputPort]
popMapper ScalarVisibilityOff
vtkActor popActor
popActor SetMapper popMapper
[popActor GetProperty] SetOpacity 0.3
[popActor GetProperty] SetColor .9 .9 .9
# construct pipeline for delinquent population
vtkGaussianSplatter lateSplatter
lateSplatter SetInputConnection [fd2ad GetOutputPort]
lateSplatter SetSampleDimensions 50 50 50
lateSplatter SetRadius 0.05
lateSplatter SetScaleFactor 0.05
vtkMarchingContourFilter lateSurface
lateSurface SetInputConnection [lateSplatter GetOutputPort]
lateSurface SetValue 0 0.01
vtkPolyDataMapper lateMapper
lateMapper SetInputConnection [lateSurface GetOutputPort]
lateMapper ScalarVisibilityOff
vtkActor lateActor
lateActor SetMapper lateMapper
[lateActor GetProperty] SetColor 1.0 0.0 0.0
# create axes
popSplatter Update
set bounds [[popSplatter GetOutput] GetBounds]
vtkAxes axes
axes SetOrigin [lindex $bounds 0] [lindex $bounds 2] [lindex $bounds 4]
axes SetScaleFactor [expr [[popSplatter GetOutput] GetLength]/5.0]
vtkTubeFilter axesTubes
axesTubes SetInputConnection [axes GetOutputPort]
axesTubes SetRadius [expr [axes GetScaleFactor]/25.0]
axesTubes SetNumberOfSides 6
vtkPolyDataMapper axesMapper
axesMapper SetInputConnection [axesTubes GetOutputPort]
vtkActor axesActor
axesActor SetMapper axesMapper
# label the axes
vtkVectorText XText
XText SetText $xAxis
vtkPolyDataMapper XTextMapper
XTextMapper SetInputConnection [XText GetOutputPort]
vtkFollower XActor
XActor SetMapper XTextMapper
XActor SetScale 0.02 .02 .02
XActor SetPosition 0.35 -0.05 -0.05
[XActor GetProperty] SetColor 0 0 0
vtkVectorText YText
YText SetText $yAxis
vtkPolyDataMapper YTextMapper
YTextMapper SetInputConnection [YText GetOutputPort]
vtkFollower YActor
YActor SetMapper YTextMapper
YActor SetScale 0.02 .02 .02
YActor SetPosition -0.05 0.35 -0.05
[YActor GetProperty] SetColor 0 0 0
vtkVectorText ZText
ZText SetText $zAxis
vtkPolyDataMapper ZTextMapper
ZTextMapper SetInputConnection [ZText GetOutputPort]
vtkFollower ZActor
ZActor SetMapper ZTextMapper
ZActor SetScale 0.02 .02 .02
ZActor SetPosition -0.05 -0.05 0.35
[ZActor GetProperty] SetColor 0 0 0
# Graphics stuff
#
vtkRenderer ren1
vtkRenderWindow renWin
renWin AddRenderer ren1
renWin SetWindowName "vtk - Field Data"
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
# Add the actors to the renderer, set the background and size
#
ren1 AddActor axesActor
ren1 AddActor lateActor
ren1 AddActor XActor
ren1 AddActor YActor
ren1 AddActor ZActor
ren1 AddActor popActor;#it's last because its translucent
ren1 SetBackground 1 1 1
renWin SetSize 400 400
vtkCamera camera
camera SetClippingRange .274 13.72
camera SetFocalPoint 0.433816 0.333131 0.449
camera SetPosition -1.96987 1.15145 1.49053
camera SetViewUp 0.378927 0.911821 0.158107
ren1 SetActiveCamera camera
XActor SetCamera camera
YActor SetCamera camera
ZActor SetCamera camera
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize
renWin Render
# prevent the tk window from showing up then start the event loop
wm withdraw .