Table of contents Chapter 1. Getting started in PostScript 1. Simple drawing 2. Simple coordinate changes 3. Coordinate frames 4. Doing arithmetic in PostScript 5. Errors 6. Working with files and viewers GhostView or GSView 7. Some fine points 8. A trick for eliminating redundancy 9. Summary 10. Code Chapter 2. Elementary coordinate geometry 1. Points and vectors 2. Areas of parallelograms 3. Lengths 4. Vector projections 5. Rotations 6. The cosine rule 7. Dot products in higher dimensions 8. Lines 9. Code Chapter 3. Variables and procedures 1. Variables in PostScript 2. Procedures in PostScript 3. Keeping track of where you are 4. Passing arguments to procedures 5. Procedures as functions 6. Local variables 7. A final improvement Chapter 4. Coordinates and conditionals 1. Coordinates 2. How PostScript stores coordinate transformations 3. Picturing the coordinate system 4. Moving into three dimensions 5. How coordinate changes are made 6. Drawing infinite lines: conditionals in PostScript 7. Another way to draw lines 8. Clipping 9. Order counts 10. Code Chapter 5. Drawing polygons: loops and arrays 1. The repeat loop 2. The for loop 3. The loop loop 1 2 7 9 11 14 16 19 22 22 24 26 26 27 32 34 37 39 41 41 44 46 46 48 50 52 54 55 57 59 59 62 65 67 71 73 78 81 82 83 84 84 86 87 Table of contents 4. Graphing functions 5. General polygons 6. Clipping polygons 7. Code Chapter 6. Curves 1. Arcs 2. Fancier curves 3. Bézier curves 4. How to use Bézier curves 5. The mathematics of Bézier curves 6. Quadratic Bézier curves 7. Mathematical motivation 8. Weighted averages 9. How the computer draws Bézier curves 10. Bernstein polynomials 11. This section brings you the letter O Interlude Chapter 7. Drawing curves automatically: procedures as arguments 1. Drawing an hyperbola 2. Parametrized curves 3. Drawing graphs automatically 4. Drawing parametrized paths automatically 5. How to use it 6. How it works 7. Code Chapter 8. Non-linear 2D transformations: deconstructing paths 1. Two dimensional transformations 2. Conformal transforms 3. Transforming paths 4. Maps 5. Fonts want to be free 6. Code Chapter 9. Recursion in PostScript 1. The perils of recursion 2. Sorting 3. Convex hulls Chapter 10. Perspective and homogeneous coordinates 1. The projective plane 2. Boy’s surface 3. Projective transformations 4. The fundamental theorem 5. Projective lines 6. A remark about solving linear systems 7. The GIMP perspective tool, revisited 8. Projections in 2D 9. Perspective in 3D Chapter 11. Introduction to drawing in three dimensions Chapter 12. Transformations in 3D 1. Rigid transformations 2. Dot and cross products 3. Linear transformations and matrices 4. Changing coordinate systems 2 87 88 90 94 95 95 96 97 100 108 109 110 113 116 118 120 123 126 126 130 131 133 135 137 138 140 140 144 145 146 150 150 153 153 155 159 165 167 169 171 172 175 176 179 180 181 185 187 187 189 195 198 Table of contents 5. Rigid linear transformations 6. Orthogonal transformations in 2D 7. Orthogonal transformations in 3D 8. Calculating the effect of an axial rotation 9. Finding the axis and angle 10. Euler’s Theorem 11. More about projections Chapter 13. PostScript in 3D 1. A survey of the package 2. The 3D graphics environment 3. Coordinate transformations 4. Drawing 5. Surfaces 6. Code Chapter 14. Drawing surfaces in 3D 1. Faces 2. Polyhedra 3. Visibility for convex polyhedra 4. Shading 5. Smooth surfaces 6. Smoother surfaces 7. Abandoning convexity 8. Summary 9. Code Chapter 15. The regular polyhedra 1. What exactly is a regular polyhedron? 2. There are no more than five regular solids 3. The proof of Euclid XI.21 4. Trihedral angles 5. The results we need from Book I 6. Constructing the regular polyhedra 7. Verifying regularity 8. Code 9. References Appendix 1. Summary of PostScript commands 1. Mathematical functions 2. Stack operations 3. Arrays 4. Dictionaries 5. Conditionals 6. Loops 7. Conversions 8. File handling and miscellaneous 9. Display 10. Graphics state 11. Coordinates 12. Drawing 13. Displaying text 14. Errors 15. Alphabetical list Appendix 2. Setting up your PostScript environment 1. Editing PostScript files 3 201 202 204 207 209 210 211 212 213 217 219 221 222 223 225 225 227 229 231 235 239 244 249 250 252 253 254 258 261 263 265 269 269 272 274 274 275 276 277 277 278 279 279 280 281 282 283 284 285 285 288 288 Table of contents 2. Running external files 3. Making images 4. Printing files Appendix 3. Structured PostScript documents Appendix 4. Simple text display 1. Simple PostScript text 2. Outline fonts Appendix 5. Zooming 1. Zooming 2. An explicit procedure 3. Playing around 4. Code Appendix 6. Evaluating polynomials: getting along without variables 1. The most straightforward way to do it 2. Horner’s method 3. Evaluating the derivatives efficiently 4. Evaluating Bernstein polynomials 5. Code Appendix 7. Importing PostScript files 1. Labelling a graph 2. Importing TEX text 3. Fancy work Epilogue 4 289 290 291 293 296 296 298 300 300 301 302 303 304 304 305 307 309 310 311 311 315 317 321