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
6 #Category: Visualization
7 #Title: Penrose triangle on perspective view
9 pload MODELING VISUALIZATION
10 # Ray-Tracing doesn't work with Compatible Profile on macOS
11 if { $::tcl_platform(os) == "Darwin" } { vcaps -core }
13 # procedure to define box dimensions
18 set scale [expr $scale * $ratio]
19 return [list 1.8*$scale 1.8*$scale 1.3*$scale]
23 eval box b1 0 0 0 [defbox]
24 eval box b2 2 0 0 [defbox]
25 eval box b3 4 0 0 [defbox]
26 eval box b4 6 0 0 [defbox]
27 eval box b5 6 -1.5 0 [defbox]
28 eval box b6 6 -3 0 [defbox]
29 eval box b7 6 -4.5 0 [defbox]
30 eval box b8 6 -6 0 [defbox]
31 eval box b9 6 -6 1 [defbox]
32 eval box b10 6 -6 2 [defbox]
34 # cut last box by prisms created from the first two to make impression
35 # that it is overlapped by these on selected view (see vviewparams below)
38 prism p0 b1_5 12.3 -14 6.8
40 prism p1 b2_3 12 -14 6.8
44 # make some boxes hollow
45 for {set i 1} {$i <= 1} {incr i} {
46 set dim [bounding b$i -save xmin ymin zmin xmax ymax zmax]
47 set dx [dval xmax-xmin]
48 set x1 [dval xmin+0.1*$dx]
49 set x2 [dval ymin+0.1*$dx]
50 set x3 [dval zmin+0.1*$dx]
51 box bc $x1 $x2 $x3 0.8*$dx 0.8*$dx $dx
57 vinit Penrose w=1024 h=512
58 vbackground -color WHITE
59 vrenderparams -rayTrace -fsaa on -reflections off -shadows off
61 # set camera position and adjust lights
62 vcamera -persp -fovy 25
63 vviewparams -eye 14 -14 6.8 -up 0 0 1 -at 4 -4 0 -scale 70
66 vlight dirlight1 -type DIRECTIONAL -direction 1 -2 -10 -head 1 -color WHITE
67 vlight dirlight2 -type DIRECTIONAL -direction 0 -10 0 -head 1 -color WHITE
70 vdisplay b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
72 # set colors like in boxes of on OCC logo
84 # set material to plastic for better look
85 for {set i 1} {$i <= 10} {incr i} {vsetmaterial b$i plastic}
87 vdrawtext label "Which\nbox\nis\ncloser\nto\nyou?" -pos 0 -6 -2 -color BLACK -halign left -valign bottom -angle 0 -zoom 0 -height 40