Home

surfaces
[Geometry]

Collaboration diagram for surfaces:

Files

file  surdef.hxx

Classes

class  blend_spl_sur
 Provides common functionality and data for all blend surfaces. More...
class  cone
 Defines the elliptical single cone. More...
class  meshsurf
 This class records a composite mesh surface. More...
class  msh_sur
 Actual container class for mesh data. More...
class  neighborhood
 Class to indicate which element to evaluate on if not averaging. More...
class  off_spl_sur
 Represents the offset of a surface. More...
class  plane
 Defines a planar surface. More...
class  rb_blend_spl_sur
 Implements the constant radius rolling ball blend surface. More...
class  rot_spl_sur
 Represents a surface of rotation. More...
class  skin_spl_sur
 Defines a skin surface between a list of curves. More...
class  sphere
 Spherical surface definition. More...
class  spl_sur
 Defines an abstract base class from which spline surface definitions are derived. More...
class  spline
 Records a B-spline surface. More...
class  sub_spl_sur
 Subsetted spline surface. More...
class  sum_spl_sur
 Represents a surface built by the linear summation of two curves. More...
class  surf_normcone
 Provides a return value for normal_cone, which returns a cone bounding the surface normal. More...
class  surf_princurv
 Provides the return value for the principal curvature functions, returning two directions and two curvatures for a surface. More...
class  surface
 Base class for all ACIS surface types, which defines the basic virtual functions that are supplied for all specific surface classes. More...
class  sweep_spl_sur
 Defines the perpendicular sweep of a planar profile curve along a path curve. More...
class  torus
 Represents tori. More...
class  VBL_SURF
 Defines the vertex blend surface class. More...

Defines

#define cone_type   2
 Defines an identifying type for this (lower-case) surface.

Enumerations

enum  blend_coord_type
 Specifies the blending of true surfaces with the approximating one outside the polygon. More...
enum  closed_forms
 Number of closed forms for blend surfaces. More...
enum  copy_knots_mode
 Controls the preservation of knot values when one B-spline surface is derived from another. More...
enum  error_type
 Specifies the type of error that is to be found by the VBL_SURF error functions. More...
enum  evaluate_surface_quadrant
 Enumerated type used to determine which of four possible derivatives to evaluate in evaluate() when there is a discontinuity. More...
enum  save_approx_level
 Level at which approximating surface data is output to save files. More...
enum  sweep_path_type
 Enumerated type used to determine sweep path type if the surface can be thought of as a swept surface. More...

Functions

virtual int surface::accurate_derivs (const SPApar_box &box=*(SPApar_box *) NULL_REF) const
 Returns the number of derivatives of this surface that can be found accurately and relatively directly.
virtual const double * surface::all_discontinuities_u (int &n_discont, int order)
 Returns the number and parameter values of all discontinuities in u of this surface, up to the given order (maximum three).
virtual const double * surface::all_discontinuities_v (int &n_discont, int order)
 Returns the number and parameter values of all discontinuities in v of this surface, up to the given order (maximum three).
virtual SPAbox surface::bound (const SPAbox &box, const SPAtransf &transf=*(SPAtransf *) NULL_REF) const
 Returns an object-space box bounding this surface.
virtual SPAbox surface::bound (const SPApar_box &parbox=*(SPApar_box *) NULL_REF, const SPAtransf &transf=*(SPAtransf *) NULL_REF) const
 Returns an object-space box bounding this surface.
virtual void surface::change_event ()
 Notifies the derived type that this surface has been changed.
virtual check_status_listsurface::check (const check_fix &input=*(const check_fix *) NULL_REF, check_fix &result=*(check_fix *) NULL_REF, const check_status_list *chks=(const check_status_list *) NULL_REF)
 Checks for any data errors in this surface, and corrects the errors if possible.
virtual logical surface::closed_u () const
 Determines whether this surface is closed, smoothly or not, in the u-parameter direction.
virtual logical surface::closed_v () const
 Determines whether this surface is closed, smoothly or not, in the v-parameter direction.
surfacesurface::copy_surf () const
 Makes a copy of this surface.
virtual void surface::debug (const char *title, FILE *fp=debug_file_ptr) const =0
 Prints out a title line and details about this surface to the debug file or any other specified file.
virtual surfacesurface::deep_copy (pointer_map *pm=NULL) const =0
 Creates a copy of this object that does not share any data with the original.
virtual const double * surface::discontinuities_u (int &n_discont, int order) const
 Returns the number and parameter values of discontinuities in u of this surface, of the given order (maximum three), in a read-only array.
virtual const double * surface::discontinuities_v (int &n_discont, int order) const
 Returns the number and parameter values of discontinuities in v of this surface, of the given order (maximum three), in a read-only array.
virtual int surface::discontinuous_at_u (double u) const
 Determines whether a particular value of u represents a discontinuity of this surface.
virtual int surface::discontinuous_at_v (double v) const
 Determines whether a particular value of v represents a discontinuity of this surface.
virtual void surface::eval (const SPApar_pos &param, SPAposition &pos, SPAvector *first_derivs=NULL, SPAvector *second_derivs=NULL) const
 Finds the position on a parametric surface corresponding to the given parameter values, and optionally the first and second derivatives as well.
virtual double surface::eval_cross (const SPApar_pos &pos, const SPAunit_vector &normal) const
 Finds the curvature of a cross-sectional curve of the parametric surface at the point with the given parameter position.
virtual SPAunit_vector surface::eval_normal (const SPApar_pos &pos) const
 Finds the normal to a parametric surface at the point with the given parameter position.
virtual SPAunit_vector surface::eval_outdir (const SPApar_pos &pos) const
 Finds the outward direction from this surface at the point with the given parameter position.
virtual SPAposition surface::eval_position (const SPApar_pos &pos) const
 Finds the point on a parametric surface with the given parameter position.
surf_princurv surface::eval_prin_curv (const SPApar_pos &pos) const
 Finds the principal axes of curvature of this surface at the point with the given parameter position and the curvatures in those directions, in a structure defined for the purpose.
virtual void surface::eval_prin_curv (const SPApar_pos &pos, SPAunit_vector &axis1, double &cur1, SPAunit_vector &axis2, double &cur2) const
 Finds the principal axes of curvature of this surface at the point with the given parameter position, and the curvatures in those directions.
virtual int surface::evaluate (const SPApar_pos &param, SPAposition &pos, SPAvector **derivs=NULL, int nd=0, evaluate_surface_quadrant quad=evaluate_surface_unknown) const
 Calculates derivatives, of any order up to the number requested, and stores them in vectors provided by the user.
virtual int surface::evaluate_iter (const SPApar_pos &param, surface_evaldata *data, SPAposition &pos, SPAvector **derivs=NULL, int nd=0, evaluate_surface_quadrant quad=evaluate_surface_unknown) const
 Calculates derivatives, of any order up to the number requested, in an iterative fashion.
