README.rst
1The Curv Shape Library
2======================
3The shape library is a high level interface for constructing
4coloured, animated geometric shapes in 2 and 3 dimensions.
5It is designed both for ease of use and for expressive power.
6
7The shape library provides a set of graphical "building blocks",
8which can be plugged together in many different ways to construct shapes.
9These building blocks comprise: constructors, for making new graphical values;
10transformations, for transforming one graphical value into another; and
11operators for combining several graphical values to make a new graphical value.
12Each building block has an intuitive, visual interpretation which can be explored
13in the graphics window. At a deeper level,
14there is also a mathematical interpretation, and by understanding the math
15you can learn to create new building blocks.
16
17The shape library is built in to Curv; you don't need to explicitly include
18an external library. The library is written entirely in Curv; you can read
19the source code to learn how to create new blocks.
20
21Graphical Data Types
22--------------------
23The Curv shape library has the following graphical data types:
24
25shape
26 A 2D or 3D geometric shape.
27
28 * `Shapes`_
29 * `Shape Constructors`_
30 * `Boolean Operations`_
31 * `Transformations`_
32 * `2D to 3D`_
33 * `3D to 2D`_
34 * `Repetition`_
35 * `Distance Field Operations`_
36
37texture
38 A texture is an infinite, possibly animated colour pattern
39 that can be applied to a shape, giving it colour.
40 Textures can be 2D or 3D.
41 They can be constructed by composing intensity fields and colour maps.
42
43 * `Textures`_
44 * `Transformations`_
45 * `Repetition`_
46
47intensity field
48 An intensity field is a colour pattern with the colours abstracted away,
49 leaving only a pattern of intensity values, which are numbers between 0
50 and 1. Intensity fields can be animated.
51 Mathematically, a function that maps [x,y,z,t] onto an intensity,
52 where [x,y,z] is a point in space, and t is time.
53
54 * `Intensity Fields`_
55
56colour map
57 A continuous range of colours, which can be applied to an intensity field to
58 construct a texture.
59 Mathematically,
60 a function that maps an intensity value between 0 and 1 onto a colour.
61
62 * `Colour Maps`_
63
64colour
65 A colour value.
66
67 * `Colour`_
68
69Other Topics
70------------
71* `Debug`_
72* `Future Work`_
73* `Bibliography`_
74
75.. _`2D to 3D`: 2D_to_3D.rst
76.. _`3D to 2D`: 3D_to_2D.rst
77.. _`Bibliography`: Bibliography.rst
78.. _`Boolean Operations`: Boolean.rst
79.. _`Colour`: Colour.rst
80.. _`Colour Maps`: Colour_Maps.rst
81.. _`Debug`: Debug.rst
82.. _`Distance Field Operations`: Distance_Field_Operations.rst
83.. _`Future Work`: Future_Work.rst
84.. _`Intensity Fields`: Intensity_Fields.rst
85.. _`Repetition`: Repetition.rst
86.. _`Shape Constructors`: Shape_Constructors.rst
87.. _`Shapes`: Shapes.rst
88.. _`Textures`: Textures.rst
89.. _`Transformations`: Transformations.rst
90