Programming Language Support for Geometric Computations

Mark Gordon Segal

EECS Department
University of California, Berkeley
Technical Report No. UCB/CSD-90-557
January 1990

http://www2.eecs.berkeley.edu/Pubs/TechRpts/1990/CSD-90-557.pdf

Implementing an algorithm that computes the values of geometric quantities has required their translation into explicit coordinate arrays comprehensible in an appropriate computer language. The simplicity and intuition inherent in the mathematical expression of geometric objects is lost in a profusion of coordinates rendering programs difficult to implement, understand, and debug.

This problem is overcome by providing a set of programming language constructs based on geometric objects rather than their coordinate representations. These objects and operations on them are adapted from standard mathematical usage. The actual coordinate computations are hidden and carried out automatically, resulting in a concise program looking much like its mathematical counterpart.

These constructs are suitable for programming a range of geometric computations. Examples show their use in the calculations of linear geometry, computer graphics, finite element analysis, relativistic kinematics and robotics.

A compiler for the language constructs can check geometric expression syntax and semantics. It can also recognize special operators and operands (diagonal or sparse matrices, for instance) so that unnecessary and possibly inaccurate floating-point operations are automatically avoided. Calls to a runtime package actually carry out the operations on representations of geometric objects. The issues involved in writing such a compiler and its associated runtime package are discussed.

A preliminary implementation is presented and the prospects for its generalization assessed.

Advisor: Carlo H. Séquin


BibTeX citation:

@phdthesis{Segal:CSD-90-557,
    Author = {Segal, Mark Gordon},
    Title = {Programming Language Support for Geometric Computations},
    School = {EECS Department, University of California, Berkeley},
    Year = {1990},
    Month = {Jan},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/1990/6173.html},
    Number = {UCB/CSD-90-557},
    Abstract = {Implementing an algorithm that computes the values of geometric quantities has required their translation into explicit coordinate arrays comprehensible in an appropriate computer language.  The simplicity and intuition inherent in the mathematical expression of geometric objects is lost in a profusion of coordinates rendering programs difficult to implement, understand, and debug.  <p>This problem is overcome by providing a set of programming language constructs based on geometric objects rather than their coordinate representations. These objects and operations on them are adapted from standard mathematical usage. The actual coordinate computations are hidden and carried out automatically, resulting in a concise program looking much like its mathematical counterpart. <p>These constructs are suitable for programming a range of geometric computations.  Examples show their use in the calculations of linear geometry, computer graphics, finite element analysis, relativistic kinematics and robotics. <p>A compiler for the language constructs can check geometric expression syntax and semantics. It can also recognize special operators and operands (diagonal or sparse matrices, for instance) so that unnecessary and possibly inaccurate floating-point operations are automatically avoided. Calls to a runtime package actually carry out the operations on representations of geometric objects. The issues involved in writing such a compiler and its associated runtime package are discussed. <p>A preliminary implementation is presented and the prospects for its generalization assessed.}
}

EndNote citation:

%0 Thesis
%A Segal, Mark Gordon
%T Programming Language Support for Geometric Computations
%I EECS Department, University of California, Berkeley
%D 1990
%@ UCB/CSD-90-557
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/1990/6173.html
%F Segal:CSD-90-557