Introducing Djinn
A Geometric Interface for Solid Modelling


Adrian Bowyer
Stephen Cameron
Graham Jared
Ralph Martin
Alan Middleditch
Malcolm Sabin
John Woodwark


First published by the Geometric Modelling Society and Information Geometers Ltd. in May 1995. This is an online reissue and has not been revised.



Abstract


Solid modelling functionality can be made available for integration with applications by packaging it under an API. Kernel modellers already exist, but their API procedures are cast in terms of their underlying modelling paradigms. The aim of the Djinn project is to develop an innovative API for solid modelling research which is cast in terms of geometric operations on point-sets, not manipulations of model data-structures.

Ground rules for the API have been formulated. Its style relies heavily on hiding model data-structures and providing methods to interrogate them. Procedures to instantiate common geometric entities are to be provided explicitly in the API. The geometric scope of the API is to be non-manifold, stationary, three-dimensional point-sets. A bottom interface will be defined to allow more complex data-types, such as free-form surfaces, to be accessed indirectly. Ways are being explored to support useful but poorly defined modelling operations, such as 'tweaking', in the language of point-sets.



Contents


Abstract
 
The Djinn project
 
Call for contributions
Acknowledgements
 
1.Background to Djinn
  The availability of solid modellers for research
    Kernel modellers
    Solid modelling APIs
 
2.Objectives of the Djinn project
 
3.Style of the Djinn API
  Top and bottom interfaces
  Precision and formality in definition of the API
  Data hiding
  State and side-effects
  Error reporting
  Persistence
  Conformance
 
4.Scope of the Djinn API
  Geometric domain
    Dimensionality
    Point-set theory as a base for semantics
    Cellular models
    Approximate models
  Geometric objects
    Solids from surfaces
    Solids as connected components
    Free-form surface formulations
    Collectives
    Attributes
  Geometric operations
    Instantiation
    Modifications
    Transforms
    Sweeps
    Properties
    Relations
    Labelling new geometry
 
Conclusions
 
References



The Djinn project


The Djinn API is being developed by a group of modelling researchers (the authors of this report) and another group of applications researchers, together with the cooperation of vendors of commercial systems, all in the UK. The result is not primarily intended as a candidate for standardization, with all the delays that that implies, although we hope I may influence future standardization efforts. Implementations of Djinn are intended to be tools from which researchers can benefit in the medium term.

The project started in October 1994, and is scheduled to finish in September 1996. The deliverables will consist mainly of a pair of reports, of which this is the first. The second and final report will be published in hardback book form at the end of the project, and will contain a specification of the Djinn API. In addition, a demonstration C++ binding is planned.

This first report is designed to bring the Djinn project to the attention of the solid modelling community, and outlines the philosophy behind the project, and the likely format of the API that will be developed.



Call for contributions


We will be posting details of progress on the World Wide Web and we warmly welcome contributions and criticisms from the international community of solid modelling researchers and application researchers. Djinn's URL is: http://www.bath.ac.uk/~ensab/GMS/Djinn/djinn.html

We are already studying a number of existing solid modelling APIs (see the Acknowledgements and the References) but would welcome details of others.



Acknowledgements

The authors gratefully acknowledge support for the Djinn project by the Control, Design and Production Group of the UK Engineering and Physical Sciences Research Council.

We are also grateful to EDS Ltd. for supplying complimentary copies of the Parasolid modeller and associated documentation. We acknowledge documentation received without charge from the US Army Ballistics Research Laboratory, from Perspective Design Ltd., and from many academic colleagues.



1

Background to Djinn


Research in solid modelling has been in progress for, say, twenty-five years. Early arguments about the need for modellers—given those excellent drafting systems—already sound authentically medieval. Solid modelling is now a key technology without which effective CADCAM systems could not be built. There are many commercial solid modellers available, supported by large teams of programmers.

Dazzled by the scale of these ventures, some people suggest that building existing modelling techniques into larger software edifices is now the only activity of interest. Of course, consequent technologies such as product modelling are important and fashionable areas both for research and for new software products. However, there are still many useful shapes and processes wholly or partially beyond the reach of existing solid modelling techniques. In many cases, making further progress in technologies which rely on solid modelling means making further progress with the fundamentals of solid modelling itself.

