To achieve functional independence for various free form curves and surfaces derived from
intcurve,
spline, and
pcurve,
ACIS provides three classes for parameter space curve and surface representations:
|
|
bs3_curve
|
Represents a curve derived from an
intcurve. The representation is a NURBS type that handles open, closed, and periodic rational and nonrational curve representations. If a new curve is derived from the
intcurve class, a method must be provided to calculate at least an approximate
bs3_curve for the new curve. This means that the
bs3_curve representing an
ACIS defined spline curve may not be exact.
|
|
bs2_curve
|
Has same representation as the
bs3_curve, except that it is two dimensional.
|
|
bs3_surface
|
Represents surfaces derived from a
spline. The representation is a NURBS type that handles open, closed, and periodic rational and nonrational surface representations. If a new surface is derived from class
spline, a method must be provided to calculate at least an approximate
bs3_surface for the new surface. This means that the
bs3_surface representing an
ACIS defined spline surface may not be exact.
|
|
Use the methods defined in the base classes for all queries about the spline curves and spline surfaces. As in
ACIS, the internal representation may not be an exact one.
ACIS does special processing in the base class to return exact results. Also, if a new surface type or curve type is derived from the base classes, the derived class must support the methods declared virtual in the base classes.
|
|
A parameter space curve (bs2_curve) is a mapping from an interval of the real line into a 2D real vector space (parameter 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, and the direction of the first derivative with respect to the parameter must be continuous. This direction is the positive sense of the curve.
|
|
Parameterization of curves is transformation-independent. Therefore, the transformation of a
bs2_curve is a
NULL operation.
|
|
A
bs2_curve is always associated with a surface that maps the parameter space image into 3D real space (object space). Thus, the two mappings together are considered to be a single mapping from a real interval into object space. Most of the properties of a parameter space curve relate to this combined mapping.
|
|
If the two ends of the curve are different in object space, the curve is open (Figure 7-1). If they are the same, it is closed. If, in addition, the curve joins itself smoothly, then the curve is periodic, with its period being the length of the interval on which it is primarily defined. A periodic curve is defined for all parameter values, by adding a multiple of the period to the parameter value so that the result is within the definition interval, and evaluating the curve at that resultant parameter. The point at the ends of the primary interval is the seam. If the surface is periodic, then a closed or periodic parameter space curve may not be closed in parameter space, but its end values may differ by the surface parameter period in one or both directions.
|
|
A
bs2_curve is always associated with a
bs3_curve lying in (or fitted to) the surface. It assists in the determination of the surface parameter values corresponding to object space points on the 3D curve. It does this by using the parameter value on the 3D curve to evaluate the 2D curve giving an approximation to the surface parameter values for iterative refinement. For this reason, a
bs2_curve must always have the same parameter range as its associated
bs3_curve, and its internal parameterization must be similar (though not necessarily identical) to that of the
bs3_curve. A
bs2_curve may have the same sense as its associated
bs3_curve, or be opposite. In the latter case, the parameterization is negated one to the other.
|
|
The parameter curve (pcurve) is a 2D spline curve in the bi-parametric space of a parametric surface. A
pcurve is attached to each coedge of a face lying on a parametric surface. It is separate from the intersection curve (intcurve) associated with the edge of the coedge, but also approximates the true intersection curve.
|
|
Thus, at an edge common to two faces, each lying on a parametric surface, there is an intersection curve (a 3D spline in model space) and two
pcurves, one in each of the parametric surfaces.
|
|
The
PCURVE class is derived directly from the
ENTITY class and contains:
|
|
|
An unsigned integer to record a use count.
|
|
An integer type (n).
|
|
Either a
pcurve (if
n is 0) or a reference to a
CURVE (if
n is not 0).
|
|
The
PCURVE class records the geometry of a coedge in the parameter space of the face on which it borders. A
PCURVE is attached as geometry to a coedge of the face. Each coedge of a face lying on a spline surface must reference a
PCURVE.
|
|
The parameterization of the
PCURVE is similar to that of the 3D curve. Both have the same limits (or are negated if they are in opposite directions). One traces out an edge of a face lying on a parametric surface by setting values of
t in
F(t) or in
S(G(t)), where a point on the parametric surface is given by (x,y,z) =
S(u,v).
|
|
In either case, a curve is obtained that approximates the true curve of intersection. The two curves are similar but not identical. In general, they differ by small amounts in position and in parameterization.
|
|
For a
PCURVE stored in this way, the integer
n in the
PCURVE is set to +1, -1, +2 or -2, indicating that the 2D parametric curve is found within the referenced
INTCURVE. If
n is negative, the
bs2_curve within the
intcurve is negated.
|
|
For a
PCURVE with
n = 0, the details are held in a
pcurve that contains:
|
|
|
A pointer to an internal description termed a
par_cur.
|
|
A sense flag (logical) that, if
TRUE, indicates that the
par_cur is reversed.
|
|
The
par_cur contains:
|
|
|
A 2D
bs2_curve(u,v) = G(t).
|
|
A
fit_tolerance.
|
|
A pointer to the spline surface with respect to the defined 2D curve surface.
|
|
This form of
PCURVE is employed for example when a parametric surface is constructed by sweeping a parametric curve along a curve. The
PCURVE is a constant parameter line along the edge of the swept surface patch.
|