File: TestTransformInterpolator.tcl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,880 kB
  • sloc: cpp: 1,442,792; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 103; objc: 17
file content (204 lines) | stat: -rw-r--r-- 5,416 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
package require vtk
package require vtkinteraction
package require vtktesting

# create two boxes and interpolate between them
#
vtkPoints pts
  pts InsertNextPoint -1 -1 -1
  pts InsertNextPoint  1 -1 -1
  pts InsertNextPoint  1  1 -1
  pts InsertNextPoint -1  1 -1
  pts InsertNextPoint -1 -1  1
  pts InsertNextPoint  1 -1  1
  pts InsertNextPoint  1  1  1
  pts InsertNextPoint -1  1  1
vtkCellArray faces
  faces InsertNextCell 4
  faces InsertCellPoint 0
  faces InsertCellPoint 3
  faces InsertCellPoint 2
  faces InsertCellPoint 1
  faces InsertNextCell 4
  faces InsertCellPoint 4
  faces InsertCellPoint 5
  faces InsertCellPoint 6
  faces InsertCellPoint 7
  faces InsertNextCell 4
  faces InsertCellPoint 0
  faces InsertCellPoint 1
  faces InsertCellPoint 5
  faces InsertCellPoint 4
  faces InsertNextCell 4
  faces InsertCellPoint 1
  faces InsertCellPoint 2
  faces InsertCellPoint 6
  faces InsertCellPoint 5
  faces InsertNextCell 4
  faces InsertCellPoint 2
  faces InsertCellPoint 3
  faces InsertCellPoint 7
  faces InsertCellPoint 6
  faces InsertNextCell 4
  faces InsertCellPoint 3
  faces InsertCellPoint 0
  faces InsertCellPoint 4
  faces InsertCellPoint 7
vtkUnsignedCharArray faceColors
  faceColors SetNumberOfComponents 3
  faceColors SetNumberOfTuples 3
  faceColors InsertComponent 0 0 255
  faceColors InsertComponent 0 1 0
  faceColors InsertComponent 0 2 0
  faceColors InsertComponent 1 0 0
  faceColors InsertComponent 1 1 255
  faceColors InsertComponent 1 2 0
  faceColors InsertComponent 2 0 255
  faceColors InsertComponent 2 1 255
  faceColors InsertComponent 2 2 0
  faceColors InsertComponent 3 0 0
  faceColors InsertComponent 3 1 0
  faceColors InsertComponent 3 2 255
  faceColors InsertComponent 4 0 255
  faceColors InsertComponent 4 1 0
  faceColors InsertComponent 4 2 255
  faceColors InsertComponent 5 0 0
  faceColors InsertComponent 5 1 255
  faceColors InsertComponent 5 2 255

vtkPolyData cube
  cube SetPoints pts
  cube SetPolys faces
  [cube GetCellData] SetScalars faceColors

vtkTransform t1
    t1 Translate 1 2 3
    t1 RotateX 15
    t1 Scale 4 2 1
vtkTransformPolyDataFilter tpdf1
    tpdf1 SetInputData cube
    tpdf1 SetTransform t1
vtkPolyDataMapper cube1Mapper
    cube1Mapper SetInputConnection [tpdf1 GetOutputPort]
vtkActor cube1
    cube1 SetMapper cube1Mapper

vtkTransform t2
    t2 Translate 5 10 15
    t2 RotateX 22.5
    t2 RotateY 15
    t2 RotateZ 85
    t2 Scale 1 2 4
vtkTransformPolyDataFilter tpdf2
    tpdf2 SetInputData cube
    tpdf2 SetTransform t2
vtkPolyDataMapper cube2Mapper
    cube2Mapper SetInputConnection [tpdf2 GetOutputPort]
vtkActor cube2
    cube2 SetMapper cube2Mapper

vtkTransform t3
    t3 Translate 5 -10 15
    t3 RotateX 13
    t3 RotateY 72
    t3 RotateZ -15
    t3 Scale 2 4 1
vtkTransformPolyDataFilter tpdf3
    tpdf3 SetInputData cube
    tpdf3 SetTransform t3
vtkPolyDataMapper cube3Mapper
    cube3Mapper SetInputConnection [tpdf3 GetOutputPort]
vtkActor cube3
    cube3 SetMapper cube3Mapper

vtkTransform t4
    t4 Translate 10 -5 5
    t4 RotateX 66
    t4 RotateY 19
    t4 RotateZ 24
    t4 Scale 2 .5 1
vtkTransformPolyDataFilter tpdf4
    tpdf4 SetInputData cube
    tpdf4 SetTransform t4
vtkPolyDataMapper cube4Mapper
    cube4Mapper SetInputConnection [tpdf4 GetOutputPort]
vtkActor cube4
    cube4 SetMapper cube4Mapper

# Interpolate the transformation
vtkPolyDataMapper cubeMapper
    cubeMapper SetInputData cube
vtkActor cubeActor
    cubeActor SetMapper cubeMapper

# Interpolate some transformations, test along the way
vtkTransformInterpolator interpolator
#interpolator SetInterpolationTypeToLinear
interpolator SetInterpolationTypeToSpline
interpolator AddTransform 0.0 cube1
interpolator AddTransform 8.0 cube2
interpolator AddTransform 18.2 cube3
interpolator AddTransform 24.4 cube4
interpolator Initialize
#puts [interpolator GetNumberOfTransforms]
interpolator AddTransform 0.0 t1
interpolator AddTransform 8.0 t2
interpolator AddTransform 18.2 t3
interpolator AddTransform 24.4 t4
#puts [interpolator GetNumberOfTransforms]

# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin

# Add the actors to the renderer, set the background and size
#
ren1 AddActor cube1
ren1 AddActor cube2
ren1 AddActor cube3
ren1 AddActor cube4
ren1 AddActor cubeActor

ren1 SetBackground 0 0 0
renWin SetSize 300 300
ren1 SetBackground 0.1 0.2 0.4

# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
vtkCamera camera
camera SetClippingRange 31.2977 81.697
camera SetFocalPoint 3.0991 -2.00445 9.78648
camera SetPosition -44.8481 -25.871 10.0645
camera SetViewAngle 30
camera SetViewUp -0.0356378 0.0599728 -0.997564

ren1 SetActiveCamera camera

renWin Render

# prevent the tk window from showing up then start the event loop
wm withdraw .

vtkTransform xform
proc animate {} {
    set numSteps 250
    set min [interpolator GetMinimumT]
    set max [interpolator GetMaximumT]
    for {set i 0} {$i <= $numSteps} {incr i} {
        set t [expr double($i) * ($max - $min) / double($numSteps)]
        interpolator InterpolateTransform $t xform
        cubeActor SetUserMatrix [xform GetMatrix]
        renWin Render
    }
}
interpolator InterpolateTransform 13.2 xform
cubeActor SetUserMatrix [xform GetMatrix]
renWin Render
#animate