The link to code/demos: here.

Sample grid data: here.

Visibility project material: here

Here is what happened in class.

- Week 1 [Jan 20, 23]: Introduction to GIS. Intro to C. Intro to OpenGL.

Project 1

Materials:- Intro.pdf | Pointers.pdf
- Emacs: Emacs reference card | Emacs quick reference
- The C programming language (wikipedia)
- The C Programming language
- The history of C
- C programming tutorial (by Steve Holmes)
- OpenGL: The Redbook : OpenGL Programming Guide (Chapters 1, 2, 3)
- Sample source code: graphics1.tar | graphics2.tar

- Week 2 [Jan 27, 30]: Intro to databases.

Materials:- IntroDB.pdf | Questions.pdf
- Readings:
- A relational model of data for large shared data banks (Codd, 1970)
- A good read for context on database models: What goes around comes around (Stonebraker, Hellerstein)
- General reading: The anatomy of a database system (Stonebraker, Hellerstein)
- Trivia: Edgar Codd | Codd's 12 rules

- Week 3,4 [Feb 3, 5, 10, 12]: RDBMS and spatial data. Topological data representation.

Materials:- spatialData.pdf
- Readings:
- DCEL (Half-edge) data structure:
- The half-edge data structure (from Computer Graphics Algorithms FAQ)
- DCEL data structure for 3d graphics (Bryan Holmes)
- The half-edge data structure (Max McGuire)
- Designing and implementing a half-edge data structure (Bronniman, WAE 2001)

- Quad-edge: Quad-edge data structures and library (Heckbert)

- DCEL (Half-edge) data structure:

- Week 5 [Feb 17, 19]: Virtual memory system. I/O-model and I/O-analysis.
Topics: Scanning. I/O-analysis of searching with a BST; quicksort, heapsort, mergesort. I/O-efficient sorting. I/O-efficient flow.

Materials:

- IOalgorithms.pdf
- Readings:
- Wiki: virtual memory
- Good blog on basic systems isssue (Gustavo Duarte)

- Week 6, 7 [Feb 24, 26, March 3, 5]: Intro to
geometric algorithms and fundamental geometric techniques:
divide-and-conquer, line-sweep and incremental construction.
Topics: Area of a triangle, area of a convex and non-convex polygon. Orientation test. Collinearity. Betweenness. Segment intersection test. Point-in-polygon test. Convex hulls. Closest pair of points. Visibility. Segment intersection.

Speakers:

- Seth Glickman: A general point-in-polygon test.
- Will Richard: Convex hull. Incremental construction in O(n
^{2}). Improved incremental construction in O(n lg n). - Laura: Visibility on terrains. A brute-force quadratic algorith. A line-sweep algorithm for computing visibility on grid terrains.
- Jack Morrison: A divide-and-conquer algorithm for finding the closest pair of points.
- George Slavov: A divide-and-conquer algorithm for convex hull.
- Jeremy Fishman: Finding the intersections between a set of vertical and horizontal line segments.
- Tucker Hermans: Using A* to speed up Dijkstra SP algorithm.
- Laura: Convex-hull lower bound (reduction sorting to ordered CH).
- Laura: A line-sweep algorithm for finding the pairwise intersections of a set of line-segments in the plane (Bentley-Ottmann sweep).

Materials:- introGeom.pdf
- SP animation: here
- Bentley-Ottmann sweep: demo
- Readings:
- Bentley-Ottmann sweep: notes (M. Schmid)

- Week 8 [March 24, 26]: Visibility on terrains.
Speakers:

- Laura: A different sweep algorithm for computing visibility on terrains. An I/O-efficient algorithm for computing visibility.
- Mark McGranaghan: An O(lg n) approximation algorithm for vertex cover.
- Guarding a terrain.

Materials:- Readings:

- Week 9 [March 31, Apr 2]: Line simplification. Terrain simplification.
Speakers:

- Kyle Hebert: Douglas-Peucker algorithm for line simplification.
- Imai-Iri algorithm for line simplification.
- Surface simplification. Decimation. Incremental refinement.

Materials:- gridvis.pdf
- Readings:
- Line simplification: Speeding DP simplification algorithm (Hershberger, Snoeyink) [see sec 1,2,3 for DP in O(n lg n)]
- Line simplification: A new approach to subdivision and simplification (de Berg, van Kreveld, Schirra) [see sec. 3 for Imai-Iri]
- Terrain simplification: Digital elevation models and TIN algorithms (van Kreveld)
- Terrain simplification: Fast polygonal approximation of terrains and heigh fields (Garland & Heckbert)

- Week 10, 11, 12 [Apr 7, 9, 14, 16, 21, 23]:
Visibility.

Materials:- Readings:
- Approximating the visible region of a point in a terrain (Boaz Ben-Moshe, Paz carmi, Matthew Katz, Alenex 2004).
- Visibility preserving terrain simplification (Ben-Moshe, Joe Mitchell, Matthew Katz, Yuval Nir, SoSG 2002)
- Algorithms for visibility compytations on digital terrain models (Leila de Floriani and Paola Magillo)
- Representing the visibility structure of apolyhedral terrain through a horizon map (de Folriani, Magillo)
- Fast horizon computation on all points of a terrain with visibility and shading application (J. Stewart, IEEE Trans. Vis & CG, 1997)
- Computing teh approximate visibility map, with applications to form factors and discontinuity meshing (J. Stewart and Tasso Karkanis, 1998)
- Hierarchical visibility in terrains (J. Stewart, Eurographics Rendering Workshop, 1997)
- Smugglers and border guards - the geostar project at RPI A(Franklin, Inanc, Xie, Tracy, Cutler, Andrade, and Luk, ACMGIS 2007ACM GIS 2007)
- Multiple observer sitting and path planning on compressed terrain (Tracy, Franklin, Cutler, Andrade, Franklin Luk, Inanc, and Xie, SPIE 2007)
- Tradeoffs when multiple observer siting on large terrain cells ( Franklin and Vogt, SDH 2006)
- Efficient observer siting on large terrain cells (Franklin and Vogt, GIScience 2004)
- Approximating visibility (Franklin, GIScience 2000).
- Higher isn't necessarily better: Visibility algorithms and paper experiments (Franklin and Ray, SDH 1994).

- Week 13 [Apr 28, 30]: Voronoi diagrams and Delaunay triangulations.

Materials:- Demo: VoroGlide | Fortune's sweep
- Readings:

- Week 14 [May 5]: Class summary. Invited talk.

Topics we did not cover:

- TINs in GIS and TIN algorithms. Isoline extraction and the contour tree.
- An I/O-efficient priority queue.
- Visibility of arbitrary objects. The horizon-tree.
- Edge-quadtrees and segment intersection (map overlay).
- The art-galery problem (polygon guarding). Heuristics for polygon guarding.
- Guarding 1D-polygonal chains. Heuristics.
- A 2-approxomation for TSP using Delaunay triangulations.