Despite twenty-five years of work, problems remain at the heart of solid modelling: for instance, converting boundary models (a.k.a. B-reps) to set-theoretic models (a.k.a. CSG) [28], dealing with degeneracy and inaccuracy [10], and constructing mechanisms for variational modelling [13]. At the same time, the technology is being extended in new directions, including: tolerance modelling [31429], multidimensional [22] and cellular [2124] modelling, feature modelling and recognition [27], and physically based modelling [9]. And then there is the implementation of solid modelling algorithms—both extant and new—on parallel processors and other innovative hardware(e.g. [8]).

Of course, the need for research is not restricted to solid modelling itself. Enhanced rendering techniques and new CADCAM applications are widely reported. There are also many applications and potential applications of solid modelling in fields such as computer vision and robotics, and these fields have their own communities and literature. In short, there is a great deal of modelling work going on.


The availability of solid modellers for research

Naturally, research in the application of solid modelling requires a solid modeller. In the early days, it was common for applications work to be done by people attached to a group developing and maintaining a research modeller. The Cambridge CAD Group and the Leeds Geometric Modelling Project were typical examples of large UK groups that grew up in this way. Elsewhere, the TIPS group in Tokyo and the Production Automation Project in Rochester in the US were very well-known examples. Changes in funding policy have perhaps made it more difficult to build large groups to do research in solid modelling; certainly, there are fewer of them now. In any case, there is too much applications research going on for it to be organized in a satellite fashion around modelling research groups. Applications researchers have developed their own communities, as the scope and complexity of their work increases.

In the early days, research groups would make modellers—such asTIPS [19], BUILD [4] and PADL [33]—generally available to applications researchers, and projects powered by these venerable engines still continue (e.g. [1]). However, a modeller acquired on these terms can become an embarrassment after research work on the modeller itself has ceased. The obvious alternative is to use a commercial modeller, in the hope of more permanent support. For a long time, this route was unattractive because almost all commercial modellers were integral parts of CAD systems. Their interactive, mainly graphical, interfaces made it difficult to link the modellers to other programs. After a while, some commercial modellers, such as Romulus [37], were written in a form suitable for incorporation in more than one CAD system. Where affordable, modular systems of this sort made better research tools. Research modellers intended for specific application areas, such as the robotics modeller Robmod [6], have also developed in this direction.

Kernel modellers

Continuing simplification of access has led to the emergence of modellers explicitly conceived and labelled as kernel modellers, in which modelling functionality is packaged beneath an application programming interface, or API. Commercial kernel modellers include the boundary modellers ACIS [5] and Parasolid [35], a descendant of Romulus. Recently, Svlis [2] has demonstrated that set-theoretic modelling functionality can also be packaged as a kernel. Although few, kernel modellers have quickly become popular for applications research. However, they still pose some problems for the applications researchers and, less directly, for modelling researchers as well.

Using a kernel modeller, the very approachability of the technology can be a problem. As well as becoming dependent on a particular vendor, applications researchers can tether themselves to a particular modelling paradigm and even to a particular programming language. Object-oriented languages such as C++ make it very tempting to allow users access to data classes. Thus users can become further enmeshed by a commitment to one particular data-structure. This is paradoxical, as a major advantage of object-orientation is its ability to encapsulate and to hide detail from the user.

These problems for applications researchers are mirrored by the problems now faced by modelling researchers who want to get their techniques into use. With applications researchers locked into a particular vendor, it is increasingly difficult to get research ideas tested in practice. Even when modelling researchers offer new functionality that is extremely relevant to a particular application, it is difficult to find applications researchers prepared to make the painful transition from a commercially supported modeller to a research modeller with dubious support which also differs—obtrusively, if trivially—in every detail of implementation.

Solid modelling APIs

Although kernel modellers provide modelling functionality in a form designed for integration into a larger system, the facilities offered by existing interfaces are tied closely to the modelling paradigm in use and, indeed, also to the internal structure of the modeller. It is probably unreasonable to expect commercial, or for that matter academic, implementors of solid modelling systems to offer a more general interface than their modeller supports: certainly not without encouragement. Spontaneously specifying unused parts of an API involves work, and merely draws attention to absent or 'unimplemented' features.

However, some independent APIs have been specified. An early and well-known example is the AIS (Application Interface Specification) originally developed for CAM-I, and now a draft ANSI standard [23]. Both boundary and set-theoretic modelling paradigms are supported. Some operations, such as Boolean combinations, can be performed on either boundary or set-theoretic models; and low-level geometric operations (e.g. the creation of 'non-controversial' geometric items such as points, straight lines and planes) are common to both types of supporting modeller. But a number of operations address the boundary data-structure or set-operator tree directly. Thus the interface is effectively split into two parallel parts (albeit with shared elements), each servicing one of the alternative types of modeller.

