# Geometry

## Geometry

Geometry refers to the physical size, shape, and location of items (such as points, curves, and surfaces), independent of their topological-relationships. Geometric properties of objects include length, area, and volume. Geometric measurements include distance and angle.

The ACIS philosophy related to geometric definitions is that the representation should be essentially coordinate system independent, numerically stable, and easily transformed. To this end, every geometry class definition uses positions in space, directions, and displacements between positions. In addition, some definitions require scalar values to represent distances or dimensionless quantities.

ACIS geometry can be categorized using a variety of criteria. One categorization is based upon the difference between persistent and non-persistent objects. Persistent objects that become part of the persistent model are derived from ENTITY. Geometry classes that are not derived from ENTITY may be used as part of the definition of persistent geometry classes or they may be used as construction geometry. To help you distinguish between persistent and non-persistent geometry classes, the names of classes that are derived from ENTITY are in UPPERCASE and the names of the ones that are not are in lowercase. (There is an exception to this rule, but in general this rule will help you understand which is which.)

ACIS geometry can be categorized according to the dimensionality of the object and the space in which it resides. ACIS geometry falls into four categories:

## Types of Curves and Surfaces

This section describes various types of curves and surfaces supported by ACIS, and the classes used to implement them.

## Curves

The concept of a curve captures the intuitive idea of a geometrical one-dimensional and continuous object. ACIS supports two general types of curves: analytic and interpolated.

## Surfaces

The concept of a surface captures the intuitive idea of a geometrical two-dimensional and continuous object. ACIS supports two general types of surfaces: analytic and sculpted. (Sculpted surfaces are sometimes referred to as parametric surfaces or spline surfaces.)

## Parameter Space Curves

A parameter space curve is a two-dimensional curve that lies in the parameter space of a surface.

## Construction and Model Geometry

ACIS implements two distinct forms of geometry: construction geometry refers to the C++ classes that contain the mathematical definitions of geometric objects; model geometry refers to the C++ classes that add Model Management functionality to the construction geometry classes.

## Construction Geometry

The construction geometry classes are lightweight, and, by themselves, are temporary in nature and cannot be saved as part of the user's model. They can be used on-the-fly for mathematical calculations, or can be included as part of the model geometry.

Construction geometry classes have lowercase names. These classes include SPAposition, cone, ellipse, helix, intcurve, pcurve, plane, sphere, spline, straight, and torus. The math class SPAtransf, which represents a 3D affine transformation, is often grouped with the construction geometry classes for discussion.

For example, the sphere class (lowercase) is a construction geometry class that mathematically defines a spherical surface in both xyz object space and in uv parameter space. It contains methods that construct, destroy, modify, inquire, and evaluate the sphere. It does not contain any model management methods and cannot be directly saved to an ACIS save file.

## Model Geometry

Model geometry is persistent and saved with the model. Model geometry classes provide model management functionality on top of the geometry definition. (They include construction geometry classes as part of their data structures.) Model management includes saving and restoring of model data, history and roll, transformations, and the ability to attach system-defined or user-defined attributes for carrying application data along with the model objects.

Model geometry classes are derived from the ENTITY class, and have UPPERCASE names. These classes include APOINT, CONE, ELLIPSE, HELIX, INTCURVE, PCURVE, PLANE, SPHERE, SPLINE, STRAIGHT, and TORUS. The math class TRANSFORM, which represents a transformation, is often grouped with the model geometry classes for discussion; it is saved as part of the model.

For example, the SPHERE class (UPPERCASE) is a model geometry class that defines a spherical surface in the persistent model. It includes as one of its data elements a sphere (lowercase). It provides methods for identification, save and restore, history and roll, multiple user use counts, and other common model management operations. It also provides methods to set the sphere's center and radius, and to transform the sphere's location. This can be saved to an ACIS save file and the saved data includes the geometric data from the sphere class.

## Geometric Operations

### Constructing Geometry

ACIS provides a wide variety of techniques to construct geometric objects (instances of model geometry and construction geometry classes.) Model geometry objects are frequently constructed by high level modeling operations, whereas construction geometry objects are typically constructed by lower level operations. For a discussion regarding the construction of geometric objects refer to Constructing Geometry.

### Destructing Geometry

The destruction of geometric objects depends upon the type of object and how it is being used by ACIS or the application. For a discussion regarding the destruction of geometric objects refer to Destructing Geometry.

### Approximating Geometry

Any ACIS curve or surface can be approximated by a B-spline curve or surface. Moreover, any curve lying on a surface can be approximated by a B-spline curve in the parameter space of the surface. For more information, refer to Approximations.

### Converting between Analytic and B-spline Geometry

Analytic curves and surfaces can be converted into B-splines. (There are precise NURBS representations for all analytic curves and surfaces, with the exception of helixes.) Procedural curves and surfaces can be converted into an approximate B-spline representation. In addition, a procedural or B-spline curve or surface that is nearly equivalent to an analytic curve or surface can be simplified using the approximating analytic geometry. For more information, refer to Spline Conversion.

### Trimming, Subsetting, and Extending Geometry

Trimming and Subsetting reduce the usable region of a curve or surface. Trimming permanently alters the underlying definition; subsetting does not. Subsetting allows a portion of a curve or surface to be used by an algorithm, rather than the entire curve or surface. Extending is the opposite of trimming. It enlarges the portion of a curve or surface that is defined. For more information regarding these operations, refer to Trimming, Subsetting, and Extending Geometry.

### Geometric Computations

ACIS contains many means of performing geometric computations, ranging from low level curve and surface evaluations to higher level analyses, such as calculating the minimum distance between two complex objects. For more information, refer to Geometric Computations.

## Geometry Topics

### Procedural Geometry

Main article: Procedural Geometry

Procedural is an adjective applying to curves and surfaces that are defined implicitly by geometric requirements. A curve or surface is not procedural if it is defined by an explicit formula: for example, B-spline curves and surfaces, straight lines, circles, spheres, and planes are not procedural. Procedural curves and surfaces may arise when modeling operations are performed on other geometric elements: for example, when two surfaces are intersected or a curve is offset.

### Geometric Entities

Main article: Geometric Entities

Model geometry classes are derived from the ENTITY class and inherit model management-related functionality from it. Moreover, specific types of curves and surfaces inherit functionality and data from the CURVE and SURFACE classes. Refer to the main article for more information on the derivation of the model geometry classes.

### Spline Interface

Main article: Spline Interface

ACIS contains a set of functions that provide a procedural interface to B-spline functionality. This collection of functions is often referred to as the Spline Interface. The three principal objects used by this interface are the bs3_surface, bs3_curve, and bs2_curve.

### Use Counting

Main article: Use Counting

Many geometry classes and geometry-related classes can be shared by multiple "owners" and, therefore, are use-counted. Examples include: APOINT, CURVE, SURFACE, int_cur, par_cur, spl_sur, and law. Refer to the main article for more information on use counting.