0031067: Visualization - Aspect_Window::DoResize() should be a non-const method
[occt.git] / samples / tcl / Penrose.tcl
CommitLineData
92ac0eb7 1# Generate set of boxes resembling OCC logo and arranged in the shape of
2# Penrose triangle on perspective view.
3# The sample shows how the viewer can be manipulated to produce required
4# visual effect
5
6#Category: Visualization
7#Title: Penrose triangle on perspective view
8
9pload MODELING VISUALIZATION
10
11# procedure to define box dimensions
12set scale 1.
13set ratio 0.94
14proc defbox {} {
15 global scale ratio
16 set scale [expr $scale * $ratio]
17 return [list 1.8*$scale 1.8*$scale 1.3*$scale]
18}
19
20# make set of boxes
21eval box b1 0 0 0 [defbox]
22eval box b2 2 0 0 [defbox]
23eval box b3 4 0 0 [defbox]
24eval box b4 6 0 0 [defbox]
25eval box b5 6 -1.5 0 [defbox]
26eval box b6 6 -3 0 [defbox]
27eval box b7 6 -4.5 0 [defbox]
28eval box b8 6 -6 0 [defbox]
29eval box b9 6 -6 1 [defbox]
30eval box b10 6 -6 2 [defbox]
31
32# cut last box by prisms created from the first two to make impression
33# that it is overlapped by these on selected view (see vviewparams below)
34explode b1 f
35explode b2 f
36prism p0 b1_5 12.3 -14 6.8
37bcut bx b10 p0
38prism p1 b2_3 12 -14 6.8
39bcut bxx bx p1
40tcopy bxx b10
41
42# make some boxes hollow
43for {set i 1} {$i <= 1} {incr i} {
1f26f80b 44 set dim [bounding b$i -save xmin ymin zmin xmax ymax zmax]
1a0339b4 45 set dx [dval xmax-xmin]
46 set x1 [dval xmin+0.1*$dx]
47 set x2 [dval ymin+0.1*$dx]
48 set x3 [dval zmin+0.1*$dx]
92ac0eb7 49 box bc $x1 $x2 $x3 0.8*$dx 0.8*$dx $dx
50 bcut bb b$i bc
51 tcopy bb b$i
52}
53
54# prepare a view
55vinit Penrose w=1024 h=512
293211ae 56vbackground -color WHITE
92ac0eb7 57vrenderparams -rayTrace -fsaa on -reflections off -shadows off
58
59# set camera position and adjust lights
60vcamera -persp -fovy 25
61vviewparams -eye 14 -14 6.8 -up 0 0 1 -at 4 -4 0 -scale 70
62vsetdispmode 1
63vlight def
64vlight add directional direction 1 -2 -10 head 1 color white
65vlight add directional direction 0 -10 0 head 1 color white
66
67# display boxes
68vdisplay b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
69
70# set colors like in boxes of on OCC logo
aaf8d6a9 71vsetcolor b1 DD0029
72vsetcolor b2 F6DD00
73vsetcolor b3 98F918
74vsetcolor b4 E9007A
75vsetcolor b5 007ABC
76vsetcolor b6 93007A
77vsetcolor b7 EE9800
78vsetcolor b8 00B489
79vsetcolor b9 00A47A
80vsetcolor b10 007ABC
92ac0eb7 81
82# set material to plastic for better look
83for {set i 1} {$i <= 10} {incr i} {vsetmaterial b$i plastic}
84
aaf8d6a9 85vdrawtext label "Which\nbox\nis\ncloser\nto\nyou?" -pos 0 -6 -2 -color BLACK -halign left -valign bottom -angle 0 -zoom 0 -height 40