In the same way, the STEP product data exchange standard (ISO 10303) accommodates both boundary and set-theoretic models, but again only in parallel; in fact, a look at Part 42 of STEP [20] shows that support for set-theoretic models is rather perfunctory. Note that, while STEP is of course a product data standard, it is relevant because there is a related API being developed, called SDAI [34]. But, in any case, STEP is probably unsuitable as a research interface by reason of simple inertia. Eastman has recently provided a penetrating critique [7] of ways in which STEP already lags behind current commercial (let alone research) modelling technology.



2

Objectives of the Djinn project


APIs such as AIS and SDAI provide a front-end to existing modelling paradigms. By contrast, the aim of the Djinn1 project is to determine a set of more abstract geometric data and operations that different types of modellers can support in a uniform way; and then to specify a non-commercial application programming interface (API) for solid modellers which is cast in terms of those abstractions. It is intended that Djinn may be supported by boundary modellers, set-theoretic modellers, and indeed any other type of modeller that unambiguously defines solid objects, for instance 'voxel' modellers based on oct-trees. As well as being independent of particular modelling data-structures and algorithms, the API should also be independent of specific programming languages. Further, there is no plan for any direct support for graphics, let alone a specific graphics environment, although operations that provide data in an appropriate form for generating graphics will be included.

The Djinn API is intended to be a tool that will help modelling researchers. But the Djinn project is itself research. It is not immediately obvious that a level exists at which practical modelling operations can be specified independent of a particular modelling paradigm.

The problem of converting boundary models to set-theoretic models has already been mentioned. Despite heroic efforts to find a solution [28], it would be foolish to define an API predicated on the availability of a general and workable solution to this historic obstacle. Converting to and from voxel modellers is even more challenging. Such digital solids are often used as approximations of shapes, from which many of the original characteristic entities (e.g. surface types) have been eliminated. In this case, the meaning of 'conversion', let alone its implementation, needs some thought.

While the writers of previous APIs have sidestepped issues of model conversion by supporting boundary and set-theoretic models in parallel, perhaps something better can be done which still does not require solutions to these classic conversion problems. Djinn is an attempt to achieve this by casting an API in the language of point-sets and avoiding explicit reference to model data structures: boundary representations, set-operator trees, voxels, or whatever.

While every modeller would not necessarily have to provide functionality to perform every procedure in the API, operations that were geometrically the same would be performed using the same procedures, irrespective of the underlying implementation. The calling program would manipulate models as a point-set data-type, and would not become involved in editing boundary graphs, set-expressions, oct-trees, or any other specific model data-structure. Other point-set entities, such as points and edges, would also be represented uniformly at the API level as point-sets.

As far as the authors are aware, this approach is new.



3

Style of the Djinn API


It is convenient to outline the style of the Djinn API at this point. The software engineering aspects of Djinn are, in practice, almost as important as its geometric coverage.

A major problem in using an API is the need to remember a large set of procedure names and argument types. In general, a minimalist approach is taken in Djinn, achieving richness by a combination of procedures, not by having a large number of them. Naturally, general procedures can involve more parameters than are convenient in certain common cases. Therefore, they need to be augmented by some convenient and intuitive specialized procedures: for creating well-known 'primitive' objects, for example.


Top and bottom interfaces

In addition to the Djinn procedures which support calls to the underlying modeller, a 'bottom interface' will also be supplied. This defines procedures that the modeller itself can invoke, and will provide a generalized mechanism for access to complicated geometric elements, such as free-form curves and surfaces, geometry embedded in two dimensions, and general half-spaces. These geometric elements are not supplied explicitly to the modeller; they are constructed and modified by software external to the Djinn implementation, which works with references to them.


Precision and formality in definition of the API

The meat of the Djinn API is the specification of a set of procedures. Pre- and post-conditions will be attached to the API calls, as well as facilities for error-handling. The possibility of using formal methods to define the calls has been considered, but the resource constraints on the Djinn project do not allow a fully fledged formal approach.

Although the whole philosophy of Djinn is against modeller-specific features, it is acknowledged that there is a need for passing auxiliary information to the underlying modeller: for instance parameters to improve efficiency, and practical ways of transmitting this information must be considered.

