Instructor: Joseph O'Rourke
Textbook: None! This course
is somewhat unusual and is not approximated by any existing textbook. This saves you
money but puts a demand on your attendance, attention, and note-taking.
Location: Burton 209.
Time: TR 9:00-10:20AM.
Prerequisites: How the Internet Works (CSC102) or equivalent knowledge;
Computer Science I (CSC 111); Four yrs of HS math.
Two Tracks: The course has two tracks in the assignments: (1) for those counting it for Computer Science major programming or theory credit, or (2)
for those counting it a generic "elective," e.g., for the Digital Arts Minor.
Computer Science majors are welcome to follow Track 2 if it is not fulfilling the programming or theory requirements. And anyone nominally in Track 2 can select the Track-1 assignment any week.
Programming Language:
I am assuming only exposure to Python from Computer Science I. Programming experience in C or C++ is not required. One-course experience in C++ or Java will suffice to supplant experience with Python.
Software:
Course Structure: We meet two times a week; there is no lab, although we will do many "minilabs" during class time. There will be one assignment per week, due (generally) each Wednesday at midnight. Collaboration is permitted, even encouraged, on assignments. See schedule below for details.
Exams: There will be two one-week take-home "exams," which are very much like assignments except that (a) they focus more on theory whereas the assignments focus on programming, and (b) unlike assignments, there is no collaboration permitted. There is also a final (structured) project, due on the last day of the exam period.
Grades:
| 8 Assignments |
|
| Take-home Exams |
|
| Project |
|
O'Rourke Office Hours & Schedule
| Week/ Notes | Dates | Software | Topics (general) | Topics (specific) | Links | Animations |
Labs & Assignments |
| 1 Notes1 |
7 Sep | Postscript | Introduction, overview | Stack, Ops, Coord system, path, stroke, ... | First Guide to Postscript ; Postscript Tutorial ; PostScript Language Tutorial & Cookbook ; PS Blue book examples |
Luxo Jr. | Lab1 Lab2 A1 due 14 Sep BOTW |
| 2 Notes2 Notes3 |
12,14 Sep | Postscript | 2D Transformations | Variables, Procedures gsave; grestore Boolean, If, For Text Transformations: translate, rotate, scale |
Windows: GSview; [also: emacs] Mac OS X: Ghostscript S.ps circles.ps fonts.ps spiral.ps |
Red's Dream | Lab3 Lab4 Lab5 |
| 3 Notes4 Notes5 |
19,21 Sep | OpenGL | Graphics hardware; 2D Transformations; Event programming |
OpenGL basics, graphics primitives OpenGL hardware pipeline Python, PyQt, PyOpenGL LUT, video cards, raster scans. Liquid crystal displays glPushMatrix(), Pop Matrix stack OpenGL pipeline |
Python PyQt PyOpenGL (PyOpenGL- 2.0.2.01.py2.4- numpy23.exe) glrectangle.py |
A2 due 21 Sep BOTW Lab6 |
|
| 4 Notes6 |
(26)MtDy, 28 Sep | OpenGL | Animation in OpenGL |
Misc. Python/OpenGL Animation revisited A3 preview |
glcircrot.py |
Lab7 Lab8 A3 due 29 Sep BOTW |
|
| 5 Notes7 Notes8 |
3,5 Oct | Mathematica GameMaker |
Mathematics of transformations Game programming: basic components |
Transformation matrices Composition of; Homogenous coords Mathematica GameMaker Resources: Rooms, Objects, Sprites, Events, Actions, etc. |
2D.Matrix.nb | Knick Knack |
Lab9 A4 due 12Oct BOTW Lab10 |
| 10 Oct | [Fall Break ] | ||||||
| 6 Notes9 |
12 Oct | GameMaker | Game programming | Events & Actions Spites Collisions Transform Sprites Drawing Events; Drawing Text Collision effects |
Hit.the.Rock.0.gm6 Hit.the.Rock.1.gm6 |
Ice Age: The Meltdown | Lab11 A5 due 20Oct BOTW |
| 7 Notes10 Notes11 |
17,19 Oct | GameMaker; Illustrator |
Game programming: advanced effects Bezier curves |
Scripts 2D Curves |
Hit.the.Rock.2.gm6 Hit.the.Rock.3.gm6 Hit.the.Rock.4.gm6 |
Toy Story I: Opening Scene | Lab12 A6 Take-Home due 26Oct BOTW/Answers |
| 8 Notes12 Notes13 |
24,26 Oct | Illustrator SketchUp |
Bezier curves & surfaces 3D design; 3D printing |
Parametric representations Bezier Curves: G.M.T Bezier Surfaces [Subdivision surfaces] 3D-Printing Z-corp Printer |
Bezier.GMT.nb Bezier curve applet (UNC) Bezier surfaces: applet1 (OGI); applet2 (Cornell) Teapot |
Toy Story I: Toys alive | Lab13 [no assignment] Lab14 |
| 9 Notes14 |
31,(2) Nov | SketchUp | 3D file structures Subdivision surfaces [2 Nov: NSF Advisory Mtg-- no class!] |
3D file types: .stl, .obj, VMRLNormal vectors; Reversing in SketchUp Subdivision surfaces |
Subdiv. Surf (UW) Catmull-Clark; Wiki | Geri's Game | Lab15 A7 due 9 Nov BOTW |
| 10 Notes15 Notes16 |
7,9 Nov | Mathematica | Perspective math | Perspective: Brunelleschi Vanishing pts, lines, horizon Perspective math; 4x4 Matrix; Homog. Coords. |
Perspective.Graphics.nb Perspective.Homogenous.nb |
Toy Story II: Geri; Al | Lab16 A8 due 16 Nov BOTW |
| 11 Notes17 Notes18 |
14,16 Nov | POV-Ray | Ray-tracing renders: Introduction | POV-Ray: Intro Coord system, camera, lights, colors Shapes: Sphere, plane "Textures" Reflectance Models: ambient, diffuse, specular. The Phong Reflectance model POV-ray: texture{}; pigment{}; finish{}. |
POV-Ray Tutorial ball5.pov |
Monster's Inc: Sully's fur | Lab17: balls Lab18: tori |
| 11+ Notes19 Notes20 |
21 Nov | POV-Ray | Ray-tracing project |
global ambient light Scene descrip. lang.: #declare identifiers; #local #if () ... #end float expressions, opers golds.inc, etc. Project Preview |
Project Links: 2005,
2004,
2003 chain.pov |
Monster's Inc: Boo | Lab19: chain |
| 23 | [Thanksgiving] | ||||||
| 11 Notes21 Notes22 |
28,30 Nov | POV-Ray | Ray Tracing | Shading; bumping normals Ray-object intersections CSG: Constructive Solid Geometry Lathe objects; splines |
Beene's Shading Notes bumps.pov difference.pov lathe.pov disk.pov |
Lab20: bumps A9 Take-Home due 14 Dec BOTW/Answers |
|
| 12 Notes23 Notes24 |
5,7 Dec | POV-Ray | Ray Tracing algorithm; Radiosity | Depth of tracing Ray tracing complexity Accelerating ray tracing Weaknesses in RT Bounding Box Hierarchy RT-ing CSG Antialiasing: supersampling Extended light sources [Atmospheric effects] Radiosity |
Xmas.pov towers.pov |
Incredibles: Hair | Lab: Project |
| 13 Notes25 |
12,14 Dec | POV-Ray | Texture mapping |
Texture mapping: color Bump mapping: normals image_maps: planar, spherical, cylindrical uv_mapping: sphere, box |
Texture Library ball.imagemap.pov box.imagemap.pov |
Lab21: image_map Project Specs |
|
| 22 Dec | [last day of final exam period] |