int surface::finite_difference_derivatives (const SPApar_pos &param, SPAposition &pos, SPAvector **derivs, int nd, int nfound, double du, double dv, evaluate_surface_quadrant quad) const
 Evaluate higher derivatives than are available accurately in evaluate by finite differencing.
virtual const discontinuity_infosurface::get_disc_info_u () const
 Returns read-only access to a discontinuity_info object, if there is one, detailing discontinuities in u.
virtual const discontinuity_infosurface::get_disc_info_v () const
 Returns read-only access to a discontinuity_info object, if there is one, detailing discontinuities in v.
virtual curvesurface::get_path () const
 Returns the sweep path curve for this surface.
virtual sweep_path_type surface::get_path_type () const
 Returns the sweep path type for this surface.
virtual curvesurface::get_profile (double param) const
 Returns the sweep profile on this surface.
virtual lawsurface::get_rail () const
 Returns the rail law for this swept surface.
virtual logical surface::left_handed_uv () const
 Indicates whether the parameter coordinate system of this surface is right-handed or left-handed.
void surface::limit (const SPApar_box &box)
 Subsets this surface in place, according to the given parameter box.
void surface::limit_u (const SPAinterval &range)
 Subsets this surface in place, according to the given interval in u.
void surface::limit_v (const SPAinterval &range)
 Subsets this surface in place, according to the given interval in v.
virtual surfacesurface::make_copy () const =0
 Makes a copy of this surface on the heap, and returns a pointer to it.
virtual surface_evaldata * surface::make_evaldata () const
 Constructs a data object to retain evaluation information across calls to evaluate_iter.
virtual logical surface::need_save_as_approx (int save_to_version, logical check_progenitors) const
 Queries whether the object needs to be saved to an old version as an approximation.
virtual surfacesurface::negate ()=0
 Reverses the sense of this surface.
virtual surf_normcone surface::normal_cone (const SPApar_box &parbox, logical approx_OK=FALSE, const SPAtransf &transf=*(SPAtransf *) NULL_REF) const
 Returns a cone bounding the normal direction of this surface.
logical surface::operator!= (const surface &surf) const
 Tests this surface for inequality to another surface.
torus operator* (const torus &tor, const SPAtransf &transf)
 Returns a transformed copy of a given torus.
spline operator* (spline const &name, SPAtransf const &trans)
 Transforms a spline surface.
sphere operator* (sphere const &name, SPAtransf const &trans)
 Transforms a sphere surface.
plane operator* (plane const &pla, SPAtransf const &trans)
 Returns a plane that is (a copy of) the given plane transformed by the given transform.
meshsurf operator* (meshsurf const &, SPAtransf const &)
cone operator* (cone const &item, SPAtransf const &transform)
 Returns a cone being (a copy of) this cone transformed by the given SPAtransf.
virtual surfacesurface::operator*= (const SPAtransf &transf)=0
 Transforms this surface by the given transformation.
virtual logical surface::operator== (const surface &surf) const
 Tests this surface for equality to another surface.
virtual SPApar_pos surface::param (const SPAposition &pos, const SPApar_pos &guess=*(SPApar_pos *) NULL_REF) const
 Finds the parameter position of a given point on this surface, given an optional first guess.
SPApar_dir surface::param_dir (const SPAunit_vector &dir, const SPApar_pos &pos) const
 Finds the direction in parameter space of a given object-space direction on this surface, at a given parameter position.
virtual double surface::param_period_u () const
 Returns the period, in u, of a periodic parametric surface.
virtual double surface::param_period_v () const
 Returns the period, in v, of a periodic parametric surface.
