H*[[]´#!#ï‚#[*‡H
The interfaces and implementation modules are listed below in an order compatible with compile order.
COGDebug, COGDebugImpl - Basic debugging.
 Creates and exports a typscript viewer (in, out) and an all-purpose ERROR (Error)
COGRandom, COGRandomImpl - Random real numbers numbers.
 Initializes the Cedar Random package and exports a routine (Toss) that produces random real numbers, uniformly distributed in a given interval. (These numbers are obtained by scaling random INTs, so they are not really uniform).
COGCart, COGCartImpl - Basic plane geometry in Cartesian coordinates.
 Defines vectors, points and boxes in two-dimensional cartesian coordinates. Exports geometrical operators like vector addition, multiplication, scaling, rotation, dot product, length and distance. Exports also a random vector routine and some primitives useful in scaling points for plotting.
COGHomo, COGHomoImpl - Basic plane geometry in homogeneous coordinates.
 Similar to COGCart, using homogeneous coordinates [x, y, w] for points, vectors and lines (this allows somewhat uniform handling of "points at infinity"). Contains also a couple of routines to convert to Cartesian coordinates. The procedure ShouldConnect24 is used in building Delaunay diagrams.
COGSpace, COGSpaceImpl - Basic geometry in Cartesian 3-space.
 Defines points and vectors in 3-space ([x, y, z]), and some geometrical operations, including rotation and mirroring on a plane and multiplication by a coordinate transformation matrix.
COGDiagram, COGDiagramImpl - 2-dimensional grids.
 General 2-D grids (graphs embedded in orientable 2-D manifolds). Defines edge structure (vertex and face records are client-defined), operations for constructing and modifying such grids. Also exports procedures for traversing all edges/vertices, and for topologically sorting the vertices according to a partial order defined by a subset of the edges.
 The routines in this module define and maintain only the edge structure of the diagrams; vertex and face data records are client-defined and client-maintained. The client is also responsible for keeping track of connectivity, genus and other such global properties.
COGDrawing, COGDrawingIml - Viewers for drawing collections of geometrical objects.
 Implements Drawing viewers. Such a viewer has a dynamical set of Objects that are automatically displayed in the viewer, and can be selectively deleted, added or modified in rasndom order. Contains also some extension to CedarGraphics that allow plotting of points and segments given in homogeneous coordinates.
 An Object is basically a record containing a pointer to some client-defined entity, a procedure that knows how to paint that entity, and some internal links that associate the object with its parent drawing. Each object also has a painting order, and three extra fields (color, size and style) which may be used to modify the behavior of the painting procedures in a client-defined way.
 A Drawing viewer also has a somewhat simplified mechanism for adding menu entries, and for attaching A Drawing viewer also has a property list (LISP style) that can be used to keep parameters
COGAll - Configuration including all of the above modules.
COGVoronoi, COGVoronoiImpl - Definition of basic structures for Voronoi diagrams.
 Defines a Voronoi (or, rather, Delaunay) diagram as a 2-D grid of edges, with a specific format for vertex and face records. The edge structure is pointed to by a head record, which also contains the number of vertices and faces, and other similar information. Implements also the routines that know how to paint Delaunay diagrams and isolated edges, vertices and faces in a Drawing viewer.
 The effect of these routines is affected by the properties $Voronoi, $ENums and $VNums of the Drawing. When non-NIL, the first prperty causes the dual (Voronoi) diagram to be drawn, instead of the Delaunay; the other two properties cause edge and vertex numbers to be displayed.
COGVorTest, COGVorTestImpl - Initial viewer setup for testing Voronoi algorithms.
Creates and exports a Drawing viewer (theDrawing) and adds to it a single object, a Delaunay diagram consisting of a triangle with dummy data points at infinity. Also exposrts the routines ShowEdge, ShowVertex and ShowRegion, that allow individual elements of Delaunay diagrams to be highlighted in theDrawing. Adds the "Voronoi", "ENums" and "VNums" entries to the viewer's menu.
COGVorIncrImpl - Incremental construction of Voronoi diagrams.
Attaches to the viewer created by COGVorTest a new mouse action (triggered by the left button) that inserts the mouse position as a new data point of the Delaunay diagram. Also adds to the viewer a "ThrowTen" menu entry that inserts ten random points in the diagram. Both use the incremental Voronoui algorithm.
COGVorLeePImpl - Implements the Lee-Preparata structure and point location algorithm.
Attaches to the viewer two