CHAPTER 2 PARAMETRIC CURVES
This chapter introduces the types of parametric curves which
can be defined in the Sculptured Surfaces system. These
curves will be used in subsequent chapters to define
sculptured surfaces patches and for machine tool control.
Section 2.1 is concerned with conic arcs defined by a CURSEG
statement. Section 2.2 introduces spline curves and Section
2.3 is concerned with compound curves. The internal storage
of the curves is considered in Section 2.4 where the canonical
array is described in detail; the material in this section
may be omitted by those whose main interest is in the use of
the system.
A conic is a plane curve which can in two dimensional space be
represented by a quadratic equation in x and y. Possible
types of curve are straight lines, circles, ellipses,
parabolas and hyperbolas, all of which can be obtained as
plane sections of a cone. The Sculptured Surfaces system
makes it possible to precisely define arcs of any of these
curves, the type of curve produced being dependent upon the
input data. Note that in all cases an arc of finite length is
defined, not the complete conic. Essential differences
between these curves and the conic definitions described in
volume 1 chapter 9 are their finite length and the fact that
the curve need no longer be defined in the xy plane, but must
still be a plane curve.
The general form of the definition is
CNAME = SCURV/CURSEG, followed by 5 or less points and
associated vector constraints.
If the CURSEG definition contains only two points with no
tangent or normal constraints, the resulting conic arc can
only be the straight line connecting these points.
13
blank
14
For example, the line connecting the point P1 with cartesian
co-ordinates (2,3,4) to the point P2 with co-ordinates (5,2,6)
could be defined by
P1 = POINT/2,3,4
P2 = POINT/5,2,6
L1 = SCURV/CURSEG,P1,P2
or by
L1 = SCURV/CURSEG,(POINT/2,3,4),(POINT/5,2,6)
In either case L1 is a parametric representation of the line
from P1 to P2. P1 corresponds to the parameter value t = 0,
P2 has parametric value t = 1 and all intermediate points
along the line correspond to values of the parameter between 0
and 1. Provided P1 and P2 are distinct points, there can be
no error states with this form of the CURSEG definition.
If the CURSEG definition contains precisely 3 constraints,
which may be 3 points, 2 end points and a tangent vector, or 2
points and a normal direction; a unique circular arc is
defined. Once more this is a parametric curve with the
parameter ranging from 0 to 1 along the arc.
The simplest definition of a circular arc is in terms of its
two end points and an intermediate point. For example the
points (-2,4,1),(5,5,1) and (7,1,1) are on a circle of radius
5 with centre at (2,1,1) in the plane z = 1 which is parallel
to the X-Y plane. This circular arc is defined by the part
program
PARTNO CIRCLE
P1 = POINT/-2,4,1
P2 = POINT/5,5,1
P3 = POINT/7,1,1
C1 = SCURV/CURSEG,P1,P2,P3
FINI
The resulting arc is shown in Figure 2.1. The corresponding
verification listing is shown overleaf
15
Figure 2.1
16
VERIFICATION LISTING FOR SCURV C1
FINAL SCURV HEADER TABLE
1.000 = 1. APT FILE RECORD NUMBER
1.000 = 2. NUMBER OF BLOCKS FOR HEADER
3.000 = 3. 1 = COMBIN, 2 = SPLINE, 3 = CURSEG
1.000 = 4. NUMBER OF CUBIC ARCS
25.000 = 5. LOCATION OF FIRST CUBIC ARC
0.000 = 6. NUMBER OF ROWS FOR FLOW DATA
0.000 = 7. LOCATION OF FIRST FLOW ROW
0.000 = 8. NUMBER OF ROWS FOR SEGMENTS
0.000 = 9. LOCATION OF FIRST ROW OF SEGMENTS
0.000 = 10. TOTAL NUMBER OF FLOW SPLINES
0.000 = 11. LOCATION OF FIRST FLOW SPLINE
48.000 = 12. TOTAL SIZE OF STRUCTURE
1.000 = 13. FIRST LOCATION OF STRUCTURE
CURVE SHAPE-DISPLAYED BY CUBIC ARCS
PARAM XCOORD YCOORD ZCOORD UTAN-I UTAN-J UTAN-K
ARC NUMBER 1
0.0000 -2.0000 4.0000 1.0000 0.6000 0.8000 0.0000
0.2500 0.1918 5.6616 1.0000 0.9323 0.3616 0.0000
0.5000 3.5811 5.7434 1.0000 0.9487 -0.3162 0.0000
0.7500 6.2435 3.6443 1.0000 0.5289 -0.8487 0.0000
1.0000 7.0000 1.0000 1.0000 -1.0000 0.0000 0.0000
UNORMI UNORMJ UNORMK CURVATURE RADIUS
0.8000 -0.6000 0.0000 0.2000 5.000
0.3616 -0.9323 0.0000 0.2000 5.000
-0.3162 -0.9487 0.0000 0.2000 5.000
-0.8487 -0.5239 0.0000 0.2000 5.000
-1.0000 0.0000 0.0000 0.2000 5.000
---END OF SYNTHETIC CURVE VERIFICATION---
17
Figure 2.2
18
The entries in the header table of this listing are mainly
concerned with the contents of the canonical array which will
be described in section 2.4. The geometric data gives for
points on the curve the parameter value, the co-ordinates, the
3 components of a unit vector in the direction of the tangent,
the components of a unit vector normal to the curve and
finally the curvature and radius of curvature. Note that the
curvature is the reciprocal of the radius of curvature and
that in this case the radius of curvature is given as 5.0 for
all points along the curve. This geometric data is always
given for the two end points of the arc and for 3 intermediate
points at equally spaced parameter values. In this case the
point P2 is not displayed but its parameter value clearly lies
between t = 0.5 and t = 0.75.
The same circular arc can be defined in other ways by defining
the two end points and either a tangent or normal direction at
one of these points.
The statements
P1 = POINT/-2,4,1
P3 = POINT/7,1,1
T1 = VECTOR/3,4,0
C2 = SCURV/CURSEG,P1,TANSPL,T1,P3
will define precisely the same circular arc with an identical
verification listing. The resulting curve is shown in Figure
2.2.
The word TANSPL in the definition of C2 identifies the vector
T1 as a tangent vector at the point P1.
19
Figure 2.3
20
The third alternative definition would be
P1 = POINT/-2,4,1
P3 = POINT/7,1,1
N2 = VECTOR/-1,0,0
C3 = SCURV/CURSEG,P1,P3,NORMAL,N2
From Figures 2.2 and 2.3, the normal to the circle at P3 is
seen to be parallel to the x axis and N2 defines a vector in
this direction. The definition of C3 identifies N2 not only
as the normal to the curve at P3 but also as the normal to any
sculptured surface which is subsequently defined as containing
the curve C3. Figure 2.3 shows the curve defined by these
statements.
Note that with the CURSEG definition it is not possible to
define a complete circle as a single circular arc, although
arcs up to 180 degrees can be defined in this way. An
attempt to define too large an arc by the 3 point definition
produces the error message:
DEFINITION ERROR 5910
THE MID POINT OF THREE CONSECUTIVE POINTS PROJECTED OUTSIDE
THE RANGE OF THE SURROUNDING TWO.
If a complete circle is required it can be defined as 2 or
more arcs which are then joined by a COMBIN statement (see
Section 2.3).
2.1.3 GENERAL CONIC DEFINED BY 5 CONDITIONS
A unique conic arc can generally be drawn through 5 coplanar
points. The same arc could also be defined by any appropriate
combination of 5 constraints made up of points, tangent
directions or normal directions. For a proper CURSEG
definition the two end points must be defined and the possible
alternative definitions reduce to
5 points
4 points and a tangent or normal
3 points and two tangents or normals.
Depending upon the actual constraints the resulting curve will
be an arc of a circle, ellipse, parabola or hyperbola.
21
Figure 2.4
Figure 2.5
22
The statements
P1 = POINT/-4,0.71,0.71
P2 = POINT/-3,2.11,-0.69
P3 = POINT/-1,2.76,-1.34
P4 = POINT/0,2.83,-1.41
P5 = POINT/2,2.55,-1.13
C1 = SCURV/CURSEG,P1,P2,P3,P4,P5
define an elliptic arc in the plane y+z = 1.42; this arc is
shown in Figure 2.4.
Note that when defining a conic arc in this way it is
essential that the 5 points should lie in a plane. If this is
not the case an error message (DEFINITION ERROR 5751) will be
produced.
As an example of a conic arc defined by a combination of
points and vector constraints the statements below define a
conic, in fact a hyperbola, in the plane z = 2
P1 = POINT/1,6,2
P2 = POINT/2,3,2
P3 = POINT/3,2,2
V1 = VECTOR/2,-3,0
V2 = VECTOR/2,3,0
C2 = SCURV/CURSEG,P1,P2,TANSPL,V1,P3,NORMAL,V2
This curve is illustrated in Figure 2.5. The verification
listing for this curve contains the geometric data:
PARAM XCOORD YCOORD ZCOORD UTAN-1 UTAN-J UTAN-K
0.0000 1.0000 6.0000 2.0000 0.1644 -0.9864 0.0000
0.2500 1.2581 4.7691 2.0000 0.2551 -0.9669 0.0000
0.5000 1.6154 3.7142 2.0000 0.3988 -0.9170 0.0000
0.7500 2.1429 2.7999 2.0000 0.6078 -0.7941 0.0000
1.0000 3.0000 2.0000 2.0000 0.8321 -0.5547 0.0000
UNORMI UNORMJ UNORMK CURVATURE RADIUS
0.9864 0.1644 0.0000 0.0533 18.755
0.9669 0.2551 0.0000 0.1000 9.999
0.9170 0.3988 0.0000 0.1806 5.537
0.7941 0.6078 0.0000 0.2738 3.653
0.5547 0.8321 0.0000 0.2560 3.906
Note that unlike the earlier circular example the radius of
curvature now varies continuously along the curve. The local
centre of curvature lies along the normal vector (UNORM) at a
distance equal to the radius of curvature.
23
24
If the definition of V2 is changed to V2 = VECTOR/3,2,1 so
that it defines a vector which is not in the plane of the
curve, an attempt to run the corresponding part program will
produce the error message:
DEFINITION ERROR 5752
IN A 'CURSEG' DEFINITION ALL OF THE TANGENT CONSTRAINTS DO NOT
LIE IN A PLANE.
This message could be misleading since on this occasion it is
the normal which is out of the plane of the rest of the data
but it does indicate that one of the two vector constraints is
erroneous. Even when the 5 constraints are coplanar and
define a proper conic, the CURSEG definition can still be
invalid. For example the points (-6,-2), (-4,-3), (2,6),
(3,4) and (6,2) all lie on the rectangular hyperbola xy = 12
but the statements
P1 = POINT/-6,-2,0
P2 = POINT/-4,-3,0
P3 = POINT/2,6,0
P4 = POINT/3,4,0
P5 = POINT/6,2,0
C1 = SCURV/CURSEG,P1,P2,P3,P4,P5
will produce the error message:
DEFINITION ERROR 5910
THE MID POINT OF THREE CONSECUTIVE POINTS PROJECTED OUTSIDE
THE RANGE OF THE SURROUNDING TWO.
The explanation is that a hyperbola has two separate sections
and in this case P1 and P2 are in one section of the curve
whilst P3,P4,P5 are in the other section, there can be no
continuous arc through these points.
25
Figure 2.6
26
This is the potentially ambiguous case of the CURSEG
definitions. Whereas 2 points define a unique line, 3
points a unique circular arc and 5 points a unique conic it is
possible to fit many different conics to 4 data points. The
ambiguity is removed by selecting the ellipse, or in some
extreme cases the parabola, of minimum eccentricity which fits
the input data. (The eccentricity of an ellipse is related
to the ratio of the lengths of the major and minor axes; the
greater this ratio the greater the eccentricity). Since a
circle is an ellipse of eccentricity O this implies that a
circular arc will be produced whenever the input data is
consistent with this result.
Example:
P1 = POINT/-2,4,1
P2 = POINT/5,5,1
P3 = POINT/7,1,1
T1 = VECTOR/3,4,0
C1 = SCURV/CURSEG,P1,TANSPL,T1,P2,P3
This is a 4 constraint CURSEG definition consistent with the
circular arc defined in Section 2.1.2 and the results will be
identical. In general the 4 constraints in this type of
definition can be:
4 points
3 points and 1 tangent or normal
2 end points and 2 tangents or normals.
Example:
P1 = POINT/-4,0.71,0.71
P2 = POINT/2,2.55,-1.13
T1 = VECTOR/0,1,-1
T2 = VECTOR/1,-0.3,0.3
C2 = SCURV/CURSEG,P1,TANSPL,T1,P2,TANSPL,T2
These statements define an elliptic arc from P1 to P2 with end
tangents in the directions of T1 and T2 respectively. The
resulting curve is illustrated in Figure 2.6.
The error messages which can be produced from these types of
CURSEG definition are precisely the same as those described in
Section 2.1.3. The usual sources of error are non-coplanar
constraints or data points inconsistent with a single arc.
27
28
The most general type of synthetic curve definition is the
SCURV/SPLINE definition. This defines the curve as a spline
curve each arc of which is a cubic parametric curve. The
number of arcs in the curve will be one less than the number
of points in the definition. At the data points the curves
are continuous and share a common tangent direction but
continuity of the curvature is only approximate.
Unlike the CURSEG definitions there is no requirement that the
input data should be coplanar and the SPLINE definition can be
used to define a twisted curve in 3 dimensional space. The
maximum number of points in a spline definition is 30, which
implies a maximum of 29 for the number of arcs. If required,
longer spline curves can be produced by using the COMBIN
statement described in Section 2.3.
A simple 2 points SPLINE definition will produce precisely the
same straight line as the corresponding CURSEG definition.
With 3 or more points the results produced by a SPLINE
definition will not coincide with the conic arcs produced by
CURSEG. For example, using the same 3 data points as in
Section 2.1.2 the statements:
P1 = POINT/-2,4,1
P2 = POINT/5,5,1
P3 = POINT/7,1,1
C1 = SCURV/SPLINE,P1,P2,P3
produce in their verification listing:
29
Figure 2.7
Figure 2.8
30
CURVE SHAPE-DISPLAYED BY CUBIC ARCS
PARAM XCOORD YCOORD ZCOORD UTAN-I UTAN-J UTAN-K
ARC NUMBER 1
0.0000 -2.0000 4.0000 1.0000 0.7894 0.6139 0.0000
0.2500 -0.2183 5.0581 1.0000 0.9161 0.4009 0.0000
0.5000 1.6842 5.6213 1.0000 0.9882 0.1535 0.0000
0.7500 3.4946 5.6239 1.0000 0.9847 -0.1743 0.0000
1.0000 5.0000 5.0000 1.0000 0.8007 -0.5990 0.0000
UNORMI UNORMJ UNORMK CURVATURE RADIUS
0.6139 -0.7894 0.0000 0.1244 8.042
0.4009 -0.9161 0.0000 0.1195 8.371
0.1535 -0.9882 0.0000 0.1473 6.790
-0.1743 -0.9847 0.0000 0.2266 4.414
-0.5990 -0.8007 0.0000 0.3373 2.965
ARC NUMBER 2
0.0000 5.0000 5.0000 1.0000 0.8007 -0.5990 0.0000
0.2500 5.7046 4.2612 1.0000 0.5784 -0.8158 0.0000
0.5000 6.2392 3.3000 1.0000 0.4064 -0.9137 0.0000
0.7500 6.6541 2.1888 1.0000 0.3049 -0.9524 0.0000
1.0000 7.0000 1.0000 1.0000 0.2631 -0.9648 0.0000
UNORMI UNORMJ UNORMK CURVATURE RADIUS
-0.5990 -0.8007 0.0000 0.3631 2.754
-0.8158 -0.5784 0.0000 0.2395 4.175
-0.9137 -0.4064 0.0000 0.1293 7.733
-0.9524 -0.3049 0.0000 0.0601 16.652
-0.9648 -0.2631 0.0000 0.0123 80.891
The most obvious difference from the results in Section 2.1.1
is that the curve is now listed as 2 separate arcs joining at
P2. More detailed examination shows that the radius of
curvature is no longer constant showing that the curve is not
part of a circle. For each arc the parameter ranges from 0
to 1, the point P2 corresponding to parameter t = 1 on the
first arc and t = 0 on arc number 2. At this point the
tangent vectors are clearly the same but there is a curvature
variation between the arcs.
The curve defined is displayed in Figure 2.7.
Figure 2.8 shows this curve superimposed upon the
corresponding circular arc which highlights the geometric
distinction.
31
Figure 2.9
Figure 2.10
32
If the input data does not specify the directions of the end
tangents for a SPLINE curve the system will automatically
determine appropriate directions. These are computed
internally by fitting a parabolic arc to the 3 data points
nearest the end and equating the end tangent to the tangent of
this parabola.
The user can directly control the direction of the end tangent
by setting the TANSPL to the desired vector value.
Example:
P1 = POINT/0,1,0
P2 = POINT/2,3,1
P3 = POINT/4,7,4
P4 = POINT/5,8,3
P5 = POINT/6,8,2
T1 = VECTOR/1,3,0
T5 = VECTOR/2,-5,1
C2 = SCURV/SPLINE,P1,TANSPL,T1,P2,P3,P4,P5, $
TANSPL,T5
This defines a twisted spline curve of 4 separate arcs which
is shown in Figures 2.9 and 2.10. The two views clearly show
that this is not a plane curve.
Note that the lengths of the tangent vectors have no effect on
the curve being defined; the tangent lengths are
automatically adjusted by the processor after definition.
The shape of the curve can be modified by moving the data
points or by introducing new constraints. We could introduce
a tangent constraint at P3 by defining:
T3 = VECTOR/2,1,1
and redefining the curve as
C3 = SCURV/SPLINE,P1,TANSPL,T1,P2,P3,TANSPL, $
T3, P4,P5,TANSPL,T5
33
Figure 2.11
Figure 2.12
34
This change means that the curve is now in fact defined as two
separate spline curves one from P1 to P3 and the second from
P3 to P5. Both curves have the specified tangent direction at
P3. The result is illustrated in Figures 2.11 and 2.12.
The verification listing shows curvatures of 0.16 and 4.2492
at P3 in arcs 2 and 3 respectively. This abrupt change in
curvature is due to the processor treating P1 to P3 and P3 to
P5 as distinct curves. The verification listing confirms
that the effect of the additional constraint is to change the
entire curve, not just the sections between P2 and P4.
Other vector constraints which can be imposed at points in a
spline curve, or end points of a CURSEG curve, are NORMAL
constraints and CRSSPL constraints.
A NORMAL constraint is not a direct constraint on the normal
to the curve, it is specifying the direction of the normal to
any surface subsequently defined using a GENCUR definition or
to any MESH surface having this spline curve as part of its
definition. Since the tangent to any curve in the surface
must be perpendicular to the surface normal, the NORMAL
constraint is a partial constraint on the tangent direction.
As with a TANSPL constraint the effect of including a NORMAL
constraint at an interior point of a spline curve is to split
the curve into 2 separate spline curves. A CRSSPL constraint
has no effect upon the curve currently being defined, it is
specifying the direction of the tangent to the cross spline
curve (the 2nd parametric family of curves on the biparametric
surface) at that particular point. For a well defined
surface the CRSSPL direction should not be nearly parallel to
the tangent vector at the point concerned. (See Chapter 5
for further details).
As an example, if with the previous point and vector
definitions we define
C4 = SCURV/SPLINE,P1,TANSPL,T1,P2,P3,CRSSPL,T3,P4,P5,TANSPL,T5
the result is an identical curve to C2.
All the examples given so far have included only a single
vector constraint at a given point but the most general form
of the SCURV statement allows a SPLINE curve, or a CURSEG to
be input with up to 3 vector constraints (TANSPL, NORMAL,
CRSSPL) at each point. Particular care should be taken when
inputting multiple vector constraints including the NORMAL
because the directions of the TANSPL and CRSSPL vectors should
be at right angles to the normal. If the input data does not
satisfy this condition the directions of the TANSPL and CRSSPL
are automatically adjusted, by projecting them onto the
35
tangent plane with the specified normal, before defining the
parametric curve. The result is a curve which does not have
the chosen tangent properties.
If both TANSPL and NORMAL are included at a point of a CURSEG
curve the TANSPL is used to determine the plane of the curve
provided the direction of the TANSPL is consistent with the
NORMAL. In this way it is possible to specify a direction
for the surface normal which is not in the plane of the conic
arc. The example below illustrates the effect of including
inconsistent TANSPL and NORMAL constraints in a CURSEG
definition.
P1 = POINT/-2,4,0
P2 = POINT/5,5,0
P3 = POINT/7,1,0
T1 = VECTOR/3,4,0
V1 = VECTOR/1,2,3
C1 = SCURV/CURSEG,P1,TANSPL,T1,NORMAL,V1,P2,P3
Running a part program including these statements produces the
error message
DEFINITION ERROR 5752
IN A 'CURSEG' DEFINITION ALL OF THE TANGENT CONSTRAINTS DO NOT
LIE IN A PLANE.
This message is clearly false since the 3 points lie on a
circular arc of radius 5 centred at the point (2,1,0) in the
plane z = 0 and T1 is the correct tangent vector. However V1
is not orthogonal to T1 (the scalar product is 3x1 + 4x2 + 0x3
which is non zero, and the system has automatically modified
T1 to the new direction (0.5475, 0.6005, -0.5828) , not in the
plane z = 0, before attempting to construct the curve. This
direction can be verified by modifying the definition of C1 to
define a SPLINE curve; the direction is computed from T1 by
subtracting its component in the direction of V1. The
intended circular arc is obtained from this example by
replacing V1 by any vector, such as (-4,3,2) which is
orthogonal to T1.
36
A third method of defining a simple parametric SCURV in the
Sculptured Surfaces system makes use of the APT4 geometric
definitions of lines and circles. The SEG definition makes
it possible to define a parametric curve as a segment of a
line or circle but this definition only applies to curves in
the xy plane (z=0). The curve and the end points are all
defined in terms of APT4 geometries. The end points are
determined by finding the intersection with another line or
circle. Since, in general, a circle intersects another line
or circle in two points the potential ambiguity in this
definition is removed by using the qualifiers POSX, NEGX, POSY
or NEGY. POSX is interpreted as an instruction to select
from the two intersection points the one which has the larger
x coordinate (which need not be positive). NEGX selects the
point with the smaller x coordinate. POSY and NEGY make a
similar selection based upon the y coordinates. Note that
even in the simple case of two intersecting lines, the format
of the input statement requires one of these qualifiers to be
present.
The general form of the definition statement is
CNAME = SCURV/SEG,CURVE1,CURVE2,qualifier,CURVE3,qualifier
where CURVE1,CURVE2,CURVE3 are the names of previously defined
APT4 circles or lines and each qualifier takes one of the
values POSX,NEGX,POSY or NEGY. The parametric curve is then
defined as the segment of CURVE1 between its intersection with
CURVE2 and its intersection with CURVE3.
Example:
L1 = LINE/-1,0,0,2,3,0
C1 = CIRCLE/CENTER,0,0,0,RADIUS,5
C2 = CIRCLE/CENTER,2,2,0,RADIUS,4
S1 = SCURV/SEG,C2,C1,NEGY,L1,POSY
The three APT4 construction curves defined here all lie in the
plane z=0. L1 is an infinite line of unit slope passing
through the points (-1,0) and (2,3) in the xy plane. C1 is a
circle of radius 5 centred at the origin and C2 is a circle
centred at (2,2) and of radius 4. Figure 2.13 shows these
curves and their interestions. S1 is defined as the shortest
segment of C2 which lies between the lower intersection P1
with C1 and the higher intersection P2 with L1. These
intersections are uniquely identified by the use of NEGY and
37
Figure 2.13
Figure 2.14
38
POSY respectively. Precisely the same circular arc could
have been defined by the statement
S1 = SCURV/SEG,C2,C1,POSX,L1,POSX
The resulting curve is illustrated in Figure 2.14.
A careful examination of the verification listing for this
curve shows that internally it is represented by a simple
CURSEG definition consisting of the two end points P1 and P2
and the tangent vector at P1. The first part of this listing
is:
VERIFICATION LISTING FOR SCURV S1
INTERIM SCURV HEADER TABLE
0.000 = 1. APT FILE RECORD NUMBER
1.000 = 2. NUMBER OF BLOCKS FOR HEADER
3.000 = 3. 1 = COMBIN, 2 = SPLINE, 3 = CURSEG
2.000 = 4. NUMBER OF CUBIC ARCS
CANONICAL ARRAY FOLLOWS
INDEX = 1
0.000 1.000 3.000 2.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.0000
INDEX = 25
4.951 -0.701 0.000 0.000 -2.701 -2.951 0.000 1.000
0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
INDEX = 49
4.284 5.284 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
(Note: in the original print-out this data is arranged with 3
blocks of 4 numbers per row.)
39
blank
40
The third entry in the header table identifies the curve as a
CURSEG (i.e. conic arc) type. The 4th entry in fact refers
to the number of points rather than the number of arcs as the
caption suggests. The detailed interpretation of the
canonical array will be explained in section 2.4. Elements
from index 1 to 24 refer to the header block, elements 25 to
48 are associated with the first point of the curve and
elements 49 to 72 refer to P2. P1 is identified as having
co-ordinates (4.951,-0.701,0.000) with a tangent vector in the
direction (-2.701,-2.951,0,000). P2 is identified as having
coordinates (4.284,5.284,0.000) with no tangent or normal
constraint. As far as the sculptured surfaces processor is
concerned the curve is now indistinguishable from a CURSEG
circular arc defined by two points and a tangent vector. The
final verification listing is identical to that produced from
the corresponding CURSEG definition.
Provision is made in the sculptured surfaces processor for
geometric data to be extracted from any point of a parametric
curve (SCURV). This data is obtainable by using the INTOF
command together with a parameter value to identify the
particular point on the curve. If the curve has been given a
FLOW value (see Chapter 3) the point on the curve may be
referenced by a FLOW value rather than a simple parameter
value. Vectors associated with the curve
(TANSPL,NORMAL,CRSSPL or BINORM) can be obtained in a similar
way. Once this data has been obtained it can be used in
further geometric definitions or for tool control
applications. To extract the co-ordinates of a point the
format of the command is
PNAME = POINT/INTOF,CNAME,PARAM,u,N
where PNAME is the assigned point name, CNAME is a previously
defined SCURV, u is the parameter value and N is an integer
identifying the arc of the curve. In the simplest cases N
will be the actual arc number and u will have a value between
0 and 1 to identify the particular point of the arc.
41
Figure 2.15
42
For example, the values u = 0.5, N = 2 refer to the parametric
mid point of the second arc of the curve. An alternative
method of referring to the same point is to set N = 0 and u =
1.5; in this case the value N = 0 signals that the parameter
will take values between 0 and 1 on the first arc, 1 and 2 on
the second arc and so on. A third method of referring to the
same point is by counting the arcs from the other end of the
curve. If the curve had 4 arcs the values u = 0.5, N = -3
would refer to precisely the same point. If the reference is
by FLOW value the word PARAM in the INTOF statement is
replaced by FLOW; the interpretation of u and N is exactly
similar except that u now refers to a value of the FLOW
parameter.
As defined, a parametric SCURV is a bounded curve but it is
possible to refer to points beyond the extremities of the
curve. In such a case the curve is continued as a straight
line by extending its end tangent vector. A negative value
of u refers to a point on the linear extension before the
start of the curve and a value of u greater than 1 (or greater
than the parametric range if N = 0) refers to a point on the
linear extension beyond the end of the curve. Individual
arcs of the curve can be extended in the same way.
Example:
C1 = SCURV/SPLINE,(POINT/1,2,0),(POINT/2,3,1), $
(POINT/3,5,2),(POINT,6,5,4),(POINT/7.3.4) -
P1 = POINT/INTOF,C1,PARAM,0.6,1
P2 = POINT/INTOF,C1,PARAM,2.4,0
P3 = POINT/INTOF,C1,PARAM,1.5,4
P4 = POINT/INTOF,C1,PARAM,1.8,1
P5 = POINT/INTOF,C1,PARAM,-0.7,0
The points referenced by the above statements are shown in
Figure 2.15. C1 is a spline curve consisting of 4 arcs. P1
is an interior point of the first arc. P2 is an interior
point of the third arc. P3 is on the linear extension of the
4th arc (i.e. beyond the end of the curve). P4 is a point on
the tangent at the end of the first arc and P5 is on the
linear extension before the start of the curve. Note that P2
could also have been referred to by the u,N values 0.4,3 or
0.6,-2. Vector functions associated with the curve are
evaluated in a similar manner. For example
V1 = VECTOR/INTOF,C1,PARAM,0.6,1,TANSPL
sets V1 equal to the value of the tangent vector to the curve
C1 at the point in the first arc with parametric value 0.6.
If a unit vector is required this is achieved by the statement
43
Figure 2.16
44
V1 = VECTOR/INTOF,C1,PARAM,0.6,1,TANSPL,UNIT
The word TANSPL in this statement can be replaced by the words
NORMAL, BINORM or CRSSPL where NORMAL refers to the surface
normal at this point, BINORM denotes the binormal to the curve
(normal to the circle of curvature at this point) and CRSSPL
is the direction of the tangent to the cross-spline curve at
the designated point. TANSPL and BINORM should be available
at all points of a curve but NORMAL and CRSSPL are generally
only available at the ends of arcs where they have previously
been input.
Previous sections have introduced the simple SCURV definitions
of CURSEG, SPLINE or SEG to define a continuous parametric
curve. More complex curves can be constructed by joining two
or more of these curves together using the COMBIN statement.
The general format for this is
CNAME = SCURV/COMBIN,C1,C2,...,CN
where CNAME is the chosen name for the compound curve and
C1,C2,...,CN are previously defined SCURVs of any of the
standard types. It is quite permissible to mix curves of
different types within a single COMBIN statement but it is up
to the user to ensure the appropriate continuity conditions
between the separate curves at their junction points.
P1 = POINT/0,0,0
P2 = POINT/2,0,0
P3 = POINT/3,4,1
P4 = POINT/4,6,2
V1 = VECTOR/1,1,0
C1 = SCURV/CURSEG,P1,P2
C2 = SCURV/SPLINE,P2,TANSPL,V1,P3,P4
C3 = SCURV/COMBIN,C1,C2
In the above example C1 is defined as the line from P1 to P2.
C2 is the spline curve passing through P2,P3 and P4 with
specified tangent vector V1 at P2. C3 is then the compound
curve formed by combining C1 and C2, which is illustrated in
Figure 2.16. Since the end of C1 coincides with the first
point of C2 the curve C3 is continuous but the curve has a
slope discontinuity at this point. This discontinuity of
tangent direction can only be removed by re-defining V1 as
(1,0,0) so that the tangent vector is in the same direction as
the line P1P2.
45
The verification listing for C3 shows a curve consisting of 3
arcs. For the first arc the curve is identical to C1 and the
second and third arcs coincide with the two arcs of C2. The
listing also contains the message:
DEFINITION WARNING 5129
THE TANGENT VECTORS AT THE JUNCTION OF CONSECUTIVE CURVES IN A
'COMBIN' DEFINITION HAVE DIFFERENT DIRECTIONS
This is, however, only a warning message and the normal
processing can continue using this curve definition. If,
however, the first point of C2 is changed the message produced
by the processor is:
DEFINITION ERROR 5128
THE JUNCTION POINTS OF TWO CONSECUTIVE CURVES IN 'COMBIN'
DEFINITION DID NOT MATCH
This is now a fatal error which halts further processing of
the program.
Apart from the obvious application of making it possible to
join curves of different types together, the COMBIN facility
has a variety of uses. The fact that the COMBIN definition
permits tangent discontinuities at junction points makes it
possible to use curves of this type to produce surfaces with a
'high line' or feature line. When used in conjunction with
CURSEG definitions COMBIN can be used to produce a curve each
segment of which is a conic arc. For example, a rectangular
profile with rounded corners could be produced by combining 4
line segments with 4 quadrants of circles. Although each
separate conic segment is a planar curve the final COMBIN
curve need not be planar. A complete circle can be defined
as the COMBIN of two semi-circles.
COMBIN may also be used to overcome the limitation of having
no more than 30 points in a SPLINE curve. A continuous
spline curve through a large number of points can be produced
by first dividing the points into sets of 30 or less. A
SPLINE curve is then defined on each set of points in turn.
Tangent continuity can be ensured by making use of the INTOF
facility to extract the TANSPL vector at the end of each
spline curve. This vector is then used as an initial TANSPL
constraint when defining the next SPLINE curve.
46
Finally, the separate curves are joined as a COMBIN curve.
As an example:
C1 = SCURV/SPLINE,P1,P2,....,P30
V1 = VECTOR/INTOF,C1,PARAM,1,-1,TANSPL
C2 = SCURV/SPLINE,P30,TANSPL,V1,P31,...,P48
C3 = SCURV/COMBIN,C1,C2
The above statements would define C3 as a continuous spline
curve passing through the 48 points P1 to P48.
One less obvious application of the COMBIN statement is when
it is used with a single component curve. If the curve C, of
3 arcs, has been previously defined, the statement
CF = SCURV/COMBIN,C,FLOW,ARC,0,3,SEG,0,3
can be used to subsequently add a FLOW structure to C. The
significance of FLOW will be described in Chapter 3.
Internally the computer used by the Sculptured Surfaces
processor stores all the data necessary to construct a
parametric SCURV in a standardised format called the canonical
array. Although there are essentially 3 distinct types of
SCURV namely CURSEG, SPLINE and COMBIN they all have the same
internal data structure. For each simple curve there are in
fact two associated canonical arrays which are printed out as
part of the verification listing. These are the interim
canonical array which essentially contains the input data and
the final canonical array which is used as a data structure
for all the internal geometric computations associated with
the curve.
Each of the canonical arrays is divided into blocks of 24 real
numbers. The first block in each case contains the header
table and some details of its contents are printed out as part
of the verification listing. The data in the header block is
relevant to the entire curve. In the interim array there is
a further block of data for each point of definition for the
curve. This block contains all the input data relevant to
that particular point and the data is stored in a simple
Cartesian co-ordinate format. The detailed nature of this
data is best illustrated by a simple example.
47
P1 = POINT/-2,4,1
P2 = POINT/5,5,1
P3 = POINT/7,7,1
V1 = VECTOR/1,2,3
V2 = VECTOR/3,4,0
V3 = VECTOR/-4,3,0
C1 = SCURV/SPLINE,P1,TANSPL,V2,NORMAL,V3,P2, $
CRSSPL,V1,P3
These statements define C1 as a spline curve through the 3
points P1,P2,P3 with vector constraints at P1 and P2.
The corresponding verification listing gives:
INTERIM SCURV HEADER TABLE
0.000 = 1. APT FILE RECORD NUMBER
1.000 = 2. NUMBER OF BLOCKS FOR HEADER
2.000 = 3. 1 = COMBIN, 2 = SPLINE, 3 = CURSEG
3.000 = 4. NUMBER OF CUBIC ARCS
INDEX = 1
0.000 1.000 2.000 3.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000. 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
INDEX = 25
-2.000 4.000 1.000 0.000 3.000 4.000 0.000 1.000
0.000 0.000 0.000 0.000
4.000 -3.000 0.000 1.000 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
INDEX = 49
5.000 5.000 1.000 0.000 0.000 0.000 0.000 0.000
1.000 2.000 3.000 1.000
0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
INDEX = 73
7.000 1.000 1.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
48
Note that each block of the canonical array consists of 6
groups of 4 real numbers. In the line printer output they
are arranged in two rows per block. The captions at the top
of the canonical array identify the entries in the first group
of the header block. The APT file record number is a
reference number used for external storage of the canonical
array; it is 0 in this case because the interim canonical
array is not saved. All the other entries in the header
block are self explanatory except for 'NUMBER OF CUBIC ARCS'.
This caption in fact refers to the number of blocks after the
header block and is equal to the number of points defining the
curve.
The index number of the first entry of each block is given.
Each block after the header block contains data about one
point of the curve in a standard format. The first group of
4 numbers contains the point co-ordinates in its first 3
locations. The second group contains the TANSPL vector, if
any, with the fourth entry 1.000 if a TANSPL is defined. The
third and fourth groups contain equivalent data for the CRSSPL
and NORMAL constraints. The fifth group contains the
'WEIGHT' in its first location; the significance of this will
be explained in Chapter 3 where smoothing of curves is
described. For a simple curve the WEIGHT is 1.0. The final
group of the block is reserved for the original co-ordinates
in cases where the data point is moved in a smoothing
operation.
The final canonical form is produced after the parametric
curve has been processed. Regardless of the type of input
constraint each arc of the curve is represented in its
internal format by the two end points and two derivative
vectors. In order to provide a common format for the CURSEG
and SPLINE data these points and vectors are described in
terms of homogeneous co-ordinates. After the header block,
each block of the canonical array corresponds to one arc of
the curve. Continuing the example introduced in 2.4.1, the
final part of the verification listing gives
49
FINAL SCURV HEADER TABLE
1.000 = 1. APT FILE RECORD NUMBER
1.000 = 2. NUMBER OF BLOCKS FOR HEADER
2.000 = 3. 1 = COMBIN, 2 = SPLINE, 3 = CURSEG
2.000 = 4. NUMBER OF CUBIC ARCS
25.000 = 5. LOCATION OF FIRST CUBIC ARC
0.000 = 6. NUMBER OF ROWS FOR FLOW DATA
0.000 = 7. LOCATION OF FIRST FLOW ROW
0.000 = 8. NUMBER OF ROWS FOR SEGMENTS
0.000 = 9. LOCATION OF FIRST ROW OF SEGMENTS
0.000 = 10. TOTAL NUMBER OF FLOW SPLINES
0.000 = 11. LOCATION OF FIRST FLOW SPLINE
72.000 = 12. TOTAL SIZE OF STRUCTURE
1.000 = 13. FIRST LOCATION OF STRUCTURE
INDEX = 1
1.000 1.000 2.000 2.000 25.000 0.000 0.000 0.000
0.000 0.000 0.000 72.000
1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.800 -0.600 0.000 1.000
INDEX = 25
-2.000 5.000 4.513 5.917 4.000 5.000 6.017 -4.521
1.000 1.000 0.000 0.000
1.000 1.000 0.000 0.000 0.267 0.535 0.802 1.000
0.000 0.000 0.000 0.000
INDEX = 49
5.000 7.000 3.222 1.309 5.000 1.000 -2.466 -4.799
1.000 1.000 0.000 0.000
1.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
50
Once more the contents of the header block are explained by
the printed captions. Locations 6 to 11 of the header block
relate to flow and segment data and do not apply to a simple
curve. After the header block, the canonical array contains
one block of 24 numbers per arc of the curve. Like the
interim array these blocks are sub-divided into 6 groups of 4
but the significance of the individual groups is completely
different in the final array. For each arc of the curve 6
vector quantities can be stored. These are the two end
points, the derivative of the parametric vector function
defining the curve at each end point and (if needed) the
NORMAL and CRSSPL constraint vectors at the finish of the arc.
The co-ordinates and the derivatives are stored as homogeneous
co-ordinates (X,Y,Z,W), which can be related, for the end
points, to the Cartesian co-ordinates (x,y,z) by the equations
x = X/W, y = Y/W and z = Z/W. The first group in each block
contains all the X co-ordinates, the second group the Y co-
ordinates, the third group the Z co-ordinates and the fourth
group the W coordinates. Within each group of 4 numbers the
order is:
start point, end point, start derivative, end derivative.
In the above example data for the first arc starts in location
25 and the homogeneous co-ordinates (X0,Y0,Z0,W0) of the first
point are (-2,4,1,1) retrievable from locations (25,29,33,37).
Note that the co-ordinates of the second point are repeated as
the start point of the second arc. The derivative vectors at
each end of arc 1 have homogeneous co-ordinates (4.513,
6.017, 0.000, 0.000) and (5.917, -4.521, 0.000, 0.000). The
first of these is a vector in the direction of the TANSPL
constraint vector (3,4,0) and the second is in the direction
of the unit tangent vector (0.7966, -0.6046, 0) at the end of
arc 1. Note, however, that the magnitudes of these vectors
have changed because the magnitude of the derivative vector
influences the shape of the curve. For a SPLINE curve the W
co-ordinate of each end point is always 1 and the first 3
components of the derivative vector always define a tangent
vector. The final two groups of each block contain
respectively a unit CRSSPL vector and a unit NORMAL vector.
These vectors relate to the final point of the arc and the
fourth element of each group is set to 1.0 to indicate the
presence of such a constraint vector. For constraints at the
beginning of the first arc the constraint vectors are stored
in the last two groups of the header block. Thus in the
above example, elements 21 - 24 of the header block are 0.8,
-0.6, 0, 1.0 which denotes the presence of a NORMAL constraint
in the direction (4,-3,0) at the beginning of the curve.
51
For a conic arc defined by a CURSEG statement the
interpretation of the canonical array is less simple because
the W co-ordinates are not simply 1 or 0. This is a
consequence of the fact that the parametric function defining
such a curve has a rational quadratic form rather than a
simple cubic form. If we follow the example of 2.4.1 but
define C2 by the statement
C2 = SCURV/CURSEG,P1,TANSPL,V2,NORMAL,V3,P2,P3
the interim canonical array is very similar to that given for
C1 except that the 3rd element is 3.0 and the CRSSPL vector is
omitted. The final canonical array, however, differs
considerably; it is
INDEX = 1
2.000 1.000 3.000 1.000 25.000 0.000 0.000 0.000
0.000 0.000 0.000 48.000
1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
0.800 -0.600 0.000 1.000
INDEX = 25
-2.089 7.312 8.803 10.000 4.179 1.045 2.214 -8.482
1.045 1.045 -1.429 -1.429
1.045 1.045 -1.429 1.429 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000
The most obvious difference from the data for C1 is that the
canonical array now contains only two blocks because the curve
is defined by a single arc. The interpretation of the arc
data in the second block is exactly the same as for C1 but the
numerical values differ considerably. The first point now
has homogeneous co-ordinates (-2.089,4.179,1.045,1.045) which
correspond, after division by W, to the Cartesian co-ordinates
(-2,4,1) of P1. The first derivative vector (corresponding to
P1) is (8.803,2.214,-1.429,-1.429) which corresponds to the
Cartesian vector (-6.160,-1.549,1.000). Unlike the SPLINE
curve case this vector is not directly related to the tangent
vector at this point although it is possible to calculate the
tangent from the derivative vector and the co-ordinates of P1.
52