1package require vtk
2
3# this test covers a lot of the code in vtkAbstractTransform that
4# is not covered elsewhere
5
6# create a rendering window
7vtkRenderWindow renWin
8renWin SetMultiSamples 0
9renWin SetSize 600 300
10
11# set up first set of polydata
12vtkPlaneSource p1
13p1 SetOrigin  0.5  0.508 -0.5
14p1 SetPoint1 -0.5  0.508 -0.5
15p1 SetPoint2  0.5  0.508  0.5
16p1 SetXResolution 5
17p1 SetYResolution 5
18p1 Update
19
20vtkPlaneSource p2
21p2 SetOrigin -0.508  0.5 -0.5
22p2 SetPoint1 -0.508 -0.5 -0.5
23p2 SetPoint2 -0.508  0.5  0.5
24p2 SetXResolution 5
25p2 SetYResolution 5
26p2 Update
27
28vtkPlaneSource p3
29p3 SetOrigin -0.5 -0.508 -0.5
30p3 SetPoint1  0.5 -0.508 -0.5
31p3 SetPoint2 -0.5 -0.508  0.5
32p3 SetXResolution 5
33p3 SetYResolution 5
34p3 Update
35
36vtkPlaneSource p4
37p4 SetOrigin  0.508 -0.5 -0.5
38p4 SetPoint1  0.508  0.5 -0.5
39p4 SetPoint2  0.508 -0.5  0.5
40p4 SetXResolution 5
41p4 SetYResolution 5
42p4 Update
43
44vtkPlaneSource p5
45p5 SetOrigin  0.5  0.5 -0.508
46p5 SetPoint1  0.5 -0.5 -0.508
47p5 SetPoint2 -0.5  0.5 -0.508
48p5 SetXResolution 5
49p5 SetYResolution 5
50p5 Update
51
52vtkPlaneSource p6
53p6 SetOrigin  0.5  0.5  0.508
54p6 SetPoint1 -0.5  0.5  0.508
55p6 SetPoint2  0.5 -0.5  0.508
56p6 SetXResolution 5
57p6 SetYResolution 5
58p6 Update
59
60# append together
61vtkAppendPolyData ap
62ap AddInputData [p1 GetOutput]
63ap AddInputData [p2 GetOutput]
64ap AddInputData [p3 GetOutput]
65ap AddInputData [p4 GetOutput]
66ap AddInputData [p5 GetOutput]
67ap AddInputData [p6 GetOutput]
68
69#--------------------------
70vtkTransform tLinear
71vtkPerspectiveTransform tPerspective
72vtkGeneralTransform tGeneral
73
74# set up a linear transformation
75tLinear Scale 1.2 1.0 0.8
76tLinear RotateX 30
77tLinear RotateY 10
78tLinear RotateZ 80
79tLinear Translate 0.2 0.3 -0.1
80tLinear Update
81
82# set up a perspective transform
83tPerspective SetInput tLinear
84tPerspective SetInput [tLinear GetInverse]
85tPerspective Scale 2 2 2
86# these should cancel
87tPerspective AdjustViewport -0.5 0.5 -0.5 0.5 -1 1 -1 1
88tPerspective AdjustViewport -1 1 -1 1 -0.5 0.5 -0.5 0.5
89# test shear transformation
90tPerspective Shear 0.2 0.3 0.0
91tPerspective Update
92
93# the following 6 operations cancel out
94tPerspective RotateWXYZ 30 1 1 1
95tPerspective RotateWXYZ -30 1 1 1
96tPerspective Scale 2 2 2
97tPerspective Scale 0.5 0.5 0.5
98tPerspective Translate 10 0.1 0.3
99tPerspective Translate -10 -0.1 -0.3
100
101tPerspective Concatenate tLinear
102# test push and pop
103tPerspective Push
104tPerspective RotateX 30
105tPerspective RotateY 10
106tPerspective RotateZ 80
107tPerspective Translate 0.1 -0.2 0.0
108
109# test copy of transforms
110set tNew [tPerspective MakeTransform]
111$tNew DeepCopy tPerspective
112
113tPerspective Pop
114
115# test general transform
116tGeneral SetInput tLinear
117tGeneral SetInput tPerspective
118tGeneral PostMultiply
119tGeneral Concatenate $tNew
120tGeneral Concatenate [$tNew GetInverse]
121tGeneral PreMultiply
122
123# the following 6 operations cancel out
124tGeneral RotateWXYZ 30 1 1 1
125tGeneral RotateWXYZ -30 1 1 1
126tGeneral Scale 2 2 2
127tGeneral Scale 0.5 0.5 0.5
128tGeneral Translate 10 0.1 0.3
129tGeneral Translate -10 -0.1 -0.3
130
131#--------------------------
132# identity transform
133
134vtkTransformPolyDataFilter f11
135f11 SetInputConnection [ap GetOutputPort]
136f11 SetTransform tLinear
137
138vtkDataSetMapper m11
139m11 SetInputConnection [f11 GetOutputPort]
140
141vtkActor a11
142a11 SetMapper m11
143[a11 GetProperty] SetColor 1 0 0
144[a11 GetProperty] SetRepresentationToWireframe
145
146vtkRenderer ren11
147ren11 SetViewport 0.0 0.5 0.25 1.0
148ren11 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
149ren11 AddActor a11
150renWin AddRenderer ren11
151
152# inverse identity transform
153vtkTransformPolyDataFilter f12
154f12 SetInputConnection [ap GetOutputPort]
155f12 SetTransform [tLinear GetInverse]
156
157vtkDataSetMapper m12
158m12 SetInputConnection [f12 GetOutputPort]
159
160vtkActor a12
161a12 SetMapper m12
162[a12 GetProperty] SetColor 0.9 0.9 0
163[a12 GetProperty] SetRepresentationToWireframe
164
165vtkRenderer ren12
166ren12 SetViewport 0.0 0.0 0.25 0.5
167ren12 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
168ren12 AddActor a12
169renWin AddRenderer ren12
170
171
172#--------------------------
173# linear transform
174vtkTransformPolyDataFilter f21
175f21 SetInputConnection [ap GetOutputPort]
176f21 SetTransform tPerspective
177
178vtkDataSetMapper m21
179m21 SetInputConnection [f21 GetOutputPort]
180
181vtkActor a21
182a21 SetMapper m21
183[a21 GetProperty] SetColor 1 0 0
184[a21 GetProperty] SetRepresentationToWireframe
185
186vtkRenderer ren21
187ren21 SetViewport 0.25 0.5 0.50 1.0
188ren21 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
189ren21 AddActor a21
190renWin AddRenderer ren21
191
192# inverse linear transform
193vtkTransformPolyDataFilter f22
194f22 SetInputConnection [ap GetOutputPort]
195f22 SetTransform [tPerspective GetInverse]
196
197vtkDataSetMapper m22
198m22 SetInputConnection [f22 GetOutputPort]
199
200vtkActor a22
201a22 SetMapper m22
202[a22 GetProperty] SetColor 0.9 0.9 0
203[a22 GetProperty] SetRepresentationToWireframe
204
205vtkRenderer ren22
206ren22 SetViewport 0.25 0.0 0.50 0.5
207ren22 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
208ren22 AddActor a22
209renWin AddRenderer ren22
210
211
212#--------------------------
213# perspective transform
214vtkMatrix4x4 matrix
215matrix SetElement 3 0 0.1
216matrix SetElement 3 1 0.2
217matrix SetElement 3 2 0.5
218
219vtkTransformPolyDataFilter f31
220f31 SetInputConnection [ap GetOutputPort]
221f31 SetTransform $tNew
222
223vtkDataSetMapper m31
224m31 SetInputConnection [f31 GetOutputPort]
225
226vtkActor a31
227a31 SetMapper m31
228[a31 GetProperty] SetColor 1 0 0
229[a31 GetProperty] SetRepresentationToWireframe
230
231vtkRenderer ren31
232ren31 SetViewport 0.50 0.5 0.75 1.0
233ren31 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
234ren31 AddActor a31
235renWin AddRenderer ren31
236
237# inverse linear transform
238vtkTransformPolyDataFilter f32
239f32 SetInputConnection [ap GetOutputPort]
240f32 SetTransform [$tNew GetInverse]
241
242vtkDataSetMapper m32
243m32 SetInputConnection [f32 GetOutputPort]
244
245vtkActor a32
246a32 SetMapper m32
247[a32 GetProperty] SetColor 0.9 0.9 0
248[a32 GetProperty] SetRepresentationToWireframe
249
250vtkRenderer ren32
251ren32 SetViewport 0.5 0.0 0.75 0.5
252ren32 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
253ren32 AddActor a32
254renWin AddRenderer ren32
255
256
257#--------------------------
258# perspective transform concatenation
259vtkTransformPolyDataFilter f41
260f41 SetInputConnection [ap GetOutputPort]
261f41 SetTransform tGeneral
262
263vtkDataSetMapper m41
264m41 SetInputConnection [f41 GetOutputPort]
265
266vtkActor a41
267a41 SetMapper m41
268[a41 GetProperty] SetColor 1 0 0
269[a41 GetProperty] SetRepresentationToWireframe
270
271vtkRenderer ren41
272ren41 SetViewport 0.75 0.5 1.0 1.0
273ren41 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
274ren41 AddActor a41
275renWin AddRenderer ren41
276
277# inverse linear transform
278vtkTransformPolyDataFilter f42
279f42 SetInputConnection [ap GetOutputPort]
280f42 SetTransform [tGeneral GetInverse]
281
282vtkDataSetMapper m42
283m42 SetInputConnection [f42 GetOutputPort]
284
285vtkActor a42
286a42 SetMapper m42
287[a42 GetProperty] SetColor 0.9 0.9 0
288[a42 GetProperty] SetRepresentationToWireframe
289
290vtkRenderer ren42
291ren42 SetViewport 0.75 0.0 1.0 0.5
292ren42 ResetCamera -0.5 0.5 -0.5 0.5 -1 1
293ren42 AddActor a42
294renWin AddRenderer ren42
295
296
297renWin Render
298
299# free what we did a MakeTransform on
300$tNew UnRegister {}
301
302
303