The problems of accuracy have already been mentioned. The form of data-structures and, especially, the specification of pre- and post-conditions, must take account of accuracy requirements, distinguishing clearly between the requirements to be met by ideal, and by actual, data.


Data hiding

Just three categories of data-type are planned. Their definitions aim to avoid the exposure of specific modelling data-structures:

It is not obvious exactly where the dividing line should come between simple and hiddewn data-types. This is a design decision to be taken in the course of developing Djinn.


State and side-effects

The philosophy of Djinn is to make the effect of procedure calls as predictable as possible.


Error reporting

It is essential that Djinn should provide mechanisms for reporting the level of success achieved by any procedure call. Thus, error-reporting mechanisms must be available that allow errors which are non-fatal—and may even be expected—to be processed efficiently during an active modelling session, but the error-reporting mechanisms should also provide adequate information for debugging. The following are some of the major facilities that are required:


Persistence

The labels which are given to geometric data cannot be addresses, as these are obviously very fragile. A part of the API will be required for 'input and output', but the nature and format of the data that is written out and read in will obviously vary from modeller to modeller. Labels and attributes would be expected to persist over an archival read and write cycle, but not necessarily over every internal operation (e.g. operations involving inheritance rules, where some labels or attributes might be destroyed). Of course, archiving of this sort precludes a file created by one modeller being read by another.

It is not expected that Djinn will itself support journalling (undo, redo etc.), although the design of Djinn should facilitate its implementation above the API. The requirement for journalling is in any case expected to be reduced if procedures have no side-effects.

Because Djinn does not specify the internal data-types or data-structures that the modeller must create or maintain, it does not provide a mechanism for two modellers to contribute functionality to an overall implementation, under one instance of the API. However, the possibility of an application calling two modellers running in tandem, each separately implemented under Djinn, is an interesting one.


Conformance

One of the classic criticisms of vendors' implementations of software standards (e.g. programming languages or data exchange file formats) is that vendors omit to implement some (maybe difficult) aspects of a standard, and cannot resist adding extra procedures. Djinn is not intended to become a standard; what is research for but inventing new things? So partial implementations which also provide new functionality are to be expected.

Furthermore, because Djinn is intended to be supported by modellers with very different technological bases, the quality of implementation must be permitted to vary. It is expected that some modellers will be able to respond (with useful results, not error-messages) to some API calls under one set of circumstances, but not under others.

What is a 'Djinn-compliant' API? At a trivial level, it is a set of procedures covering the API which return consistent error messages, even without any geometric functionality at all. At another level, it is the support of a coherent subset of Djinn procedures. A modeller which only allows primitives orthogonal to the axes cannot logically support a general rotation transform. A simple spatial-enumeration modeller does not hold (useful) face information and so cannot easily support procedures assigning labels to faces. It might be possible to enumerate some logically consistent subsets of the API but, equally, this may imply more about the underlying modellers than is appropriate.

At another level, implementations may be limited by simple matters such as storage, so that procedures cannot be supported merely because a model is too large. And at yet a further level, we have to note that accuracy of the results returned from calls to the API will also vary from implementation to implementation.

In summary, 'Djinn-compliant' modellers should be expected to provide access to their underlying representation in terms of point-sets, and to use the procedures provided by the Djinn API to achieve this.



4

Scope of the Djinn API

An appropriate scope for the Djinn API is now suggested, and some of the issues to be resolved are reviewed. This itemization may, perhaps, have some interest to the modelling community independent of the specific solutions which are scheduled to come later in the Djinn project.


Geometric domain

Every geometric modeller is limited in the range of shapes that it can handle (which is one reason for continuing research in geometric modelling). In designing Djinn, a target domain is essential. Since it is not suggested that every modeller should support the whole domain, it can and should be rich, providing plenty of incentive to extend coverage. On the other hand, excursions into fanciful generality, which is unlikely to be seriously supported within the life of the interface specification, will interfere with its usability by the application community.


Dimensionality

