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.
85 lines
2.0 KiB
85 lines
2.0 KiB
2 years ago
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
|
||
|
# append multiple displaced spheres into an RGB image.
|
||
|
|
||
|
|
||
|
# Image pipeline
|
||
|
|
||
|
vtkRenderWindow imgWin
|
||
|
|
||
|
vtkImageEllipsoidSource sphere1
|
||
|
sphere1 SetCenter 40 20 0
|
||
|
sphere1 SetRadius 30 30 0
|
||
|
sphere1 SetInValue .75
|
||
|
sphere1 SetOutValue .3
|
||
|
sphere1 SetOutputScalarTypeToFloat
|
||
|
sphere1 SetWholeExtent 0 99 0 74 0 0
|
||
|
|
||
|
vtkImageEllipsoidSource sphere2
|
||
|
sphere2 SetCenter 60 30 0
|
||
|
sphere2 SetRadius 20 20 20
|
||
|
sphere2 SetInValue .2
|
||
|
sphere2 SetOutValue .5
|
||
|
sphere2 SetOutputScalarTypeToFloat
|
||
|
sphere2 SetWholeExtent 0 99 0 74 0 0
|
||
|
|
||
|
set mathematics "\
|
||
|
Add \
|
||
|
Subtract \
|
||
|
Multiply \
|
||
|
Divide \
|
||
|
Invert \
|
||
|
Sin \
|
||
|
Cos \
|
||
|
Exp \
|
||
|
Log \
|
||
|
AbsoluteValue \
|
||
|
Square \
|
||
|
SquareRoot \
|
||
|
Min \
|
||
|
Max \
|
||
|
ATAN \
|
||
|
ATAN2 \
|
||
|
MultiplyByK \
|
||
|
ReplaceCByK \
|
||
|
AddConstant"
|
||
|
|
||
|
foreach operator $mathematics {
|
||
|
vtkImageMathematics mathematic${operator}
|
||
|
mathematic${operator} SetInput1 [sphere1 GetOutput]
|
||
|
mathematic${operator} SetInput2 [sphere2 GetOutput]
|
||
|
mathematic${operator} SetOperationTo${operator}
|
||
|
mathematic${operator} SetConstantK .3
|
||
|
mathematic${operator} SetConstantC .75
|
||
|
vtkImageMapper mapper${operator}
|
||
|
mapper${operator} SetInputConnection [mathematic${operator} GetOutputPort]
|
||
|
mapper${operator} SetColorWindow 2.0
|
||
|
mapper${operator} SetColorLevel .75
|
||
|
vtkActor2D actor${operator}
|
||
|
actor${operator} SetMapper mapper${operator}
|
||
|
vtkRenderer imager${operator}
|
||
|
imager${operator} AddActor2D actor${operator}
|
||
|
imgWin AddRenderer imager${operator}
|
||
|
}
|
||
|
|
||
|
set column 1
|
||
|
set row 1
|
||
|
set deltaX [expr 1.0/6.0]
|
||
|
set deltaY [expr 1.0/4.0]
|
||
|
|
||
|
foreach operator $mathematics {
|
||
|
imager${operator} SetViewport [expr ($column - 1) * $deltaX] [expr ($row - 1) * $deltaY] [expr $column * $deltaX] [expr $row * $deltaY]
|
||
|
incr column
|
||
|
if { $column > 6 } {set column 1; incr row}
|
||
|
}
|
||
|
|
||
|
# make the last oerator finish the row
|
||
|
set vp [imager${operator} GetViewport]
|
||
|
imager${operator} SetViewport [lindex $vp 0] [lindex $vp 1] 1 1
|
||
|
|
||
|
imgWin SetSize 600 300
|
||
|
imgWin Render
|
||
|
|
||
|
wm withdraw .
|