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.
287 lines
11 KiB
287 lines
11 KiB
2 years ago
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
|
||
|
set solidTexture "255 255"
|
||
|
set clearTexture "255 0"
|
||
|
set edgeTexture "0 255"
|
||
|
|
||
|
proc makeBooleanTexture {caseNumber resolution thickness} {
|
||
|
global solidTexture clearTexture edgeTexture
|
||
|
vtkBooleanTexture booleanTexture$caseNumber
|
||
|
|
||
|
booleanTexture$caseNumber SetXSize $resolution
|
||
|
booleanTexture$caseNumber SetYSize $resolution
|
||
|
booleanTexture$caseNumber SetThickness $thickness
|
||
|
|
||
|
switch $caseNumber {
|
||
|
0 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $solidTexture
|
||
|
}
|
||
|
|
||
|
1 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $solidTexture
|
||
|
}
|
||
|
|
||
|
2 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
3 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
4 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $solidTexture
|
||
|
}
|
||
|
|
||
|
5 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $solidTexture
|
||
|
}
|
||
|
|
||
|
6 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
7 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
8 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
9 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
10 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $clearTexture
|
||
|
}
|
||
|
|
||
|
11 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $clearTexture
|
||
|
}
|
||
|
|
||
|
12 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
13 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $edgeTexture
|
||
|
}
|
||
|
|
||
|
|
||
|
14 {
|
||
|
eval booleanTexture$caseNumber SetInIn $solidTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $edgeTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $clearTexture
|
||
|
}
|
||
|
|
||
|
15 {
|
||
|
eval booleanTexture$caseNumber SetInIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnIn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOnOut $clearTexture
|
||
|
eval booleanTexture$caseNumber SetInOn $clearTexture
|
||
|
eval booleanTexture$caseNumber SetOutOn $clearTexture
|
||
|
}
|
||
|
}
|
||
|
return booleanTexture$caseNumber
|
||
|
}
|
||
|
|
||
|
set positions(0) "-4 4 0"
|
||
|
set positions(1) "-2 4 0"
|
||
|
set positions(2) "0 4 0"
|
||
|
set positions(3) "2 4 0"
|
||
|
set positions(4) "-4 2 0"
|
||
|
set positions(5) "-2 2 0"
|
||
|
set positions(6) "0 2 0"
|
||
|
set positions(7) "2 2 0"
|
||
|
set positions(8) "-4 0 0"
|
||
|
set positions(9) "-2 0 0"
|
||
|
set positions(10) "0 0 0"
|
||
|
set positions(11) "2 0 0"
|
||
|
set positions(12) "-4 -2 0"
|
||
|
set positions(13) "-2 -2 0"
|
||
|
set positions(14) "0 -2 0"
|
||
|
set positions(15) "2 -2 0"
|
||
|
|
||
|
vtkRenderer ren1
|
||
|
vtkRenderWindow renWin
|
||
|
renWin AddRenderer ren1
|
||
|
vtkRenderWindowInteractor iren
|
||
|
iren SetRenderWindow renWin
|
||
|
|
||
|
# define two elliptical cylinders
|
||
|
vtkQuadric quadric1
|
||
|
quadric1 SetCoefficients 1 2 0 0 0 0 0 0 0 -.07
|
||
|
|
||
|
vtkQuadric quadric2
|
||
|
quadric2 SetCoefficients 2 1 0 0 0 0 0 0 0 -.07
|
||
|
|
||
|
# create a sphere for all to use
|
||
|
vtkSphereSource aSphere
|
||
|
aSphere SetPhiResolution 50
|
||
|
aSphere SetThetaResolution 50
|
||
|
|
||
|
# create texture coordianates for all
|
||
|
vtkImplicitTextureCoords tcoords
|
||
|
tcoords SetInputConnection [aSphere GetOutputPort]
|
||
|
tcoords SetRFunction quadric1
|
||
|
tcoords SetSFunction quadric2
|
||
|
|
||
|
vtkDataSetMapper aMapper
|
||
|
aMapper SetInputConnection [tcoords GetOutputPort]
|
||
|
|
||
|
# create a mapper, sphere and texture map for each case
|
||
|
for {set i 0} {$i < 16} {incr i} {
|
||
|
vtkTexture aTexture$i
|
||
|
aTexture$i SetInput [[eval makeBooleanTexture $i 256 1] GetOutput]
|
||
|
aTexture$i InterpolateOff
|
||
|
aTexture$i RepeatOff
|
||
|
vtkActor anActor$i
|
||
|
anActor$i SetMapper aMapper
|
||
|
anActor$i SetTexture aTexture$i
|
||
|
eval anActor$i SetPosition $positions($i)
|
||
|
anActor$i SetScale 2.0 2.0 2.0
|
||
|
ren1 AddActor anActor$i
|
||
|
}
|
||
|
|
||
|
ren1 SetBackground 0.4392 0.5020 0.5647
|
||
|
ren1 ResetCamera
|
||
|
[ren1 GetActiveCamera] Zoom 1.4
|
||
|
renWin SetSize 500 500
|
||
|
|
||
|
# interact with data
|
||
|
renWin Render
|
||
|
|
||
|
#renWin SetFileName "quadricCut.tcl.ppm"
|
||
|
#renWin SaveImageAsPPM
|
||
|
|
||
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
||
|
iren Initialize
|
||
|
|
||
|
# prevent the tk window from showing up then start the event loop
|
||
|
wm withdraw .
|