canvas3d .c -height 300 -width 300 pack .c update set prj [ .c create matrix -value {{2.0 0.0 0.0 0.0} {0.0 2.0 0.0 0.0} \ {0.0 0.0 1.0 1.0} {0.0 0.0 -2.0 0.0}} ] set wrl [ .c create matrix -value {{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} \ {0.0 0.0 1.0 0.0} {0.0 0.0 0.0 1.0}} ] set vw [ .c create matrix -value {{1.0 0.0 0.0 0.0} {0.0 1.0 0.0 0.0} \ {0.0 0.0 1.0 0.0} {0.0 0.0 40.0 1.0}} ] set back [ .c create surface ] set view [ .c create viewport -proj $prj -world $wrl -view $vw \ -background $back ] update set red [ .c create surface -emissive { 0 0 1 0 } -diffuse { 0 0 1 0 } \ -specular { 0 0 1 0 } -ramp 1 ] set t31 [.c create cylinder -radius 8 -sections 20 -surface $red] .c translate $t31 10 10 10 .c fill $t31 wireframe set t32 [.c create cone -radius 6 -sections 15 -surface $red] .c fill $t32 wireframe .c rotate $t32 x 1.5 .c translate $t32 -10 -5 0 set t33 [.c create polygon -radius 8 -edges 10 -center { 8 -5 5 } \ -surface $red] .c fill $t33 wireframe .c update .c itemconfigure $view -viewpoint { 0 -5 -5 } -up { 1 1 0 } .c update