File: camera.tcl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,972 kB
  • sloc: cpp: 1,442,790; 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: 68; objc: 17
file content (246 lines) | stat: -rw-r--r-- 6,122 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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
package require vtk
package require vtkinteraction

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

# create a camera model
vtkConeSource camCS
camCS SetHeight 1.5
camCS SetResolution 12
camCS SetRadius 0.4

vtkCubeSource camCBS
camCBS SetXLength 1.5
camCBS SetZLength 0.8
camCBS SetCenter 0.4 0 0

vtkAppendFilter camAPD
camAPD AddInputConnection [camCS GetOutputPort]
camAPD AddInputConnection [camCBS GetOutputPort]

vtkDataSetMapper camMapper
    camMapper SetInputConnection [camAPD GetOutputPort]
vtkLODActor camActor
    camActor SetMapper camMapper
camActor SetScale 2 2 2

# draw the arrows
vtkPolyData pd
vtkCellArray ca
vtkPoints fp
fp InsertNextPoint 0 1 0
fp InsertNextPoint 8 1 0
fp InsertNextPoint 8 2 0
fp InsertNextPoint 10 0.01 0
fp InsertNextPoint 8 -2 0
fp InsertNextPoint 8 -1 0
fp InsertNextPoint 0 -1 0
ca InsertNextCell 7
ca InsertCellPoint 0
ca InsertCellPoint 1
ca InsertCellPoint 2
ca InsertCellPoint 3
ca InsertCellPoint 4
ca InsertCellPoint 5
ca InsertCellPoint 6
pd SetPoints fp
pd SetPolys ca

vtkPolyData pd2
vtkCellArray ca2
vtkPoints fp2
fp2 InsertNextPoint 0 1 0
fp2 InsertNextPoint 8 1 0
fp2 InsertNextPoint 8 2 0
fp2 InsertNextPoint 10 0.01 0;#prevents degenerate triangles
ca2 InsertNextCell 4
ca2 InsertCellPoint 0
ca2 InsertCellPoint 1
ca2 InsertCellPoint 2
ca2 InsertCellPoint 3
pd2 SetPoints fp2
pd2 SetLines ca2

vtkImplicitModeller arrowIM
arrowIM SetInputData pd
arrowIM SetSampleDimensions 50 20 8

vtkContourFilter arrowCF
arrowCF SetInputConnection [arrowIM GetOutputPort]
arrowCF SetValue 0 0.2

vtkWarpTo arrowWT
arrowWT SetInputConnection [arrowCF GetOutputPort]
arrowWT SetPosition 5 0 5
arrowWT SetScaleFactor 0.85
arrowWT AbsoluteOn

vtkTransform arrowT
arrowT RotateY 60
arrowT Translate -1.33198 0 -1.479
arrowT Scale 1 0.5 1

vtkTransformFilter arrowTF
arrowTF SetInputConnection [arrowWT GetOutputPort]
arrowTF SetTransform arrowT

vtkDataSetMapper arrowMapper
arrowMapper SetInputConnection [arrowTF GetOutputPort]
arrowMapper ScalarVisibilityOff

# draw the azimuth arrows
vtkLODActor a1Actor
a1Actor SetMapper arrowMapper
a1Actor RotateZ 180
a1Actor SetPosition 1 0 -1
[a1Actor GetProperty] SetColor 1 0.3 0.3
[a1Actor GetProperty] SetSpecularColor 1 1 1
[a1Actor GetProperty] SetSpecular 0.3
[a1Actor GetProperty] SetSpecularPower 20
[a1Actor GetProperty] SetAmbient 0.2
[a1Actor GetProperty] SetDiffuse 0.8

vtkLODActor a2Actor
a2Actor SetMapper arrowMapper
a2Actor RotateZ 180
a2Actor RotateX 180
a2Actor SetPosition 1 0 1
[a2Actor GetProperty] SetColor 1 0.3 0.3
[a2Actor GetProperty] SetSpecularColor 1 1 1
[a2Actor GetProperty] SetSpecular 0.3
[a2Actor GetProperty] SetSpecularPower 20
[a2Actor GetProperty] SetAmbient 0.2
[a2Actor GetProperty] SetDiffuse 0.8

