Updating documentation and examples with new core namespaces
[shapes.git] / examples / features / lightdemo3.shape
blob9075f5008bf06d04debe9045a912d30bf3d3912a
1 /** This file is part of Shapes.
2  **
3  ** Shapes is free software: you can redistribute it and/or modify
4  ** it under the terms of the GNU General Public License as published by
5  ** the Free Software Foundation, either version 3 of the License, or
6  ** any later version.
7  **
8  ** Shapes is distributed in the hope that it will be useful,
9  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
10  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  ** GNU General Public License for more details.
12  **
13  ** You should have received a copy of the GNU General Public License
14  ** along with Shapes.  If not, see <http://www.gnu.org/licenses/>.
15  **
16  ** Copyright 2008, 2014, 2015 Henrik Tidefelt
17  **/
19 ##lookin ..Shapes
20 ##lookin ..Shapes..Layout
21 ##lookin ..Shapes..Geometry3D
23 •zbuf: Graphics3D..newZBuf
25 r: 10cm
26 ##unit w = 3.4cm
27 obj:
28     @nonstroking:[gray 0.8]
29   & @reflections:[phong 1]
30   & @autointensity:[gray 0.1]
31   & @autoscattering:[phong 0.2]
32   & @shadeorder:'2
33   & @facetresolution:1cm
34   |
35   [Graphics3D..facet (r,~5cm,~0.5w)--(r,5cm,~0.5w)--(r,5cm,0.5w)--(r,~5cm,0.5w)--cycle
36          [Graphics3D..facetnormal (r,0cm,~1cm) [normalized (r,0cm,~1cm)]]
37          [Graphics3D..facetnormal (r,0cm,1cm) [normalized (r,0cm,1cm)]]
38          [Graphics3D..facetnormal (r,5cm,0cm) [normalized (r,5cm,0cm)]]]
40 [[Data..range 20° 160° 20°].foldsl
41  \ p e •st →
42   !{
43     •st << [Geometry3D..rotate (0,1,0) ~e] [] obj
44     p
45   }
46  void
47  •zbuf]
49 •zbuf << [shift (10cm,3cm,10cm)] [] [specular_light [gray 0.9]]
51 zbuf: •zbuf;
53 tmp: [bboxed_enlarge [view zbuf] (5mm,5mm)]
55 IO..•page << @nonstroking:Traits..BW..BLACK | [Graphics..fill [Layout..bbox tmp]]
56 IO..•page << tmp