3D Geometry Types

The Geom package provides an implementation of 3D geometric objects complying with STEP, part 42. In particular, it provides functions for:

- description of points, vectors, curves and surfaces,

- their positioning in 3D space using axis or coordinate systems, and

- their geometric transformation, by applying translations, rotations, symmetries, scaling transformations and combinations thereof.

The key characteristic of Geom curves and surfaces is that they are parameterized. Each class provides functions to work with the parametric equation of the curve or surface, and, in particular, to compute:

- the point of parameter u on a curve, or

- the point of parameters (u, v) on a surface.

together with the derivative vectors of order 1, 2, ... N at this point.

As a consequence of this parameterization, a Geom curve or surface is naturally oriented.

Parameterization and orientation differentiate elementary Geom curves and surfaces from the classes of the same (or similar) names found in the gp package. The Geom package also provides conversion functions to transform a Geom object into a gp object, and vice-versa, when such transformation is possible.

Moreover, the Geom package provides more complex curves and surfaces, including:

- Bezier and BSpline curves and surfaces,

- swept surfaces, for example surfaces of revolution and surfaces of linear extrusion,

- trimmed curves and surfaces, and

- offset curves and surfaces.

Geom objects are organized according to an inheritance structure over several levels. Thus, a sphere (concrete class Geom_SphericalSurface) is also an elementary surface and inherits from the abstract class Geom_ElementarySurface, while a Bezier surface (concrete class Geom_BezierSurface) is also a bounded surface and inherits from the abstract class Geom_BoundedSurface; both these examples are also surfaces (abstract class Geom_Surface). Curves, points and vectors inherit from the abstract class Geom_Geometry which describes the properties common to any geometric object from the Geom package.

This inheritance structure is open and it is possible to describe new objects, which inherit from those provided in the Geom package, on the condition that they respect the behavior of the classes from which they are to inherit.

Finally, Geom objects can be shared within more complex data structures. This is why they are used within topological data structures, for example.

The Geom package uses the services of the gp package to:

- implement elementary algebraic calculus and basic analytic geometry,

- describe geometric transformations which can be applied to Geom objects,

- describe the elementary data structures of Geom objects.

However, the Geom package essentially provides data structures and not algorithms. You can refer to the GC package to find more evolved construction algorithms for Geom objects.