# draw the elevation arrows
vtkLODActor a3Actor
a3Actor SetMapper arrowMapper
a3Actor RotateZ 180
a3Actor RotateX 90
a3Actor SetPosition 1 -1 0
[a3Actor GetProperty] SetColor 0.3 1 0.3
[a3Actor GetProperty] SetSpecularColor 1 1 1
[a3Actor GetProperty] SetSpecular 0.3
[a3Actor GetProperty] SetSpecularPower 20
[a3Actor GetProperty] SetAmbient 0.2
[a3Actor GetProperty] SetDiffuse 0.8

vtkLODActor a4Actor
a4Actor SetMapper arrowMapper
a4Actor RotateZ 180
a4Actor RotateX -90
a4Actor SetPosition 1 1 0
[a4Actor GetProperty] SetColor 0.3 1 0.3
[a4Actor GetProperty] SetSpecularColor 1 1 1
[a4Actor GetProperty] SetSpecular 0.3
[a4Actor GetProperty] SetSpecularPower 20
[a4Actor GetProperty] SetAmbient 0.2
[a4Actor GetProperty] SetDiffuse 0.8

# draw the DOP
vtkTransform arrowT2
arrowT2 Scale 1 0.6 1
arrowT2 RotateY 90

vtkTransformPolyDataFilter arrowTF2
arrowTF2 SetInputData pd2
arrowTF2 SetTransform arrowT2

vtkRotationalExtrusionFilter arrowREF
arrowREF SetInputConnection [arrowTF2 GetOutputPort]
arrowREF CappingOff
arrowREF SetResolution 30

vtkPolyDataMapper spikeMapper
spikeMapper SetInputConnection [arrowREF GetOutputPort]

vtkLODActor a5Actor
a5Actor SetMapper spikeMapper
a5Actor SetScale .3 .3 .6
a5Actor RotateY 90
a5Actor SetPosition -2 0 0
[a5Actor GetProperty] SetColor 1 0.3 1
[a5Actor GetProperty] SetAmbient 0.2
[a5Actor GetProperty] SetDiffuse 0.8

# focal point
vtkSphereSource fps
fps SetRadius 0.5
vtkPolyDataMapper fpMapper
fpMapper SetInputConnection [fps GetOutputPort]
vtkLODActor fpActor
fpActor SetMapper fpMapper
fpActor SetPosition -9 0 0
[fpActor GetProperty] SetSpecularColor 1 1 1
[fpActor GetProperty] SetSpecular 0.3
[fpActor GetProperty] SetAmbient 0.2
[fpActor GetProperty] SetDiffuse 0.8
[fpActor GetProperty] SetSpecularPower 20

# create the roll arrows
vtkWarpTo arrowWT2
arrowWT2 SetInputConnection [arrowCF GetOutputPort]
arrowWT2 SetPosition 5 0 2.5
arrowWT2 SetScaleFactor 0.95
arrowWT2 AbsoluteOn

vtkTransform arrowT3
arrowT3 Translate -2.50358 0 -1.70408
arrowT3 Scale 0.5 0.3 1

vtkTransformFilter arrowTF3
arrowTF3 SetInputConnection [arrowWT2 GetOutputPort]
arrowTF3 SetTransform arrowT3

vtkDataSetMapper arrowMapper2
arrowMapper2 SetInputConnection [arrowTF3 GetOutputPort]
arrowMapper2 ScalarVisibilityOff

# draw the roll arrows
vtkLODActor a6Actor
a6Actor SetMapper arrowMapper2
a6Actor RotateZ 90
a6Actor SetPosition -4 0 0
a6Actor SetScale 1.5 1.5 1.5
[a6Actor GetProperty] SetColor 1 1 0.3
[a6Actor GetProperty] SetSpecularColor 1 1 1
[a6Actor GetProperty] SetSpecular 0.3
[a6Actor GetProperty] SetSpecularPower 20
[a6Actor GetProperty] SetAmbient 0.2
[a6Actor GetProperty] SetDiffuse 0.8

# Add the actors to the renderer, set the background and size
ren1 AddActor camActor
ren1 AddActor a1Actor
ren1 AddActor a2Actor
ren1 AddActor a3Actor
ren1 AddActor a4Actor
ren1 AddActor a5Actor
ren1 AddActor a6Actor
ren1 AddActor fpActor
ren1 SetBackground 0.1 0.2 0.4
renWin SetSize 300 300

# render the image
iren AddObserver UserEvent {wm deiconify .vtkInteract}
ren1 ResetCamera
set cam1 [ren1 GetActiveCamera]
$cam1 Zoom 1.5
$cam1 Azimuth 150
$cam1 Elevation 30

iren Initialize

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

# for testing
set threshold 15