virtual SPApar_box surface::param_range (const SPAbox &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of this surface.
virtual SPAinterval surface::param_range_u (const SPAbox &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of a surface in the u-parameter direction.
virtual SPAinterval surface::param_range_v (const SPAbox &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of a surface in the v-parameter direction.
virtual SPApar_vec surface::param_unitvec (const SPAunit_vector &dir, const SPApar_pos &pos) const
 Finds the rate of change in the surface parameter corresponding to a unit velocity in a given object-space direction, at a given position in parameter space.
virtual logical surface::parametric () const
 Returns TRUE if this surface is a parametric surface - otherwise returns FALSE.
virtual logical surface::periodic_u () const
 Determines if this surface is periodic in the u-parameter direction (i.e., if it is smoothly closed, so that faces can run over the seam).
virtual logical surface::periodic_v () const
 Determines if this surface is periodic in the v-parameter direction (i.e., if it is smoothly closed, so that faces can run over the seam).
virtual logical surface::planar (SPAposition &pos, SPAunit_vector &normal) const
 Reports whether this surface is planar.
virtual double surface::point_cross (const SPAposition &pos, const SPAunit_vector &normal, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF) const
 Finds the curvature of a cross-sectional curve of this surface at the given point.
virtual SPAunit_vector surface::point_normal (const SPAposition &pos, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF) const =0
 Finds the normal to this surface at a point on the surface nearest to the given position.
virtual SPAunit_vector surface::point_outdir (const SPAposition &pos, const SPApar_pos &guess=*(SPApar_pos *) NULL_REF) const
 Finds the outward direction from this surface at a point nearest the given position.
void surface::point_perp (const SPAposition &pos, SPAposition &foot, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF, SPApar_pos &param_actual=*(SPApar_pos *) NULL_REF, logical f_weak=FALSE) const
 Finds the point on this surface nearest to the given point.
void surface::point_perp (const SPAposition &pos, SPAposition &foot, SPAunit_vector &normal, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF, SPApar_pos &param_actual=*(SPApar_pos *) NULL_REF, logical f_weak=FALSE) const
 Finds the point on this surface nearest to the given point and, optionally, the normal to the surface at that point.
virtual void surface::point_perp (const SPAposition &pos, SPAposition &foot, SPAunit_vector &normal, surf_princurv &cur, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF, SPApar_pos &param_actual=*(SPApar_pos *) NULL_REF, logical f_weak=FALSE) const =0
 Finds the point on this surface nearest to the given point and, optionally, the normal to and the principal curvatures of the surface at that point.
surf_princurv surface::point_prin_curv (const SPAposition &pos, const SPApar_pos &guess=*(SPApar_pos *) NULL_REF) const
 Finds the principal axes of curvature of this surface at a given point and the curvatures in those directions, in a structure defined for the purpose.
virtual void surface::point_prin_curv (const SPAposition &pos, SPAunit_vector &axis1, double &cur1, SPAunit_vector &axis2, double &cur2, const SPApar_pos &param_guess=*(SPApar_pos *) NULL_REF) const =0
 Finds the principal axes of curvature of this surface at a given point, and the curvatures along these axes.
void surface::restore_data ()
 Restores the data for this surface from a save file.
virtual void surface::save () const =0
 Calls the virtual save method for the particular type of this surface.
void surface::save_data () const
 Saves the information for this surface to a save file.
void surface::save_surface () const
 Saves this surface if the surface is of an unknown type or NULL.
virtual logical surface::singular_u (double uparam) const
 Determines whether the parameterization of this surface is singular at the specified u-parameter value.
virtual logical surface::singular_v (double vparam) const
 Determines whether the parameterization of this surface is singular at the specified v-parameter value.
virtual int surface::split_at_kinks_u (spline **&pieces, double curvature=0.0) const
 Divides this surface along u into separate pieces that are smooth (and therefore suitable for offsetting or blending).
virtual int surface::split_at_kinks_v (spline **&pieces, double curvature=0.0) const
 Divides this surface along v into separate pieces that are smooth (and therefore suitable for offsetting or blending).
surfacesurface::subset (const SPApar_box &box) const
 Constructs a subset copy, within the given parameter box, of this surface.
SPApar_box surface::subset_box () const
 Returns the subset box of this surface.
surfacesurface::subset_u (const SPAinterval &range) const
 Constructs a subset copy, within the given u interval, of this surface.
SPAinterval surface::subset_u_interval () const
 Returns a subset interval of this surface, in u.
surfacesurface::subset_v (const SPAinterval &range) const
 Constructs a subset copy within the given v interval.
SPAinterval surface::subset_v_interval () const
 Returns a subset interval of this surface, in v.
logical surface::subsetted () const
 Determines whether this surface has a significant subset range.
logical surface::subsetted_u () const
 Determines whether this surface has a significant subset range in the u direction.
logical surface::subsetted_v () const
 Determines whether this surface has a significant subset range in the v direction.
 surf_normcone::surf_normcone (const SPAunit_vector &ax, double ang, surface_vardir vdir, logical approx_OK, logical over)
 Constructs a surf_normcone from the specified parameters.
 surf_princurv::surf_princurv (const SPAunit_vector &d1, double c1, const SPAunit_vector &d2, double c2)
 Constructs a surf_princurv from two curvatures and two directions.
 surf_princurv::surf_princurv ()
 Constructs a surf_princurv (default constructor).
 surface::surface ()
 Constructs a surface (default constructor).
logical surface::test_point (const SPAposition &pos, const SPApar_pos &uv_guess=*(SPApar_pos *) NULL_REF, SPApar_pos &uv_actual=*(SPApar_pos *) NULL_REF) const
 Determines whether a point lies on this surface to the system precision.
virtual logical surface::test_point_tol (const SPAposition &pos, double tol=0, const SPApar_pos &uv_guess=*(SPApar_pos *) NULL_REF, SPApar_pos &uv_actual=*(SPApar_pos *) NULL_REF) const =0
 Determines whether a point lies on this surface to the given tolerance.
virtual int surface::type () const =0
 Returns the type of this surface.
virtual const char * surface::type_name () const =0
 Returns the string "surface".
virtual curvesurface::u_param_line (double vparam) const
 Constructs a parameter line on this surface.
virtual logical surface::undef () const
 Determines whether this surface is defined or undefined.
logical surface::undefined () const
 Determines whether this surface is defined or undefined.
void surface::unlimit ()
 Removes the subsetting from this surface.
void surface::unlimit_u ()
 Removes the subsetting from this surface, in the u direction.
void surface::unlimit_v ()
 Removes the subsetting from this surface, in the v direction.
surfacesurface::unsubset () const
 Constructs a copy of the unbounded surface underlying this one.
surfacesurface::unsubset_u () const
 Constructs a copy of the unbounded (in u) surface underlying this one.
surfacesurface::unsubset_v () const
 Constructs a copy of the unbounded (in v) surface underlying this one.
virtual curvesurface::v_param_line (double uparam) const
 Constructs a parameter line on the surface.
virtual surface::~surface ()
 C++ destructor, deleting a surface.

Variables

double surf_normcone::angle
 Positive half angle defining the bounding cone.
logical surf_normcone::approx
 Is TRUE if this is only an approximation to the best cone available.
double surf_princurv::curv1
 The first curvature.
double surf_princurv::curv2
 The second curvature.
SPAunit_vector surf_princurv::dir2
 The second direction vector.
logical surf_normcone::oversize
 If approx is TRUE, this flag is TRUE if this cone is entirely outside the best available cone and FALSE if it is inside.
surface_vardir surf_normcone::vardir
 Classifies whether the normal direction varies more in the u-parameter direction, more in the v-parameter direction, or in neither.

Define Documentation

#define cone_type   2

Defines an identifying type for this (lower-case) surface.


Enumeration Type Documentation

Specifies the blending of true surfaces with the approximating one outside the polygon.


Parameters:
TRUE_SUR only need the true surface, so must be in or on the polygon.
APPROX_SUR well outside and need only the approximating surface.
BOTH_SURS marginally outside and must blend the two together.

include <vbl.hxx>

Number of closed forms for blend surfaces.

Parameters:
OPEN open.
CLOSED closed.
PERIODIC periodic.
CLOSURE_UNSET unspecified closure.

include <cur_sur.hxx>

Controls the preservation of knot values when one B-spline surface is derived from another.


Role: This enumeration is used to signal that you desire that a derived B-spline surface have the same knot values as the surface on which it is based (its progenitor). This is true of surfaces that form the primary definition of a face's geometry as well as of surfaces used as approximations to such surfaces.

This flag is currently recognized only in the context of spring back deformations.

Parameters:
NO_COPY_KNOTS Do not copy knot values.
COPY_KNOTS_INITIALLY Preserve knot values through the given operation. Knots values may subsequently change.

include <spldef.hxx>

enum error_type

Specifies the type of error that is to be found by the VBL_SURF error functions.


Parameters:
exact_error attempts to find the maximum error across the region of boundary or across the internal surface region.
approximate_error errors over the regions are approximated by the errors in the center of the region.
approx_if_too_big errors are calculated accurately unless the error is found to be bigger than a requested tolerance, in which case the errors are approximated.

include <vbl.hxx>

Enumerated type used to determine which of four possible derivatives to evaluate in evaluate() when there is a discontinuity.


Role: The evaluation point on a surface can be illustrated in the following way as:

            |
         I  | II
       -----+-----
        III | IV
            |       
where the horizonal is the u direction and the vertical, v.
Parameters:
evaluate_surface_above_above II of the quadrant.
evaluate_surface_below_above I of the quadrant.
evaluate_surface_below_below III of the quadrant.
evaluate_surface_above_below IV of the quadrant.
evaluate_surface_unknown Not a specific quadrant.

include <surdef.hxx>

Level at which approximating surface data is output to save files.

Parameters:
save_approx_full Save the full bs3_curve / surface.
save_approx_summary Save a summary of the bs3_curve / surface.
save_approx_none. Do not save the bs3_curve or surface at all.
save_approx_historical Save as before version 5.0.
save_approx_optimal Let the system make the decision, based on specific curve or surface type.

include <cur_sur.hxx>

Enumerated type used to determine sweep path type if the surface can be thought of as a swept surface.


Role: For example, a torus and a rot_spl_sur both have a circular sweep path type.

Parameters:
unknown_path_type For surfaces that cannot be considered swept.
straight_path_type The path is a straight line.
circular_path_type The path is an ellipse.
defined_path_type For surfaces with a given sweep path (e.g. sweep_spl_sur )

include <surdef.hxx>


Function Documentation

virtual int surface::accurate_derivs ( const SPApar_box box = *(SPApar_box *) NULL_REF  )  const [virtual, inherited]

Returns the number of derivatives of this surface that can be found accurately and relatively directly.



Role: Returns the number of derivatives that can be found by evaluate accurately and relatively directly, rather than by finite differencing over the given portion of the surface. If there is no limit to the number of accurate derivatives, returns the value ALL_SURFACE_DERIVATIVES.

Parameters:
box portion of the surface to be considered (optional).

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual const double* surface::all_discontinuities_u ( int &  n_discont,
int  order 
) [virtual, inherited]

Returns the number and parameter values of all discontinuities in u of this surface, up to the given order (maximum three).



Role: The returned array is read-only.

Parameters:
n_discont number of discontinuities found.
order maximum order of the discontinuities.

Reimplemented in spline.

virtual const double* surface::all_discontinuities_v ( int &  n_discont,
int  order 
) [virtual, inherited]

Returns the number and parameter values of all discontinuities in v of this surface, up to the given order (maximum three).



Role: The returned array is read-only.

Parameters:
n_discont number of discontinuities found.
order maximum order of the discontinuities.

Reimplemented in spline.

virtual SPAbox surface::bound ( const SPAbox box,
const SPAtransf transf = *(SPAtransf *) NULL_REF 
) const [virtual, inherited]

Returns an object-space box bounding this surface.



Role: This box need not be the smallest box that contains the specified portion of the surface, but it must balance the tightness of the bound against the cost of the evaluation.

Parameters:
box the region of interest.
transf optional transformation.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPAbox surface::bound ( const SPApar_box parbox = *(SPApar_box *) NULL_REF,
const SPAtransf transf = *(SPAtransf *) NULL_REF 
) const [virtual, inherited]

Returns an object-space box bounding this surface.



Role: This box need not be the smallest box that contains the specified portion of the surface, but it must balance the tightness of the bound against the cost of the evaluation.

Parameters:
parbox the region of interest.
transf optional transformation.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual void surface::change_event (  )  [virtual, inherited]

Notifies the derived type that this surface has been changed.



Role: Used when the subset_range has changed, so that the surface can update itself. The default version of this method does nothing.

Reimplemented in spline.

virtual check_status_list* surface::check ( const check_fix &  input = *(const check_fix *) NULL_REF,
check_fix &  result = *(check_fix *) NULL_REF,
const check_status_list chks = (const check_status_list *) NULL_REF 
) [virtual, inherited]

Checks for any data errors in this surface, and corrects the errors if possible.



Role: The various arguments provide control over which checks are made, which fixes can be applied and which fixes were actually applied. The function returns a list of errors that remain in the surface on exit.

The default for the set of flags which say which fixes are allowable is none (nothing is fixed). If the list of checks to be made is NULL, then every possible check will be made. Otherwise, the function will only check for things in the list. Note that it is possible for errors not in the input list to be returned, as certain problems preclude other checks being performed. In such situations, the return list will contain errors which were not requested, but which have prevented requested checks from being made.

Parameters:
input set of flags for fixes allowed.
result fixes applied.
chks checks to be made (default is none).

Reimplemented in spline.

virtual logical surface::closed_u (  )  const [virtual, inherited]

Determines whether this surface is closed, smoothly or not, in the u-parameter direction.



Role: Always returns TRUE if the corresponding periodic method returns TRUE.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::closed_v (  )  const [virtual, inherited]

Determines whether this surface is closed, smoothly or not, in the v-parameter direction.



Role: Always returns TRUE if the corresponding periodic method returns TRUE.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

surface* surface::copy_surf (  )  const [inherited]

Makes a copy of this surface.



Role: This method calls make_copy.

virtual void surface::debug ( const char *  title,
FILE *  fp = debug_file_ptr 
) const [pure virtual, inherited]

Prints out a title line and details about this surface to the debug file or any other specified file.



Parameters:
title title string.
fp FILE pointer.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual surface* surface::deep_copy ( pointer_map pm = NULL  )  const [pure virtual, inherited]

Creates a copy of this object that does not share any data with the original.



Role: Allocates new storage for all member data and any pointers. Returns a pointer to the copied item.

In a deep copy, all the information about the copied item is self-contained in a new memory block. By comparison, a shallow copy stores only the first instance of the item in memory, and increments the reference count for each copy.

The pointer_map keeps a list of all pointers in the original object that have already been deep copied. For example, a deep copy of a complex model results in self contained data, but identical sub-parts within the model are allowed to share a single set of data.

Parameters:
pm list of items within the object that are already deep copied.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual const double* surface::discontinuities_u ( int &  n_discont,
int  order 
) const [virtual, inherited]

Returns the number and parameter values of discontinuities in u of this surface, of the given order (maximum three), in a read-only array.



Parameters:
n_discont number of discontinuities found.
order order of the discontinuities.

Reimplemented in spline.

virtual const double* surface::discontinuities_v ( int &  n_discont,
int  order 
) const [virtual, inherited]

Returns the number and parameter values of discontinuities in v of this surface, of the given order (maximum three), in a read-only array.



Parameters:
n_discont number of discontinuities found.
order order of the discontinuities.

Reimplemented in spline.

virtual int surface::discontinuous_at_u ( double  u  )  const [virtual, inherited]

Determines whether a particular value of u represents a discontinuity of this surface.



Parameters:
u parameter value to test.

Reimplemented in spline.

virtual int surface::discontinuous_at_v ( double  v  )  const [virtual, inherited]

Determines whether a particular value of v represents a discontinuity of this surface.



Parameters:
v parameter value to test.

Reimplemented in spline.

virtual void surface::eval ( const SPApar_pos param,
SPAposition pos,
SPAvector first_derivs = NULL,
SPAvector second_derivs = NULL 
) const [virtual, inherited]

Finds the position on a parametric surface corresponding to the given parameter values, and optionally the first and second derivatives as well.



Parameters:
param parameter position at which to perform the evaluation.
pos position on surface at the specified parameter position.
first_derivs first derivatives (array of length 2 in the order Xu, Xv).
second_derivs second derivatives (array of length 3 in the order Xuu, Xuv, Xvv).

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual double surface::eval_cross ( const SPApar_pos pos,
const SPAunit_vector normal 
) const [virtual, inherited]

Finds the curvature of a cross-sectional curve of the parametric surface at the point with the given parameter position.



Role: The cross-sectional curve is given by the intersection of the surface with a plane passing through the given point and with the given normal.

Parameters:
pos position on the interecting plane.
normal normal to the interecting plane.

Reimplemented in meshsurf, plane, sphere, and spline.

virtual SPAunit_vector surface::eval_normal ( const SPApar_pos pos  )  const [virtual, inherited]

Finds the normal to a parametric surface at the point with the given parameter position.



Parameters:
pos parameter position at which to evaluate the surface normal.

Reimplemented in meshsurf, plane, sphere, spline, and torus.

virtual SPAunit_vector surface::eval_outdir ( const SPApar_pos pos  )  const [virtual, inherited]

Finds the outward direction from this surface at the point with the given parameter position.



Role: This method usually returns the normal, but if the nearest point is a singularity (like the apex of a cone), it still returns an outward direction.

Parameters:
pos parameter position at which to evaluate the outward direction.

Reimplemented in cone, meshsurf, and spline.

virtual SPAposition surface::eval_position ( const SPApar_pos pos  )  const [virtual, inherited]

Finds the point on a parametric surface with the given parameter position.



Parameters:
pos parameter position at which to evaluate the surface position.

Reimplemented in meshsurf, and spline.

surf_princurv surface::eval_prin_curv ( const SPApar_pos pos  )  const [inherited]

Finds the principal axes of curvature of this surface at the point with the given parameter position and the curvatures in those directions, in a structure defined for the purpose.



Parameters:
pos parameter position at which to evaluate the curvature.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual void surface::eval_prin_curv ( const SPApar_pos pos,
SPAunit_vector axis1,
double &  cur1,
SPAunit_vector axis2,
double &  cur2 
) const [virtual, inherited]

Finds the principal axes of curvature of this surface at the point with the given parameter position, and the curvatures in those directions.



Parameters:
pos parameter position at which to evaluate the curvatures and curvature axes.
axis1 first axis of curvature.
cur1 curvature along the first axis.
axis2 second axis of curvature.
cur2 curvature along the second axis.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual int surface::evaluate ( const SPApar_pos param,
SPAposition pos,
SPAvector **  derivs = NULL,
int  nd = 0,
evaluate_surface_quadrant  quad = evaluate_surface_unknown 
) const [virtual, inherited]

Calculates derivatives, of any order up to the number requested, and stores them in vectors provided by the user.



Role: This method returns the number of derivatives it was able to calculate; usually, this equals the requested number. A certain number are evaluated directly and accurately; higher derivatives are automatically calculated by finite differencing. The accuracy of these decreases with the order of the derivative, as the cost increases. Any of the pointers may be NULL, in which case the corresponding derivatives will not be returned. Otherwise they must point to arrays long enough for all the derivatives of that order.

Parameters:
param the parameter position at which the surface is to be evaluated.
pos point on the surface at the given parameter position.
derivs pointer arrays of derivatives.
nd the number of derivatives required.
quad the evaluation location - above, below, or "don't care" (for each parameter direction).

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual int surface::evaluate_iter ( const SPApar_pos param,
surface_evaldata *  data,
SPAposition pos,
SPAvector **  derivs = NULL,
int  nd = 0,
evaluate_surface_quadrant  quad = evaluate_surface_unknown 
) const [virtual, inherited]

Calculates derivatives, of any order up to the number requested, in an iterative fashion.



Role: The purpose of this method is the same as that of evaluate, but evaluate_iter is additionally supplied with a data object which contains results from a previous close evaluation, for use as initial values for any iteration involved. This object may furthermore be updated to reflect the results of this evaluation.

Parameters:
param the parameter position at which the surface is to be evaluated.
data data supplying initial values, and set to reflect the results of this evaluation.
pos point on the curve at the given parameter.
derivs pointer arrays of derivatives.
nd the number of derivatives required.
quad the evaluation location - above, below, or "don't care" (for each parameter direction).

Reimplemented in spline.

int surface::finite_difference_derivatives ( const SPApar_pos param,
SPAposition pos,
SPAvector **  derivs,
int  nd,
int  nfound,
double  du,
double  dv,
evaluate_surface_quadrant  quad 
) const [protected, inherited]

Evaluate higher derivatives than are available accurately in evaluate by finite differencing.



Role: This method is available to any derived class for use in its own evaluate method. It calls back the evaluate function for adjacent points to evaluate a number of derivatives, so evaluate must ensure that this does not cause a further call to this method. See evaluate for details regarding the parameters.

Parameters:
param the parameter position at which the surface is to be evaluated.
pos point on the surface at the given parameter.
derivs pointer arrays of derivatives.
nd the number of derivatives required.
nfound the number of derivatives already evaluated, and directly evaluable in the neighborhood of the param.
du the finite differencing step to use in the u-direction.
dv the finite differencing step to use in the v-direction.
quad the evaluation location - above, below, or "don't care" (for each parameter direction).

virtual const discontinuity_info& surface::get_disc_info_u (  )  const [virtual, inherited]

Returns read-only access to a discontinuity_info object, if there is one, detailing discontinuities in u.



Role: The default version of this method returns NULL.

Reimplemented in spline.

virtual const discontinuity_info& surface::get_disc_info_v (  )  const [virtual, inherited]

Returns read-only access to a discontinuity_info object, if there is one, detailing discontinuities in v.



Role: The default version of this method returns NULL.

Reimplemented in spline.

virtual curve* surface::get_path (  )  const [inline, virtual, inherited]

Returns the sweep path curve for this surface.

Reimplemented in cone, plane, spline, and torus.

virtual sweep_path_type surface::get_path_type (  )  const [inline, virtual, inherited]

Returns the sweep path type for this surface.

Reimplemented in cone, plane, spline, and torus.

virtual curve* surface::get_profile ( double  param  )  const [inline, virtual, inherited]

Returns the sweep profile on this surface.



Parameters:
param parameter at which to get the profile.

Reimplemented in cone, spline, and torus.

virtual law* surface::get_rail (  )  const [inline, virtual, inherited]

Returns the rail law for this swept surface.

Reimplemented in cone, plane, spline, and torus.

virtual logical surface::left_handed_uv (  )  const [virtual, inherited]

Indicates whether the parameter coordinate system of this surface is right-handed or left-handed.



Role: With a right-handed system, the outward normal at any point is given by the cross product of the increasing u-direction with the increasing v-direction, in that order. With a left-handed system, the outward normal is in the opposite direction from this cross product.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

void surface::limit ( const SPApar_box box  )  [inherited]

Subsets this surface in place, according to the given parameter box.



Parameters:
box parameter box defining the subset.

void surface::limit_u ( const SPAinterval range  )  [inherited]

Subsets this surface in place, according to the given interval in u.



Parameters:
range interval defining the subset.

void surface::limit_v ( const SPAinterval range  )  [inherited]

Subsets this surface in place, according to the given interval in v.



Parameters:
range interval defining the subset.

virtual surface* surface::make_copy (  )  const [pure virtual, inherited]

Makes a copy of this surface on the heap, and returns a pointer to it.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual surface_evaldata* surface::make_evaldata (  )  const [virtual, inherited]

Constructs a data object to retain evaluation information across calls to evaluate_iter.



Role: This is to allow subsidiary calls within an iterative evaluator to start iteration much closer to the required result than is possible just using the curve information itself.

Reimplemented in spline.

virtual logical surface::need_save_as_approx ( int  save_to_version,
logical  check_progenitors 
) const [virtual, inherited]

Queries whether the object needs to be saved to an old version as an approximation.



Role: Called by SAT save APIs with check_progenitors==TRUE to determine if an object needs to be tolerantly simplified before being saved to an old version. The check_progenitors flag indicates that the object should call need_save_as_approx() on any curve or surface construction geometry upon which it depends, and return TRUE if any of the progenitors do. Customers with their own derived curve or surface types should override this routine to return true whenever they want their geometry to be imported (as a B-spline approximation) into other applications or when saving to a version of their application before the derived geometry type in question existed.

Parameters:
save_to_version version to which the object will be saved
check_progenitors if TRUE, query construction geometry and base class as well

Reimplemented in spline.

virtual surface& surface::negate (  )  [pure virtual, inherited]

Reverses the sense of this surface.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual surf_normcone surface::normal_cone ( const SPApar_box parbox,
logical  approx_OK = FALSE,
const SPAtransf transf = *(SPAtransf *) NULL_REF 
) const [virtual, inherited]

Returns a cone bounding the normal direction of this surface.



Role: The cone is deemed to have its apex at the origin and have a given axis direction and (positive) half-angle. If the logical argument is TRUE, then this method finds a quick approximation. The approximate result may lie wholly within or wholly outside the guaranteed bound (obtained with a FALSE argument), but may not cross from inside to outside. Flags in the turned object indicate whether the cone is the best available and, if not, whether this result is inside or outside the best cone.

Parameters:
parbox the given region.
approx_OK approximate result is ok.
transf transformation to apply.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

logical surface::operator!= ( const surface surf  )  const [inline, inherited]

Tests this surface for inequality to another surface.



Role: This method does not guarantee equality for effectively-equal surfaces, but it is guaranteed to determine inequality if the two surfaces are not equal. Use this result for optimization.

Parameters:
surf surface to compare for inequality.

torus operator* ( const torus tor,
const SPAtransf transf 
)

Returns a transformed copy of a given torus.



Parameters:
tor torus to be copied and transformed.
transf transformation applied to the copy.

include <tordef.hxx>

spline operator* ( spline const &  name,
SPAtransf const &  trans 
)

Transforms a spline surface.



Parameters:
name spline name.
trans transformation.

include <spldef.hxx>

sphere operator* ( sphere const &  name,
SPAtransf const &  trans 
)

Transforms a sphere surface.



Parameters:
name sphere name.
trans transform to use.

include <sphdef.hxx>

plane operator* ( plane const &  pla,
SPAtransf const &  trans 
)

Returns a plane that is (a copy of) the given plane transformed by the given transform.



Parameters:
pla given plane.
trans transform.

include <pladef.hxx>

meshsurf operator* ( meshsurf const &  ,
SPAtransf const &   
)

Makes a deferred copy, then calls operator*=.

include <mshdef.hxx>

cone operator* ( cone const &  item,
SPAtransf const &  transform 
)

Returns a cone being (a copy of) this cone transformed by the given SPAtransf.



Parameters:
item item to copy.
transform transform.

include <condef.hxx>

virtual surface& surface::operator*= ( const SPAtransf transf  )  [pure virtual, inherited]

Transforms this surface by the given transformation.



Parameters:
transf transformation to apply.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::operator== ( const surface surf  )  const [virtual, inherited]

Tests this surface for equality to another surface.



Role: This method does not guarantee equality for effectively-equal surfaces, but it is guaranteed to determine inequality if the two surfaces are not equal. Use this result for optimization.

Parameters:
surf surface to compare for equality.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPApar_pos surface::param ( const SPAposition pos,
const SPApar_pos guess = *(SPApar_pos *) NULL_REF 
) const [virtual, inherited]

Finds the parameter position of a given point on this surface, given an optional first guess.



Parameters:
pos the position for which the parameter position is to be found.
param_guess parameter guess.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

SPApar_dir surface::param_dir ( const SPAunit_vector dir,
const SPApar_pos pos 
) const [inherited]

Finds the direction in parameter space of a given object-space direction on this surface, at a given parameter position.



Parameters:
dir object-space direction for which the parameter-space direction is to be determined.
pos parameter position at which the direction is to be determined.

virtual double surface::param_period_u (  )  const [virtual, inherited]

Returns the period, in u, of a periodic parametric surface.



Role: If the surface is not parametric, or is not periodic in the u-direction, this method returns 0.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual double surface::param_period_v (  )  const [virtual, inherited]

Returns the period, in v, of a periodic parametric surface.



Role: If the surface is not parametric or is not periodic in the v-direction, this method returns 0.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPApar_box surface::param_range ( const SPAbox box = *(SPAbox *) NULL_REF  )  const [virtual, inherited]

Returns the principal parameter range of this surface.



Role: A periodic surface is defined for all parameter values in the periodic direction by reducing the given parameter modulo the period into this principal range. For a surface that is open or nonperiodic in the chosen direction, the surface evaluation functions are defined only for the parameter values in the returned range.

If a box is provided, the parameter range returned may be restricted to a portion of the surface that is guaranteed to contain all portions of the surface that lie within the region of interest. If none is provided and the parameter range in some direction is unbounded, then this method returns an empty interval.

Parameters:
box box restricting the result.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPAinterval surface::param_range_u ( const SPAbox box = *(SPAbox *) NULL_REF  )  const [virtual, inherited]

Returns the principal parameter range of a surface in the u-parameter direction.



Role: A periodic surface is defined for all parameter values in the periodic direction by reducing the given parameter modulo the period into this principal range. For a surface that is open or nonperiodic in the chosen direction, the surface evaluation functions are defined only for the parameter values in the returned range.

If a box is provided, the parameter range returned may be restricted to a portion of the surface that is guaranteed to contain all portions of the surface that lie within the region of interest. If none is provided and the parameter range in some direction is unbounded, then this method returns an empty interval.

Parameters:
box box restricting the result.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPAinterval surface::param_range_v ( const SPAbox box = *(SPAbox *) NULL_REF  )  const [virtual, inherited]

Returns the principal parameter range of a surface in the v-parameter direction.



Role: A periodic surface is defined for all parameter values in the periodic direction by reducing the given parameter modulo the period into this principal range. For a surface that is open or nonperiodic in the chosen direction, the surface evaluation functions are defined only for the parameter values in the returned range.

If a box is provided, the parameter range returned may be restricted to a portion of the surface that is guaranteed to contain all portions of the surface that lie within the region of interest. If none is provided and the parameter range in some direction is unbounded, then this method returns an empty interval.

Parameters:
box box restricting the result.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPApar_vec surface::param_unitvec ( const SPAunit_vector dir,
const SPApar_pos pos 
) const [virtual, inherited]

Finds the rate of change in the surface parameter corresponding to a unit velocity in a given object-space direction, at a given position in parameter space.



Parameters:
dir object-space direction for which the result is determined.
pos parameter position at which the result is determined.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::parametric (  )  const [virtual, inherited]

Returns TRUE if this surface is a parametric surface - otherwise returns FALSE.



Role: This result reflects the fundamental nature of the surface and is used by the ACIS kernel to avoid using parameters when they are not necessary. For a surface, the ACIS kernel does not use any of the parameter-based functions, though they are implemented for the sake of those components and applications that prefer parameter-based representations of every surface.

Whether to declare a surface parametric or not depends on the implementation of the point-based evaluations. If the availability of a good approximation to the point's parameter values makes no significant improvement to the speed of these functions, then the surface is nonparametric; otherwise, it is parametric. A plane is an obvious nonparametric surface; a B-spline is a parametric surface.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::periodic_u (  )  const [virtual, inherited]

Determines if this surface is periodic in the u-parameter direction (i.e., if it is smoothly closed, so that faces can run over the seam).

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::periodic_v (  )  const [virtual, inherited]

Determines if this surface is periodic in the v-parameter direction (i.e., if it is smoothly closed, so that faces can run over the seam).

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::planar ( SPAposition pos,
SPAunit_vector normal 
) const [virtual, inherited]

Reports whether this surface is planar.



Parameters:
pos point on the surface.
normal the planar normal.

Reimplemented in plane, and spline.

virtual double surface::point_cross ( const SPAposition pos,
const SPAunit_vector normal,
const SPApar_pos param_guess = *(SPApar_pos *) NULL_REF 
) const [virtual, inherited]

Finds the curvature of a cross-sectional curve of this surface at the given point.



Role: The cross-sectional curve is given by the intersection of the surface with a plane passing through the given point and with the given normal.

Parameters:
pos position on the plane.
normal normal to the plane.
param_guess parameter guess.

Reimplemented in meshsurf, plane, sphere, and spline.

virtual SPAunit_vector surface::point_normal ( const SPAposition pos,
const SPApar_pos param_guess = *(SPApar_pos *) NULL_REF 
) const [pure virtual, inherited]

Finds the normal to this surface at a point on the surface nearest to the given position.



Parameters:
pos the given position.
param_guess parameter guess.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual SPAunit_vector surface::point_outdir ( const SPAposition pos,
const SPApar_pos guess = *(SPApar_pos *) NULL_REF 
) const [virtual, inherited]

Finds the outward direction from this surface at a point nearest the given position.



Role: This method usually returns the normal, but if the nearest point is a singularity (like the apex of a cone), this method still returns an outward direction. The base class definition returns point_normal, which is used by default on simple surfaces.

Parameters:
pos given position.
guess parameter guess.

Reimplemented in cone, meshsurf, spline, and torus.

void surface::point_perp ( const SPAposition pos,
SPAposition foot,
const SPApar_pos param_guess = *(SPApar_pos*)NULL_REF,
SPApar_pos param_actual = *(SPApar_pos*)NULL_REF,
logical  f_weak = FALSE 
) const [inline, inherited]

Finds the point on this surface nearest to the given point.



Role: If the surface is parametric, this method also returns the parameter values at the found point.

Parameters:
pos the input position.
foot the position on the surface.
param_guess parameter guess.
param_actual actual parameter position.
f_weak weak flag - for internal use.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

void surface::point_perp ( const SPAposition pos,
SPAposition foot,
SPAunit_vector normal,
const SPApar_pos param_guess = *(SPApar_pos*)NULL_REF,
SPApar_pos param_actual = *(SPApar_pos*)NULL_REF,
logical  f_weak = FALSE 
) const [inline, inherited]

Finds the point on this surface nearest to the given point and, optionally, the normal to the surface at that point.



Role: If the surface is parametric, this method also returns the parameter values at the found point.

Parameters:
pos the input position.
foot the position on the surface.
normal the returned normal.
param_guess parameter guess.
param_actual actual parameter position.
f_weak weak flag - for internal use.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual void surface::point_perp ( const SPAposition pos,
SPAposition foot,
SPAunit_vector normal,
surf_princurv cur,
const SPApar_pos param_guess = *(SPApar_pos *) NULL_REF,
SPApar_pos param_actual = *(SPApar_pos *) NULL_REF,
logical  f_weak = FALSE 
) const [pure virtual, inherited]

Finds the point on this surface nearest to the given point and, optionally, the normal to and the principal curvatures of the surface at that point.



Role: If the surface is parametric, this method also returns the parameter values at the found point.

Parameters:
pos the input position.
foot the position on the surface.
normal the returned normal.
cur the principal curvature.
param_guess parameter guess.
param_actual actual parameter position.
f_weak weak flag - for internal use.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

surf_princurv surface::point_prin_curv ( const SPAposition pos,
const SPApar_pos guess = *(SPApar_pos *) NULL_REF 
) const [inherited]

Finds the principal axes of curvature of this surface at a given point and the curvatures in those directions, in a structure defined for the purpose.



Parameters:
pos position at which to evaluate the curvature.
guess parameter guess

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual void surface::point_prin_curv ( const SPAposition pos,
SPAunit_vector axis1,
double &  cur1,
SPAunit_vector axis2,
double &  cur2,
const SPApar_pos param_guess = *(SPApar_pos *) NULL_REF 
) const [pure virtual, inherited]

Finds the principal axes of curvature of this surface at a given point, and the curvatures along these axes.



Parameters:
pos position at which to evaluate the curvatures and curvature axes.
axis1 first axis of curvature.
cur1 curvature along the first axis.
axis2 second axis of curvature.
cur2 curvature along the second axis.
param_guess parameter guess.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

void surface::restore_data (  )  [inherited]

Restores the data for this surface from a save file.



Role:

    if (restore_version_number >= BNDSUR_VERSION)
 	     read_interval		subset u interval
 	     read_interval		subset v interval 

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual void surface::save (  )  const [pure virtual, inherited]

Calls the virtual save method for the particular type of this surface.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

void surface::save_data (  )  const [inherited]

Saves the information for this surface to a save file.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

void surface::save_surface (  )  const [inherited]

Saves this surface if the surface is of an unknown type or NULL.



Role: Checks for NULL, then calls the save method.

virtual logical surface::singular_u ( double  uparam  )  const [virtual, inherited]

Determines whether the parameterization of this surface is singular at the specified u-parameter value.



Role: The only singularity recognized is where every value of the nonconstant parameter generates the same object-space point, and these can only occur at the ends of the parameter range.

Parameters:
uparam u-parameter value to test.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::singular_v ( double  vparam  )  const [virtual, inherited]

Determines whether the parameterization of this surface is singular at the specified v-parameter value.



Role: The only singularity recognized is where every value of the nonconstant parameter generates the same object-space point, and these can only occur at the ends of the parameter range.

Parameters:
vparam v-parameter value to test.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual int surface::split_at_kinks_u ( spline **&  pieces,
double  curvature = 0.0 
) const [virtual, inherited]

Divides this surface along u into separate pieces that are smooth (and therefore suitable for offsetting or blending).



Role: The surface is split if the curvature exceeds the minimum curvature argument. If it is closed after this, it is then split into two. The split pieces are stored in the pieces argument. The function returns the count of split pieces. Only implemented for splines and elliptical cones.

Parameters:
pieces the returned split pieces.
curvature the minimum curvature.

Reimplemented in spline.

virtual int surface::split_at_kinks_v ( spline **&  pieces,
double  curvature = 0.0 
) const [virtual, inherited]

Divides this surface along v into separate pieces that are smooth (and therefore suitable for offsetting or blending).



Role: The surface is split if the curvature exceeds the minimum curvature argument. If it is closed after this, it is then split into two. The split pieces are stored in the pieces argument. The function returns the count of split pieces. Only implemented for splines and elliptical cones.

Parameters:
pieces the returned split pieces.
curvature the minimum curvature.

Reimplemented in cone, and spline.

surface* surface::subset ( const SPApar_box box  )  const [inherited]

Constructs a subset copy, within the given parameter box, of this surface.



Parameters:
box parameter box.

Reimplemented in spline.

SPApar_box surface::subset_box (  )  const [inherited]

Returns the subset box of this surface.

surface* surface::subset_u ( const SPAinterval range  )  const [inherited]

Constructs a subset copy, within the given u interval, of this surface.



Parameters:
range u interval.

SPAinterval surface::subset_u_interval (  )  const [inherited]

Returns a subset interval of this surface, in u.

surface* surface::subset_v ( const SPAinterval range  )  const [inherited]

Constructs a subset copy within the given v interval.



Parameters:
range v interval

SPAinterval surface::subset_v_interval (  )  const [inherited]

Returns a subset interval of this surface, in v.

logical surface::subsetted (  )  const [inherited]

Determines whether this surface has a significant subset range.

logical surface::subsetted_u (  )  const [inherited]

Determines whether this surface has a significant subset range in the u direction.

logical surface::subsetted_v (  )  const [inherited]

Determines whether this surface has a significant subset range in the v direction.

surf_normcone::surf_normcone ( const SPAunit_vector ax,
double  ang,
surface_vardir  vdir,
logical  approx_OK,
logical  over 
) [inline, inherited]

Constructs a surf_normcone from the specified parameters.



Parameters:
ax axis direction of the cone.
ang positive half angle.
vdir variation direction.
approx_OK are approximate results OK?
over inside or outside?

surf_princurv::surf_princurv ( const SPAunit_vector d1,
double  c1,
const SPAunit_vector d2,
double  c2 
) [inline, inherited]

Constructs a surf_princurv from two curvatures and two directions.



Parameters:
d1 first direction vector.
c1 first curvature.
d2 second direction vector.
c2 second curvature.

surf_princurv::surf_princurv (  )  [inline, inherited]

Constructs a surf_princurv (default constructor).



Role: Requests memory for this object but does not populate it.

surface::surface (  )  [inherited]

Constructs a surface (default constructor).



Role: Requests memory for this object but does not populate it.

logical surface::test_point ( const SPAposition pos,
const SPApar_pos uv_guess = *(SPApar_pos*)NULL_REF,
SPApar_pos uv_actual = *(SPApar_pos*)NULL_REF 
) const [inline, inherited]

Determines whether a point lies on this surface to the system precision.



Parameters:
pos position to test.
uv_guess parameter guess.
uv_actual actual parameter.

virtual logical surface::test_point_tol ( const SPAposition pos,
double  tol = 0,
const SPApar_pos uv_guess = *(SPApar_pos *) NULL_REF,
SPApar_pos uv_actual = *(SPApar_pos *) NULL_REF 
) const [pure virtual, inherited]

Determines whether a point lies on this surface to the given tolerance.



Parameters:
pos position to test.
tol tolerance to use (defaults to SPAresabs).
uv_guess parameter guess.
uv_actual actual parameter.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual int surface::type (  )  const [pure virtual, inherited]

Returns the type of this surface.

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual const char* surface::type_name (  )  const [pure virtual, inherited]

Returns the string "surface".

Implemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual curve* surface::u_param_line ( double  vparam  )  const [virtual, inherited]

Constructs a parameter line on this surface.



Role: A u-parameter line runs in the direction of increasing u parameter, at constant v. The parameterization in the nonconstant direction matches that of the surface, and it has the range obtained by the use of param_range_u. If the supplied constant parameter value is outside the valid range for the surface, or if it is at a singularity, this method returns NULL.

The new curve is constructed in free storage, so it is the responsibility of the caller to ensure that it is correctly deleted.

Parameters:
vparam v parameter defining the parameter line.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual logical surface::undef (  )  const [virtual, inherited]

Determines whether this surface is defined or undefined.



Role: A NULL or generic surface is always undefined; for other surfaces, it depend on their contents.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

logical surface::undefined (  )  const [inline, inherited]

Determines whether this surface is defined or undefined.



Role: A NULL or generic surface is always undefined; for other surfaces, it depends on their contents.

void surface::unlimit (  )  [inherited]

Removes the subsetting from this surface.

void surface::unlimit_u (  )  [inherited]

Removes the subsetting from this surface, in the u direction.

void surface::unlimit_v (  )  [inherited]

Removes the subsetting from this surface, in the v direction.

surface* surface::unsubset (  )  const [inherited]

Constructs a copy of the unbounded surface underlying this one.

surface* surface::unsubset_u (  )  const [inherited]

Constructs a copy of the unbounded (in u) surface underlying this one.

surface* surface::unsubset_v (  )  const [inherited]

Constructs a copy of the unbounded (in v) surface underlying this one.

virtual curve* surface::v_param_line ( double  uparam  )  const [virtual, inherited]

Constructs a parameter line on the surface.



Role: A v-parameter line runs in the direction of increasing v parameter, at constant u. The parameterization int he nonconstant direction matches that of the surface, and it has the range obtained by the use of param_range_v. If the supplied constant parameter value is outside the valid range for the surface, or if it is at a singularity, this method returns NULL.

The new curve is constructed in free storage, so it is the responsibility of the caller to ensure that it is correctly deleted.

Parameters:
uparam u parameter defining the parameter line.

Reimplemented in cone, meshsurf, plane, sphere, spline, and torus.

virtual surface::~surface (  )  [virtual, inherited]

C++ destructor, deleting a surface.


Variable Documentation

double surf_normcone::angle [inherited]

Positive half angle defining the bounding cone.

logical surf_normcone::approx [inherited]

Is TRUE if this is only an approximation to the best cone available.

double surf_princurv::curv1 [inherited]

The first curvature.

double surf_princurv::curv2 [inherited]

The second curvature.

The second direction vector.

logical surf_normcone::oversize [inherited]

If approx is TRUE, this flag is TRUE if this cone is entirely outside the best available cone and FALSE if it is inside.

surface_vardir surf_normcone::vardir [inherited]

Classifies whether the normal direction varies more in the u-parameter direction, more in the v-parameter direction, or in neither.



Role: This item is to be used only as a hint.