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