Interpolated Curve
List of: Discussion Topic
Subjects: Construction Geometry, Model Geometry
Contents: Fundamental Concepts

An interpolated curve (also known as an intcurve because of its construction geometry class intcurve) may represent an intersection between two surfaces, the projection of a curve onto a surface, or any other general curve that is not defined by an explicit equation. An interpolated curve is used for the intersection of two surfaces where there is not a "closed-form" representation available, for exact spline curves, and for silhouette curves.

An interpolated curve, also called an object space curve, is a mapping from an interval of the real line into a 3D real vector space (object space). This mapping is continuous, and one-to-one, except possibly at the ends of the interval whose images may coincide. It must be differentiable twice, and the first derivative must be continuous and non-zero.

If the two ends of the curve are different in object space, the curve is open (refer to Figure 7-1). If they are the same, it is closed. If, in addition, the curve joins itself smoothly, the curve is periodic, with its period being the length of the interval on which it is primarily defined. A periodic curve my be evaluated outside its principal range.


Figure 7-1. Curve Definitions

Classes

The intcurve construction geometry class provides an abstraction of the concept of a parametric representation of an interpolated curve. This interpolated curve may be either an exact curve or an approximate (3D B-spline) curve that is a fit to a true curve to within some fit tolerance.

There are two ways to define a 3D B-spline curve:


1. Directly define a curve.


2. Approximate a surface/surface intersection whose primary definition is the surfaces.

Both form part of an intcurve. The fit_tolerance (an upper limit on the distance between the true curve and the approximating curve) is zero in the first case, and positive in the second.

The intcurve class contains a reversed-sense flag and a pointer to another data structure. The flag indicates whether or not the sense of the curve is reversed with respect to the underlying spline. The pointer is to a data structure defined by the int_cur class (or some class derived from it) and contains the bulk of the information about the curve. This pointer to a separate data structure serves two purposes.

First, when duplicating an intcurve, the copy simply points to the original int_cur, thus avoiding copying the bulk of the data. A use count is maintained in each int_cur, which allows automatic duplication if modifying a shared int_cur, and deletion of any int_cur no longer accessible.

Second, the int_cur class contains virtual functions to perform all the operations defined for intcurve that depend on the method of definition of the true curve. New curve types are defined by declaring and implementing derived classes. The intcurve and everything using it require no changes to utilize the new definition.

The int_cur class contains the following curve defining information:

A use count indicating the number of times the int_curve is referred.
A pointer to a bs3_curve, which represents a spline approximation to the true curve. Refer to the section Parameter Space Curves and Surfaces.
A fitting tolerance representing the precision of the spline approximation to the true curve. This is zero for an exact fit and positive for an approximation.
Pointers to (up to) two surfaces defining the true curve. A class derived from int_cur may use these in different ways, but the true curve must lie on each of the non-NULL surfaces, if any. Either or both surface may be NULL.
Pointers to 2D parameter space curves with respect to the defining surfaces described above. If the corresponding surface does not exists or is not parametric, this pointer is NULL.

When a surface is intersected with another surface, the intersection routines return an intcurve as part of the result. This contains the intersection approximated as a 3D parametric curve, (x,y,z) = F(t), for a <= t <= b, where a and b are the parameter values at the points on the curve corresponding to the ends of the edge. Figure 7-2 illustrates surface/surface intersection curves.


Figure 7-2. Surface to Surface Intersections

The parameter values are stored in the edge record as start_param and end_param for the start and end vertices. If the edge sense is forward along the curve, the edge stores (start_param, end_param) as (a, b). If the edge sense is reversed with respect to the curve, the edge stores (start_param, end_param) as (-b, -a). Thus, start_param is less than end_param in both cases.

If one or both of the surfaces are splines, the intcurve also contains one or two 2D parametric curves of the form, (u,v) = G(t), for a <= t <= b.

The intersection process produces the information for the 2D and 3D curve(s) at the same time, and so it is convenient to return all the curves in a single intcurve.

If the fit tolerance is not zero, the bs3_curve records an approximation to the intersection curve. When necessary, points on the approximate curve are relaxed until they lie on both surfaces (always present). The sense of the bs3_curve at a point on the curve is in the direction of the cross product Na x Nb whereNa and Nb are the normals to the surfaces a and b at that point. The bs2_curves, if present, have the same sense as the bs3_curve.

If the fit_tolerance is zero, the bs3_curve stands alone. It is exact and no surfaces or bs2_curves are present. This form of intcurve is useful, for example in a parametric curve associated with an edge of a wire, where the parametric curve has been defined separately--perhaps by specifying the control points of its polygon.

Restrictions

ACIS does not distinguish between the curvatures on either side of a point; therefore, curves used for direct definition (zero-fit tolerance) must have a continuous curvature.

No assumption is made about the relationship between parameter values and object space distances, and parameterization is transformation-independent. However, it is advantageous for the parameterization to be as homogeneous as possible, because various iterative processes are likely to be more reliable and faster.
PDF/FCG/07CRVSRF.PDF
HTM/DATA/ACIS/FCG/07CRVSRF/0003.HTM