The Image Algebra Ada (IAA) system is the basis for a programming environment that enables the nearly direct use of image algebra by an Ada programmer. The system has two components: a translator which converts the IAA source into pure Ada and runtime support packages for the resulting programs. The most important data structures in this system are images. An image is a map from a set of points (the domain of the image) to values in some Ada type. A point is an n-tuple of integers (any number of dimensions is supported). Points are usually interpreted as being represented in Cartesian coordinates however in principle other coordinate systems e. g. polar could be used. A design goal of IAA was to allow arbitrary domains while still supporting " boxy" domains (parailelepipeds) efficiently. A naive strategy for this is to have one representation for boxes which records the bounds of the box and one for non-boxes which is a linear list of the points. The approach taken however avoids having two different representations. We decompose the domain into slices along one dimension and use an interval representation for consecutive identical slices. This can represent arbitrary sets and achieves its least space and time costs for boxy sets. The representation is recursive: boxes resemble lists and nonboxes resemble trees. With this representation non-boxy domains are fairly compact when they represent areas or
Juan J. MurilloJoseph N. Wilson
Cathryn M. BelislePamela A. Horner