```

CHAPTER 9 OTHER PROGRAMMING FEATURES

This  chapter  describes  a number  of  programming  features,
available  in the sculptured surfaces system,  which have  not
been covered elsewhere in this volume, or which have only been
partially described in earlier chapters.

They  include,  the  definition  of points  and  vectors  from
existing synthetic curves and sculptured surfaces, storing and
retrieving  canonical forms,  selection of printout levels and
the  many  trigonometric,  mathematical,  geometric  and  data
extraction functions available.

9.1  DEFINITION OF POINTS AND VECTORS FROM PARAMETRIC
CURVES AND SURFACES

Provision is made in the sculptured surfaces processor for the
definiton  of  points  and vectors with  respect  to  existing
synthetic  curves and sculptured surfaces,  which can then  be
used  in  subsequent geometric definitions or  for  tool  path
computation.    An example of this latter application is given
in Section 7.4.

The  definitions can be divided into those relating to  curves
and  those  relating to surfaces,  and into those  defined  by
direct  parametric reference and those which result  from  the
intersection   of  geometric  entities  with  the   parametric
geometry.   These latter two categories are sometimes referred
to  as intrinsic (by parameter) and extrinsic (resulting  from
intersection) constructions.

269

9.1.1  BY PARAMETRIC REFERENCE FROM A SYNTHETIC CURVE

A  point  on a synthetic curve or one of the  four  associated
vectors (TANSPL, CRSSPL, NORMAL or BINORM) at the point can be

The definition formats are,

pname = POINT/INTOF,scurv,PARAM,u,n
FLOW

TANSPL
FLOW      NORMAL
BINORM

where  pname          symbolic name for point.

vname          symbolic name for vector.

scurv          symbolic name of a previously defined
synthetic curve.

PARAM          indicates that the parametric values
refer to the curve ARC structure, see
Chapter 2.

FLOW           indicates that the parametric values
refer to the segment FLOW structure of
the curve, refer to Chapter 3.
Note that FLOW can only be used if the
curve has been defined with a FLOW
structure.

u              parametric value.

n              integer identifying the arc or segment
number.   Refer to Chapters 2 and 3 for
explanations of values of u and n.

TANSPL         tangent vector required.

NORMAL         normal vector required.

BINORM         binormal vector required.

UNIT           optional modifier indicating that the
unit vector is required.

270

The  vectors  available  at a point on a synthetic  curve  are
explained  in  detail in Chapter 2 and Figure  1.4  shows  the
tangent, normal and binormal to a curve.

The  TANSPL  and BINORM vectors are usually available at  each
point of a curve,  but the BINORM may not be available if  the
curve is a straight line segment.

The  CRSSPL  and NORMAL vectors are usually only available  at
the arc junctions where they have been input.   However, for a
FLOW  structured  curve,  continuous  CRSSPL  vectors  may  be
available between junctions at which CRSSPL vector constraints
have been input.

If there is a discontinuity between curve arcs, care should be
taken  when extracting the vectors at the  junction.    It  is
recommended  that the arc number and parameter are  explicitly
specified  in  the  definition  rather  than  use  the  global
parameter  with  n=0,  in  order to ensure that  the  required
vector is obtained.

271

Figure 9.1

272

9.1.2  BY INTERSECTION OF A LINE OR PLANE WITH A
SYNTHETIC CURVE

The  point  of intersection of a synthetic curve with  an  APT
line  or  plane  can  be  defined.    Also  any  of  the  four
associated  vectors  at  the  point  of  intersection  can  be
extracted.

The definition formats are,

pname = POINT/INTOF,aname,scurv,refpt.

TANSPL
NORMAL
BINORM

where  pname          symbolic name for point.

aname          symbolic name of a previously defined
APT LINE or PLANE.

scurv          symbolic name of a previously defined
synthetic curve.

refpt          symbolic name of a reference point near
to the required point of intersection.
This is used to distinguish between
multiple intersections, the point
closest to refpt being selected as
shown in Figure 9.1.   If two or more
points satisfy this condition, the point
with the lowest parametric value is
chosen.  A reference point must always
be provided, even if only one solution
is evident.

TANSPL         tangent vector.

CRSSPL         cross spline vector if available.

NORMAL         normal vector if available.

BINORM         binormal vector.

UNIT           unit vector required.

273

9.1.3  BY PARAMETRIC REFERENCE FROM A SCULPTURED SURFACE

A point on a sculptured surface or one of the three associated
vectors  (TANSPL,  CRSSPL  or  NORMAL) at  the  point  can  be

The definition formats are

pname = POINT/INTOF,ssurf,PARAM,u,v,pname

TANSPL
NORMAL

where  pname          symbolic name of point.

vname          symbolic name of vector.

ssurf          symbolic name of previously defined
sculptured surface.

PARAM          indicates that the point or vector is
being defined by parametric reference.

u              parameter in tangent spline direction.

v              parameter in cross spline direction.

pnum           patch number in terms of the internal
order of patches.
pnum must be greater than or equal to
zero.   If pnum equals zero, then the
surface is assumed to be a mesh
structured surface and u and v are
global mesh parameters.

TANSPL         tangent spline vector required.

NORMAL         surface normal required.

UNIT           optional modifier indicating that the
unit vector is required.

The  user  should be familiar with the internal layout of  the
patch structure, refer to Chapter 4, 5 and 6.

274

The surface vectors are briefly explained in Section 1.2.2 and
Figure  1.5  shows  their  correspondence.    Unless  UNIT  is
specified  the  lengths  of the vectors  are  equal  to  their
natural length, as in the canonical form.

Examples of using this type of point and vector definitions in
the generation of cutter paths are given in Sections 7.4.1 and
7.4.2.

9.1.4  BY PROXIMITY TO A POINT AND ON A SCULPTURED SURFACE

The closest point on a sculptured surface to a specified point
or one of the three surface vectors can be defined.

The definition formats are,

pname = POINT/INTOF,ssurf,pt

TANSPL
NORMAL

where  pname          symbolic name of point.

vname          symbolic name of vector.

ssurf          symbolic name of previously defined
sculptured surface.

pt             symbolic name of the point in the
proximity of which the point or vector
is to be constructed.

TANSPL         tangent spline vector at closest point.

CRSSPL         surface normal at closest point.

UNIT           optional modifier indicating that unit
vector is required.

275

9.1.5  BY INTERSECTION OF A SPACE LINE DEFINED BY TWO POINTS
AND A SCULPTURED SURFACE

The  point  and  its associated surface vectors which  is  the
intersection  of  a  space line defined by two  points  and  a
sculptured surface can be defined.

The formats are,

pname = POINT/INTOF,ssurf,pt1,pt2

TANSPL
NORMAL

where  pname          symbolic name of point.

vname          symbolic name of vector.

ssurf          symbolic name of previously defined
sculptured surface.

pt1,pt2        symbolic names of two points which
define the space line to be inter-
sected with the sculptured surface.

TANSPL         tangent spline vector.

NORMAL         surface normal vector.

UNIT           optional modifier indicating that unit
vector is required.

276

9.1.6  BY INTERSECTION OF A SPACE LINE DEFINED BY A VECTOR
AND A POINT AND A SCULPTURED SURFACE

The  point of intersection and its associated surface  vectors
of  a  space  line  specified  by a point  and  vector  and  a
sculptured surface can be defined.

The formats are,

pname = POINT/INTOF,ssurf,pt,v ›,refpt!

TANSPL
NORMAL

where  pname          symbolic name of point.
symbolic name of vector.

ssurf          symbolic name of previously defined
sculptured surface.

pt,v           symbolic name of point and vector
defining the space line to be inter-
sected with the sculptured surface.

refpt          optional reference point which may be
necessary to distinguish between
multiple intersections.

TANSPL         tangent spline vector.

NORMAL         surface normal vector.

UNIT           optional modifier indicating that unit
vector is required.

277

9.2  STORING AND RETRIEVING CANONICAL FORMS OF LARGE
DATA ARRAY SURFACES

There  are  two  basic  methods  of  storing  and   retrieving
canonical forms of large data array surfaces (TABCYL,  RLDSRF,
PATERN, SCURV and SSURF).

The  first  is to output the canonical form as card images  to
the  card  punch or the file assigned to  receive  card  punch
output.    These  can then be either physically inserted  into
the new part program deck,  or read into the part program by a
segment read from the assigned file.

The second is to output the canonical forms in internal format
to  named permanent files for future retrieval.     The format
of these files is system dependent,  as is the manner to which
they are named and referenced by the system.

In  both  cases the canonical forms are stored  by  the  PUNCH
command and retrieved by the READ command.

For  card  image output,  the standard form of the  APT  PUNCH
command should be used, e.g.

PUNCH/1,SS1             to punch or store sculptured
surface SS1

PUNCH/SS1,SS2           to punch or store sculptured
surfaces SS1 and SS2.

PUNCH/ALL               to punch or store all canonical
forms.

Refer  to  Volume  1  for any additional  information  and  to
implementation/installation documentation for details of  file
assignment and naming.

Canonical forms stored as card images on file can be read into
a part program by the command,

READ/name               where name references the file
on which the part program
segment is stored.   Refer to
implementation/installation
documentation for details.

278

To  store  the canonical forms in internal  format,  which  is
generally  more  compact,  the  following form  of  the  PUNCH
command should be used

PUNCH/RANDOM,name 1,name 2,...
RETAIN

where  RANDOM         indicates that an existing canonical form
on file with the same name will be over-
written with the new version.

RETAIN         indicates that only new canonical forms
will be stored, thus avoiding over-
writing existing versions.

name 1, name 2,...    names of canonical forms to be stored.

The  filenames  generated by the system will  be  installation
dependent  but will reference the surface name.    Subscripted
names  can be used and the system will automatically  generate
file  names  which append the subscript to the  surface  name.
Inclusive definitions, such as P(ALL) are allowed.

Canonical forms stored in this manner can be retrieved by  the
command

279

9.3  PRINTOUT CONTROL

The type of information printed on the verification listing as
a  result  of  TABCYL,  SCURV  and SSURF  definitions  can  be
controlled by the PRINT command.

TABPRT
PRINT/ SSPRT  , ON
SSTEST   OFF
LIBPRT

where  ON             indicates that the type of verification
point is required.

OFF            inhibits the type of verification
listing.

TABPRT         TABCYL verification listing

DEFAULT  :  ON

SSPRT          sculptured surface and synthetic curve
verification listing

DEFAULT  :  ON

Note:  If a surface or curve is read in
listing is printed if SSPRT,ON.

synthetic curve verification

DEFAULT  :  OFF

SSPRT must be ON for SSTEST,ON to be
effective.

LIBPRT         listing of part program statements read
from file by a part program segment

DEFAULT  :  OFF.

280

9.4  FUNCTIONS

The sculptured surfaces processor provides many trigonometric,
mathematical,  geometric  and data  extraction  functions,  in
addition to those described in Volume 1.

All  functions  allowable in APT4 and sculptured surfaces  are
described in the following subsections.

A function can be used wherever a scalar value is allowed.

e.g.  P1 = POINT/(R * COSF(A)), (R * SINF(A)), z

Functions can be nested.

e.g.  B  = SQRT(ABSF(COSF(A))).

A  nested definition can be used as a geometric argument of  a
function.

e.g.  A  = ANGLF(C1,(POINT/3,5,0))

9.4.1  TRIGONOMETRIC FUNCTIONS

Trigonometric functions can refer to angles either in terms of
degrees  or radials.    The last letter of the  function  name
indicates whether the angular argument or result is in degrees

F  :  degrees

The following is a list of available trigonometric functions

SINF(A)       SINB(A)          sine of angle A

COSF(A)       COSB(A)          cosine of angle A

TANF(A)       TANB(A)          tangent of angle A                      -

COTANF(A)     COTANB(A)        cotangent of angle A

ARSINF(X)     ARSINB(X)        arc sine of X

ARCOSF(X)     ARCOSB(X)        arc cosine of X

ATANF(X)      ATANB(X)         arc tangent of X

ATAN2F(X,Y)   ATAN2F(X,Y)      arc tangent of X/Y

281

9.4.2  MATHEMATICAL FUNCTIONS

The following mathematical functions are available

ABSF(x)                   absolute value of x

SQRTF(x)                  square root of x

EXPF(x)                   exponent function e

LOGF(x)                   natural logarithm log x

SINHF(x)                  hyperbolic sine

COSHF(x)                  hyperbolic cosine

TANHF(x)                  hyperbolic tangent

MINF(x1,x2,x3,...)        minimum function -
finds the minimum value of
up to 99 arguments

MAXF(x1,x2,x3,...)        maximum function -
finds the maximum value of
up to 99 arguments

MODF(x1,x2)               module function
= x1 - int part of        x2

INTF(x)                   integer function, truncation

SIGNF(x1,x2)              transfer of sign
= (sign of x2) *  x1

282

9.4.3  GEOMETRIC FUNCTIONS

The following geometric functions are available.

DOTF(v1,v2)               dot product (scalar product) of
two vectors.

LNTHF(name)               length function, finds the
length of a vector. The argument
can be a VECTOR,LINE,PLANE or
a POINT or   point containing
geometry (CIRCLE,CYLNDR,SPHERE,
CONE) in which case the distance
to the origin is calculated.
Calculations are done in the
base coordinate system, that is
REFSYS does not apply.

ANGLF(name 1,name 2)      angle function in degrees.
In 2D:  the arguments can be
points or point containing
geometry (CIRCLE,CYLNDR,SPHERE,
CONE).   The points are
projected onto the XY plane and
the angle between the positive
x-axis and the line defined by
the two points is calculated.
In 3D:  the input arguments are
vectors or vector containining
geometry (LINE,PLANE) and the
angle between the vectors is
calculated. In both cases REFSYS
does not apply.

ANGLB(name 1,name 2)      same as ANGLF but angle is

DISTF(name 1,name 2)      distance between, two parallel
planes, two points, a point and
a plane.   The distance between
2 points or 2 planes is always
positive.   The distance between
a point and a plane is positive
if the point is on the same side
of the plane as the normal and
negative if it is on the
opposite side.

283

SPATF(v1,v2,v3)           vector volume, calculates the
volume determined by 3 vectors,
v1,v2,v3. The result is positive
if the vectors follow the right
hand rule, otherwise negative.
Instead of a vector a LINE or
PLANE can be used, or points
(POINT), or point containing
geometry (CIRCLE,CYLNDR,SPHERE,
CONE).

9.4.4  DATA EXTRACTION FUNCTIONS

There  are three data extraction functions  available,  PARMF,
NUMF and CANF.

PARMF   provides  the  means  of  extracting  the   parametric
coordinates  of  the  point  which  was  the  result  of   the
immediately preceding extrinsic geometric construction.

NUMF provides means of extracting size data from the canonical
form  of curves and surfaces in addition to its normal use for
extracting the number of points in a PATERN or CLDATA record.

CANF  provides means of extracting values from  the  canonical
form of synthetic curves and sculptured surfaces.

The format for PARMF as a curve extraction function is:

Par  =  PARMF(cname ›,PARAM!)
FLOW

where  Par           Variable name for extracted parameter.

cname         Symbolic name for previously defined
curve.

PARAM         Specifies natural parameter for curve.

FLOW          With this option Par is set to the FLOW
parameter value.

PARAM or FLOW may be omitted from this statement in which case
the default option of PARAM is selected.

Note that this statement can only be  used after a  particular
point  on a curve has been identified by means of an extrinsic
geometric construction via the INTOF facility.

284

Example:

P1  =  POINT/INTOF,PLAN2,CURV1,P0

PAR1 =  PARMF(CURV1,PARAM)

In this example PLAN2 is a previously defined APT plane, CURV1
is  a  previously defined SCURV and P0 is a  reference  point.
P1 is then defined as the point of intersection between  PLAN2
and  CURV1  closest to P0.    PAR1 is given the value  of  the
natural parameter of CURV1 at P1.

The format for PARMF as a surface extraction function is:

PATCH
Par  =  PARMF ( sname , UPARAM )
VPARAM

where  sname         Symbolic name for previously defined
SSURF.

PATCH         PATCH number required as value for Par.

UPARAM        u parameter required.

VPARAM        v parameter required.

If  PATCH,UPARAM  or VPARAM are omitted the default option  of
PATCH  is selected.    Once more the use of this  function  is
only valid after an extrinsic geometric construction.

Example:

P2  =  POINT/INTOF,SURF2,P3,P4

PAR2V  =  PARMF(SURF2,VPARAM)

In  this  example  it is assumed that SURF2 is the name  of  a
previously  defined  sculptured  surface and  P3  and  P4  are
points.    P2  is  first defined as the point of  intersection
between the line joining P3 and P4 and SURF2.    PAR2V is then
given the value of the v parameter of P2 on SURF2.

285

The  NUMF function returns numerical data values which  relate
to the entire curve or surface.   As a curve number extraction
function the format is

N  =  NUMF ( cname , ARC )
SEG

N  is defined as the number of arcs or segments on the  curve.
cname symbolic name for a previously defined SCURV ARC or  SEG
may be omitted in which case the default option gives N as the
number of segments.

As a surface number extraction function the format is:

PATCH
N  =  NUMF ( sname , SPLINE )

where  sname         symbolic name for previously defined
sculptured surface.

N             Integer variable equal to the number of
patches, splines or cross-splines on
the surface according to the option
selected.

If  PATCH,SPLINE  or  CRSSPL are omitted  the  default  option
returns N as the number of patches.

NA  =  NUMF(CURV1,ARC)

NSEG  =  NUMF(CURV1,SEG)

N2  =  NUMF(SURF2)

NA            is the number of arcs on CURV1

NSEG          is the number of segments on CURV1

N2            is the number of patches (default
option) on SURF2

NC            is the number of cross splines
(v parametric curves) on SURF2

286

The  function  CANF  provides for the  extraction  of  values,
referenced by position, from the canonical form of a geometric
entity.     For  parametric  curves  (SCURVs)  and  sculptured
surfaces  (SSURFs)  the number of elements in their  canonical
form  varies according to type and number of arcs or  patches.
For  other geometric entities the number of elements is  given
in the table below.

The format for CANF is

vname  =  CANF(ipos,gname)

where  vname         variable name returns value extracted
from canonical form

ipos          a positive integer specifying position
in canonical form of extracted value

gname         symbolic name for previously defined
geometric entity.

Example:

P1  =  POINT/1.2,2.3,-1.7

YP  =  CANF(2,P1)

In  these  statements  YP is given the  value  of  the  second
element in the canonical form of the point P1.   Thus YP = 2.3
in  this  case.    Note  that  under REFSYS  the  geometry  is
transformed  to the local coordinate system before  extraction
by CANF.

Geometic Entity        Number of Elements

LINE                        4
PLANE                       4
CYLNDR                      7
CIRCLE                      7
SPHERE                      4
HYPERB                     10
LCONIC                     10
ELLIPS                     10
CONE                        7
GCONIC                     10
MATRIX                     12
POINT                       3
VECTOR                      3

287

288
```