While acknowledging research interest in multi-dimensional models (i.e. systems supporting models of arbitrary dimensionality [22], the plan at present is to support entities of three or fewer dimensions, all embedded in three-dimensional space. That excludes both higher-dimensional entities and 'drafting' constructions. Even so, facilities must be provided to export the result of a sectioning operation and to import two-dimensional geometry for sweeping.

Further, it is not planned that Djinn will provide explicit support for objects in motion or parameterized objects. Initial discussions with applications researchers indicate that in many cases, even where moving or variable solids are important in applications, the geometric computations required can be adequately performed on static and invariant models (e.g. using sweeps or by sampling).

Point-set theory as a base for semantics

The abstraction on which Djinn is predicated is that of point-sets, with geometric entities of all dimensionalities up to three, defined as open point-sets embedded in three dimensions:
Point-set dimensionality Geometric elements
Nilvariate (0D) points
Univariate (1D) curves
Bivariate (2D) surfaces
Trivariate (3D) solids

Models may be constructed by set-operations on these entities. While they are defined in terms of open point-sets, both regularized and non-regularized set-operations will no doubt be required [18].

Set-theory has been strongly associated with the 'CSG' modelling community, and boundary modellers have typically exploited ideas from topology, such as Euler operators. However, it is not easy to escape from the observation that correct topology follows from solidity, not the other way around.

Cellular models

Support for cellular and non-manifold objects is essential, in particular for simplifications and meshing for finite-element analysis, and for representing hierarchies of features. It is intended that cellular models will be represented as collections of point-sets [1725].

Approximate models

Sometimes, models of point-sets are used as approximations to other, notionally exact, models: typically to make some computation more tractable. For instance, a quadric-surfaced model might be approximated by a faceted model or a voxel model. Approximations of this sort involve a level of imprecision which is grosser than, and of a different sort to, the imprecision already inherent, in reality, in 'exact' models, resulting from the use of floating-point numbers.

In the simplest case, an approximate model may be a strictly internal data-structure which is used to assist computations on the exact model, such as a voxel model used as a localizing spatial segmentation. In this case, the nature of the approximate model does not affect the results of computations (at least, only in the same way as any other choice of algorithm), and it should be invisible across the API.

More complex situations arise when approximate models are used to stand in for exact models. Such substitutions bring interesting problems in the design of an API. When a procedure is invoked to return an entity from the model, should this be: a entity taken from the approximate model, an approximation to the corresponding entity in the exact model, or a reconstruction of that exact entity? For instance, if a voxel model is approximating a quadric-surfaced model, and a procedure is called which should return a face, does the calling program expect to receive the face of a single voxel, a set of voxels corresponding to an exact face, or a reconstruction of the face, made by some fitting process?

At the level of the procedure call itself, there is no distinction, since all these data-types are hidden. However, knowing or controlling the level of approximation within the hidden data is obviously essential, and the API needs to be able to support whichever options are required. Significant problems include:

Finally, there needs to be a way to control the creation of approximate models, unless the underlying modeller is always able to decide autonomously when this is necessary. It seems unlikely that all the procedures needed to control model conversions can themselves be described purely in the language of point-sets.


Geometric objects

Most of the geometric objects required will be point-sets. However, some other simple geometric objects, such as vectors, as well as the usual numerical data-types, are also required.

It will not necessarily be possible explicitly to create geometric data of every type using the API. Some types of data will result from modelling operations. Intersection curves are good examples: there is unlikely to be any procedure which would allow synthetic intersection curves to be added to the model from outside, but procedures to interrogate intersection curves will have to be provided.

Procedures will certainly be provided to create primitives such as planes and natural quadrics explicitly, together with tori and probably cyclides and 'solid helices' (spring-shapes). Creation and interrogation of other geometry will be supported indirectly through the bottom interface.

Solids from surfaces

Solids cannot be constructed by set-theoretic operations on surfaces, and so set-theoretic modellers cannot easily support parametric surfaces: at least, not as faces of a solid. Boundary models can include parametric patches, but the topological consistency that is maintained within boundary models is not equivalent to a guarantee that the models are unambiguous representations of trivariate point-sets (e.g. after tweaking, but see also [12]).

One way to involve parametric surfaces in the creation of solids is to require surfaces to be supplied together with a bottom-interface procedure that serves the purpose of a point-membership test: some test on the surface which allows points to be classified as inside or outside a related volume. For instance, a ray might be cast from the point supplied, in a specified direction, and intersections with the surface counted. This provides a de facto solid, and is one way in which parametric surfaces were introduced into Boolean operations in early boundary modellers. But it is cumbersome; the point-set defined is not always a very convenient one to combine with others to get the solid required. Users of today's boundary modellers expect much more flexibility in 'stitching together' parametric surfaces, even at the expense of rigour.

Solids as connected components

A boundary model is a set of surfaces that divides space into two or more connected components. The connectivity structure of boundary models means that the number of components is usually known, so the idea of identifying connected components does not figure explicitly in the literature of boundary modellers. At the level of the Djinn API, however, a procedure that identifies and enumerates the connected components into which a model divides space would provide a more rigorous framework for creating solids by 'stitching'.

If a boundary modeller is supporting the API, recognition of connected components can be interpreted as a stitching operation, although accurate implementation of the API would require verification that the resulting model really represented the components. Note that a correct implementation would identify a 'leaky' boundary as one that did not contain a separate component. Failure of the procedure in this sense would merely result in the reporting of fewer components than expected.

Identifying connected components has been a topic of research in set-theoretic [32] and voxel modelling (in particular as represented by oct-trees [26]), and there seems no reason why the recognition of connected components of space could not be approached in the same way as the identification of connected components of a solid. By this route, one might find modelling systems based on set-theory and oct-trees which are able to create models from surfaces by the same sort of stitching methods previously associated uniquely with boundary models, but with results certain to be point-sets.

Free-form surface formulations

While current commercial modellers seem to be heavily focused on B-splines, and specifically NURBS, very many more types of parametric and implicit surface are of current interest in the research world. It is therefore appropriate for Djinn to support free-form surfaces generically, and not to attempt to provide separate procedures for each type. A number of specialist packages are available to provide surface creation and editing procedures (e.g. SISL [36]). Given the wide multiplicity of surface forms, especially parametric patches, this is obviously beneficial: potentially, the users of a solid modelling system can 'plug in' surface types common in their own industries, or proprietary surface formulations.

The mechanism for this is the import of references to external data through the top interface, and interrogation through the bottom interface: a second set of procedures defined as part of Djinn, which are called by the solid modeller supporting the API. Such procedures will allow properties such as surface normals to be discovered, and interrogations such as ray-tests performed. The procedures could be serviced by a surface geometry package, or by such a package embedded in other software, under the bottom interface.

Collectives

Since Djinn is deliberately avoiding exposure of the classic modelling data-structures at the API level, a neutral—but efficient—way of grouping geometric elements into models is essential. This would support operations such as extracting all the faces or edges of an object, or modelling assemblies; it would also address the requirements of cellular modelling.

Attributes

In addition to the primary labels by which geometric elements are identified across the API, it is necessary to handle externally defined attributes. Features, parametric models and constraints are important areas in modelling, but these technologies are in a state of development that makes it difficult to provide generalized functionality to incorporate them in an API. It is intended to provide attributes in a way that will facilitate these techniques as processes running above the API. However, it is fair to note that the support of generalized variational design in such an indirect way is definitely challenging.


Geometric operations

Instantiation

Appropriate procedures must be provided to instantiate the data-types outlined in the last section. It is likely to be convenient if bounded primitives can be created directly, and facilities are provided to create primitives in the positions where they are required: rather than obliging the user to bound semi-infinite primitives, and perform subsequent transforms explicitly.

Modifications

Geometric modifications, acting on data already instantiated, must be expressed in terms of point-sets. Booleans are of course formulated as set-theoretic operations, but others, such as blends [3031] and so-called 'local operations', such as tweaking [11], commonly associated with boundary models, may need considerable reformulation. Typically, they do not reliably map one point-set to another, and re-casting them in the language of point-sets is a problem to be addressed.

Transforms

There is a great range of transforms that could be allowed in a solid modelling API. It is well-known that the transforms which happen to be implementable using a particular mathematical technique, such as matrix multiplication of homogeneous coordinates, can force the domain of a modeller to include many unusual geometric objects which may be difficult to implement and infrequently used. Grouping transforms by invariants facilitates the selection of a more coherent set:

Transforms Invariants
Solid-body Distance
Scaling Distance ratios
Affine Infinity and ratios
Projective Straight lines and cross-ratios
Möbius Circles and sphere

Solid-body transforms provide a minimal set, but other possibilities will be considered. For instance, it may be convenient for users to be able to define their own transform routines, to be supplied as arguments to Djinn procedures.

Sweeps

A range of sweep operations should be supported, and Minkowski sums (also called set sums or vector sums) [16] provide a convenient formalism to describe these in terms of point-sets. Unfortunately, Minkowski sums do not give a complete set of useful sweeps (e.g. a profile rotating along a spine curve), and therefore possible extensions (e.g. performing the Minkowski sums in transformed coordinate systems) must be considered.

Where complicated two-dimensional profiles are required for sweep operations, it is envisaged that they will be defined as external data, imported by reference, and interrogated through the bottom interface.

Properties

These are intrinsic properties of a single point-set, such as integral properties, connectedness and genus.

It is also appropriate to add support for some powerful operations which are naturally stated in terms of point-sets, such as constructing Voronoi diagrams [15], even though they do not necessarily map straightforwardly on to existing modelling technologies.

Relations

These are properties of one object relative to another and include set-membership tests and boundary connectivity relationships, as well as interference and distance properties. It is obvious that some of these procedures are more easily computed by set-theoretic modellers, and others by boundary modellers, but both sorts of query are geometric and are supportable by both sorts of model.

Labelling new geometry

Because there will be no boundary representation or set-operator tree accessible through the Djinn interface, it is important to be able to access pieces of geometry through unique labels. Attaching labels to geometry as it is instantiated is relatively straightforward. However, as modelling operations are performed, geometric elements are destroyed and new ones created, which are unlabelled. API procedures accessing geometry must have a polite way of telling the calling program when geometric elements are defunct. It is equally important, but much more difficult, to provide a class of procedures for allocating labels to new elements on a purely geometric basis (e.g. a partial ordering in some specified direction), which does not rely on their location in an internal data-structure.



Conclusions


This document gives an overview of the topics that the authors have been considering as they have started to define the Djinn API. Our next publication is scheduled to be a book giving the Djinn definition.

Some or all of the text of this may be made available on the World Wide Web for comment prior to publication. Note again that Djinn's URL is: http://www.bath.ac.uk~ensab/GMS/Djinn/djinn.html

It is also our intention to place the C++ binding of Djinn into the public domain, and to make it available over the Internet by anonymous FTP.



References


1. G.P. Bassi, "Building a parametric CSG modeller for industrial environment: procedural representation and geometrical issues", in Set-theoretic Solid Modelling: Techniques and Applications (Proceedings of the CSG 94 Conference, Winchester) (321-335), Information Geometers, April 1994.
2. A. Bowyer, Svlis: Introduction and User Manual, Information Geometers 1994.
3. M. Boyer and N.F. Stewart, "Modelling spaces for toleranced objects", International Journal of Robotics Research 10,5 (570-582), October 1991.
4. I.C. Braid, "Notes on a geometric modeller", Cambridge University, Computer Laboratory CAD Group, Document 101, June 1980.
5. I.C. Braid, "Improving product models and kernel modellers", in Organisation of Engineering Knowledge for Product Modelling in Computer-Integrated Manufacturing, ed. T. Sata (275-299), Elsevier, 1989.
6. S.A. Cameron and J.C. Aylett, "Robmod: a geometry engine for robotics", Proceedings of the IEEE International Conference on Robotics and Automation, Philadelphia (880-885), April 1988.
7. C.M. Eastman, "Out of STEP?", Comment article in Computer-Aided Design 26,5 (338-340), May 1994.
8. J.L. Ellis, G. Kedem, R.J. Marisa, J.P. Menon and H.B. Voelcker, "The RayCasting engine and ray representations: a technical summary", International Journal of Computational Geometry and Applications 1,4 (247-380), December 1991.
9. I.A. Essa, S. Sclaroff and A.P. Pentland, "Physically based modelling for graphics and vision", Chapter 5 of Directions in Geometric Computing ed. R.R. Martin (161-218), Information Geometers, 1993.
10. S. Fortune, "Progress in computational geometry", Chapter 3 of Directions in Geometric Computing, ed. R.R. Martin (81-127), Information Geometers, 1993.
11. A.R. Grayer, "Alternative approaches in geometric modelling", Computer-Aided Design, 1,4 (189-192), May 1980.
12. C.M. Hoffmann and J.E. Hopcroft, "Geometric ambiguities in boundary representations", Computer-Aided Design 19,3 (141-148), 1987.
13. C.M. Hoffmann, "On the semantics of generative geometry representations", in Advances in Design Automation (ASME DE Vol. 65), 1993.
14. N.P. Juster, "Modelling and representation of dimensions and tolerances: a survey", Computer-Aided Design 24,1 (3-17), 1992.
15. D.A. Lavender, A. Bowyer, J.L. Davenport, A.F. Wallis and J.R. Woodwark, "Voronoi diagrams of set-theoretic solid models", IEEE Computer Graphics and Applications 12,5 (69-77), September 1992.
16. A.E. Middleditch "Application of vector sum operator", Computer-Aided Design 20,4 (183-188), May 1988.
17. A.E. Middleditch, "Cellular models of mixed dimension", Brunel University, Department of Computer Science, Technical Report BRU/CAE/92:3, April 1992.
18. A.E. Middleditch, "'The bug' and beyond", in Set-theoretic Solid Modelling: Techniques and Applications (Proceedings of the CSG 94 Conference, Winchester) (1-16), Information Geometers, April 1994.
19. N. Okino, H. Kakazu and H. Kubo, "TIPS-1: technical information processing system for computer-aided design, drawing and manufacturing", in Computer Languages for Numerical Control (Proceedings of the PROLAMAT 73 Conference, Budapest), ed. J. Hatvany, North-Holland (141-150), 1973.
20. J. Owen, STEP: An Introduction, Information Geometers, 1993.
21. A. Paoluzzi, F. Bernardini, C. Cattani and V. Ferrucci, "Dimension-independent modeling with simplicial complexes", ACM Transactions on Graphics 12,1 (56-102), January 1993.
22. S.J. Parry-Barwick and A. Bowyer, "Multidimensional set-theoretic feature recognition", to appear, Computer-Aided Design.
23. P. Ranyak, "Application Interface Specification (AIS): Volume I: Functional Specification", CAM-I Report R-94-PM-01 (Version 2.1), 1994.
24. J.R. Rossignac and M. O'Connor, "SGC: a dimension-independent model for pointsets with internal structures and incomplete boundaries", in Geometric Modeling for Product Engineering, eds. M.J. Wozny, J.U. Turner and K. Preiss (Proceedings of IFIP WG 5.2 Working Conference, Rensselaerville, September 1988) (145-180), North-Holland, 1990.
25. J.R. Rossignac and A.A.G. Requicha, "Constructive non-regularized geometry", Computer-Aided Design 23,1 (21-32), January/February 1991.
26. H. Samet and M. Tamminen, "Efficient component labelling of images of arbitrary dimension", University of Maryland Computer Science Department Report TR-1480, February 1985.
27. J.J. Shah, "Assessment of features technology", Computer-Aided Design 23,5 (331-343), June 1991.
28. V. Shapiro and D.L. Vossler, "Separation for boundary to CSG conversion", ACM Transactions on Graphics 12,1 (35-55), January 1993.
29. J.U. Turner and A.B. Gangoiti, "Tolerance analysis approaches in commercial software", Concurrent Engineering 1,2 (11-23), 1991.
30. J. Vida, R.R. Martin and T. Varady, "A survey of blending methods that use parametric surfaces", Computer-Aided Design 26,5 (341-365), May 1994.
31. J.R. Woodwark, "Blends in geometric modelling", in The Mathematics of Surfaces II, ed. R.R. Martin (225-297), Oxford University Press, 1987.
32. J.R. Woodwark "Splitting set-theoretic solid models into connected components", Geometric Modeling for Product Engineering, eds. M.J. Wozny, J.U. Turner and K. Preiss (Proceedings of the IFIP WG 5.2 Working Conference on Geometric Modeling, Rensselaerville, September 1988) (61-70), North-Holland, 1990.
33. "An Introduction to PADL", University of Rochester, Production Automation Project, Report TM 24, December 1974.
34. "Industrial automation systems and integration - Product data representation and exchange - Part 22: Implementation methods: Standard data access interface specification", ISO TC 184/SC4 N280 (committee draft), 1994.
35. "Overview of Parasolid", Parasolid Business Unit, EDS, March 1995.
36. "Modelling of complex shaped parts" and "Modelling of sheet metal parts", Sections 3.3.3 and 3.3.4 in IMPPACT: Integrated Modelling of Products and Processes using Advanced Computer Technologies (ESPRIT II - CIM III.1.3.1 Project 2165), eds. O. Björke and O. Myklebust (118-134), Tapir, 1992.
37. "Romulus", Proceedings of a Geometric Modelling Seminar, Robinson College Cambridge, 12-14 December 1983, ed. I.D. Faux, CAM-I Report P-83-GM-01, CAM-I Inc., Arlington, Texas, 1983.


1. Djinn: a demon of Arabian mythology, able to assume many forms, and to become "invisible at pleasure" [Brewer's Dictionary of Phrase and Fable]. This is an admirable pattern for a transparent interface. The astute reader will probably have already realized that "Djinn" is also an acronym—of a sort.
BACK TO TEXT


Back to the contents list Back to the Djinn publications page