Home

sum_spl_sur Class Reference
[surfaces]

Represents a surface built by the linear summation of two curves. More...

#include <sum_spl.hxx>

Inheritance diagram for sum_spl_sur:

Inheritance graph
[legend]
Collaboration diagram for sum_spl_sur:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void add_ref ()
 Uses count manipulation.
void clear_trans ()
 Clears any references to this object using transformation lists, before incompatible changes.
logical closed_u () const
 Determines if the surface is closed, smoothly or not, in the u-parameter direction.
logical closed_v () const
 Determines if the surface is closed, smoothly or not, in the v-parameter direction.
virtual spl_surdeep_copy (pointer_map *pm=NULL) const
 Creates a copy of an item that does not share any data with the original.
virtual SPAposition eval_position (SPApar_pos const &parameter) const
 Finds the point on the spline with the given parameter value.
double fitol () const
 Returns the fit tolerance for the approximating bs3_surface.
subtrans_objectget_next () const
 Returns the next object in the list.
virtual curveget_path () const
 Returns the sweep path curve.
virtual sweep_path_type get_path_type () const
 Returns the sweep path type.
virtual curveget_profile (double param) const
 Returns the sweep profile on the sum_spl_sur, which is the u-curve.
virtual lawget_rail () const
 Returns the rail law for the sum_spl_sur.
void invalidate_cache ()
 Method to be called by any user who modifies the surface in an external process, to ensure that stale evaluation results are discarded.
virtual logical is_extendable (sum_spl_sur const &other, SPApar_box &new_domain) const
 Returns whether or not the sum_spl_sur can be extended to the point where it can include the given sum_spl_sur.
logical iterate_perp (SPAposition const &pos, SPAposition &surf, SPAunit_vector &normal, surf_princurv &curv, SPApar_pos const &guess, SPApar_pos &actual, logical pt) const
 Support function for point_perp (and bs3_surface_perp).
subtrans_objectmake_trans (SPAtransf const &trans)
 Transforms the subtrans_object on an external level.
logical mult_ref () const
 Returns TRUE if there is more than one reference - else, it returns FALSE.
logical operator!= (subtype_object const &rhs) const
 TRUE if two subtype objects are not the same.
double param_period_u () const
 Returns the u period of a periodic parametric surface, zero if the surface is not periodic in the u direction.
double param_period_v () const
 Returns the v period of a periodic parametric surface, zero if the surface is not periodic in the v direction.
SPApar_box param_range (SPAbox const &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of a parametric surface in both u and v-parameter directions.
SPAinterval param_range_u (SPAbox const &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of a parametric surface in the u-parameter direction.
SPAinterval param_range_v (SPAbox const &box=*(SPAbox *) NULL_REF) const
 Returns the principal parameter range of a parametric surface in the v-parameter direction.
logical periodic_u () const
 Determines if a parametric surface is periodic in the u direction.
logical periodic_v () const
 Determines if a parametric surface is periodic in the v direction.
int ref_count ()
 Returns the use count.
void remove_ref ()
 Removes a reference.
virtual void save () const
 Saves a subtype object with identifier and brackets, and enters it in the current tag table.
virtual void save_data () const
 Save the information for the sum_spl_sur to a save file.
void set_next (subtrans_object *obj)
 Sets the next object in the list.
logical singular_u (double uparam) const
 Reports whether the surface parameterization is singular at the specified u-parameter value.
logical singular_v (double vparam) const
 Reports whether the surface parameterization is singular at the specified v-parameter value.
 sum_spl_sur (const sum_spl_sur &cur)
 C++ copy constructor requests memory for this object and populates it with the data from the object supplied as an argument.
 sum_spl_sur (curve const &cur1, curve const &cur2, SPAinterval const &range1=*(const class SPAinterval *) NULL_REF, SPAinterval const &range2=*(const class SPAinterval *) NULL_REF, SPAposition const &pos=*(const class SPAposition *) NULL_REF)
 C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
bs3_surface sur () const
 Returns the bs3_surface approximation.
virtual int type () const
 Returns the type of sum_spl_sur.
virtual char const * type_name () const
 Returns the string "sumsur".
virtual logical unknown_type () const
 Returns TRUE if this object type is unknown to the system - else, it returns FALSE.

Static Public Member Functions

static int id ()
 Returns the ID for the sum_spl_sur list.

Protected Member Functions

virtual SPAbox bound (SPApar_box const &=*(SPApar_box *) NULL_REF)
 Returns the object-space bounding box for a subset of the surface.
virtual void make_approx (double fit, const spline &spl=*(spline *) NULL_REF, logical force=FALSE) const
 Makes or remakes the approximating surface.

Private Member Functions

virtual int accurate_derivs (SPApar_box const &=*(SPApar_box *) NULL_REF) const
 Returns the number of derivatives.
virtual void calculate_disc_info ()
 Calculates the discontinuity information from the defining curves.
virtual check_status_listcheck (const check_fix &input=*(const check_fix *) NULL_REF, check_fix &result=*(check_fix *) NULL_REF, const check_status_list *=(const check_status_list *) NULL_REF)
 Check for any data errors in the surface, and correct the errors if possible.
virtual subtrans_objectcopy () const
 Duplication.
virtual void debug (char const *, logical, FILE *) const
 Writes the subtype_object in readable form for debugging.
virtual void eval (SPApar_pos const &uv, SPAposition &pos, SPAvector *dpos, SPAvector *ddpos) const
 Finds the position and first and second derivatives of the surface at a given point.
virtual void eval_prin_curv (SPApar_pos const &, SPAunit_vector &, double &, SPAunit_vector &, double &, evaluate_surface_quadrant=evaluate_surface_unknown) const
 Find the principal axes of curvature of the surface at a point with given SPAparameter values, and the curvatures in those directions.
virtual int evaluate (SPApar_pos const &, SPAposition &, SPAvector **=NULL, int=0, evaluate_surface_quadrant=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 evaluate_iter (SPApar_pos const &, surface_evaldata *, SPAposition &, SPAvector **=NULL, int=0, evaluate_surface_quadrant=evaluate_surface_unknown) const
 Calculates derivatives, of any order up to the number requested, and stores them in vectors provided by the user.
virtual surface_evaldata * make_evaldata () const
 Construct a data object to retain evaluation information across calls to evaluate_iter().
virtual void operator*= (SPAtransf const &)
 Transformation.
logical operator== (subtype_object const &) const
 Test for equality.
logical operator>> (subtype_object const &) const
 Is this surface contained.
virtual SPApar_pos param (SPAposition const &, SPApar_pos const &=*(SPApar_pos *) NULL_REF) const
 Finds the parameter values of a point on the surface.
int split_at_kinks (spl_sur **&pieces, logical udir, double curvature=0.0) const
 Divide a surface into separate pieces which are smooth (and therefore suitable for offsetting or blending).
virtual void split_u (double, spl_sur *[2])
 Divide a surface into two pieces at a given u parameter.
virtual void split_v (double, spl_sur *[2])
 Divide a surface into two pieces at a given v parameter.
 sum_spl_sur ()
 Default C constructor.
virtual curveu_param_line (double, spline const &) const
 Constructs a parameter line on the surface.
virtual curvev_param_line (double, spline const &) const
 Constructs a parameter line on the surface.
virtual ~sum_spl_sur ()
 C Destructor.

Private Attributes

curvecur1
 curves to be summed.
curvecur2
 curves to be summed.
SPAposition datum
 Datum SPAposition subtracted from the sum of the curves to give a SPAposition for the surface.


Detailed Description

Represents a surface built by the linear summation of two curves.


Role: This class represents a surface that is a linear sum of two curves. This is derived from the class spl_sur, which is used by the spline surface class to contain the surface descriptions. The surface is defined primarily by two curves that are assumed not parallel, and the parameter ranges over which the surface is defined.

Parametric Representation

If the curves are represented as:

 x = c1(t) and y = c2(t)
 
The surface is defined as:
 S(u, v) = c1(u) + c2(v) - p
 
where p is a constant position, normally initialized to be the value of >c2(vo)(at the start of the parameter range).
See also:
curve, SPAposition

Constructor & Destructor Documentation

sum_spl_sur::sum_spl_sur ( curve const &  cur1,
curve const &  cur2,
SPAinterval const &  range1 = *(const class SPAinterval *) NULL_REF,
SPAinterval const &  range2 = *(const class SPAinterval *) NULL_REF,
SPAposition const &  pos = *(const class SPAposition *) NULL_REF 
)

C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.



Role: The u-parameter range defaults to the full first curve and the v-parameter range defaults to the full second curve. If either curve is unbounded, this constructor returns an error. The datum position is subtracted from the sum of the curves to give a position for the surface and is normally initialized to be the start of cur2.

Parameters:
cur1 1st curve.
cur2 2nd curve.
range1 1st curve param range (u curve).
range2 2nd curve param range (v curve).
pos datum position.

sum_spl_sur::sum_spl_sur ( const sum_spl_sur cur  ) 

C++ copy constructor requests memory for this object and populates it with the data from the object supplied as an argument.



Parameters:
cur input curve.

sum_spl_sur::sum_spl_sur (  )  [private]

Default C constructor.

Generally null object, preparatory to filling it in.

virtual sum_spl_sur::~sum_spl_sur (  )  [private, virtual]

C Destructor.

Destroys the curves. The parent destructor handles the spline approximation.


Member Function Documentation

virtual int sum_spl_sur::accurate_derivs ( SPApar_box const &  = *(SPApar_box *) NULL_REF  )  const [private, virtual]

Returns the number of derivatives.



Role: Returns the number of derivatives which evaluate() can find "accurately" (and fairly 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, which is large enough to be more than anyone could reasonably want.

Reimplemented from spl_sur.

void subtype_object::add_ref (  )  [inherited]

Uses count manipulation.

virtual SPAbox sum_spl_sur::bound ( SPApar_box const &  = *(SPApar_box *) NULL_REF  )  [protected, virtual]

Returns the object-space bounding box for a subset of the surface.



Role: The default version uses the object-space spline, expanding its box by the fit tolerance. Note that this cannot be const, as it uses subset(), which is itself not const.

Reimplemented from spl_sur.

virtual void sum_spl_sur::calculate_disc_info (  )  [private, virtual]

Calculates the discontinuity information from the defining curves.

Reimplemented from spl_sur.

virtual check_status_list* sum_spl_sur::check ( const check_fix &  input = *(const check_fix *) NULL_REF,
check_fix &  result = *(check_fix *) NULL_REF,
const check_status_list = (const check_status_list *) NULL_REF 
) [private, virtual]

Check for any data errors in the surface, and correct 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. See chk_stat.hxx for information on the argument types used here. At the moment we only fix non-G1 discontinuities by fixing them on the defining curves.

Reimplemented from spl_sur.

void subtrans_object::clear_trans (  )  [inherited]

Clears any references to this object using transformation lists, before incompatible changes.

logical spl_sur::closed_u (  )  const [inline, inherited]

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

logical spl_sur::closed_v (  )  const [inline, inherited]

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

virtual subtrans_object* sum_spl_sur::copy (  )  const [private, virtual]

Duplication.

Can't be done by constructor, as we want it to be virtual.

Implements spl_sur.

virtual void sum_spl_sur::debug ( char const *  leader,
logical  output,
FILE *  fp 
) const [private, virtual]

Writes the subtype_object in readable form for debugging.



Role: If logical is TRUE, brief output is produced; if logical is FALSE, long output is produced.

Parameters:
leader leader for second and subsequent lines of output.
output TRUE for brief output, FALSE for full output.
fp file name.

Implements spl_sur.

virtual spl_sur* sum_spl_sur::deep_copy ( pointer_map pm = NULL  )  const [virtual]

Creates a copy of an item 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.

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

Implements spl_sur.

virtual void sum_spl_sur::eval ( SPApar_pos const &  uv,
SPAposition pos,
SPAvector dpos,
SPAvector ddpos 
) const [private, virtual]

Finds the position and first and second derivatives of the surface at a given point.

Reimplemented from spl_sur.

virtual SPAposition spl_sur::eval_position ( SPApar_pos const &  parameter  )  const [virtual, inherited]

Finds the point on the spline with the given parameter value.



Parameters:
parameter given parameter.

virtual void sum_spl_sur::eval_prin_curv ( SPApar_pos const &  ,
SPAunit_vector ,
double &  ,
SPAunit_vector ,
double &  ,
evaluate_surface_quadrant  = evaluate_surface_unknown 
) const [private, virtual]

Find the principal axes of curvature of the surface at a point with given SPAparameter values, and the curvatures in those directions.

Reimplemented from spl_sur.

virtual int sum_spl_sur::evaluate ( SPApar_pos const &  ,
SPAposition ,
SPAvector **  = NULL,
int  = 0,
evaluate_surface_quadrant  = evaluate_surface_unknown 
) const [private, virtual]

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



Role: It returns the number it was able to calculate; this will be equal to the number requested in all but the most exceptional circumstances. A certain number will be evaluated directly and (more or less) accurately; higher derivatives will be automatically calculated by finite differencing; the accuracy of these decreases with the order of the derivative, as the cost increases.

Reimplemented from spl_sur.

virtual int sum_spl_sur::evaluate_iter ( SPApar_pos const &  ,
surface_evaldata *  ,
SPAposition ,
SPAvector **  = NULL,
int  = 0,
evaluate_surface_quadrant  = evaluate_surface_unknown 
) const [private, virtual]

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



Role: It returns the number it was able to calculate; this will be equal to the number requested in all but the most exceptional circumstances. A certain number will be evaluated directly and (more or less) accurately; higher derivatives will be automatically calculated by finite differencing; the accuracy of these decreases with the order of the derivative, as the cost increases.

Reimplemented from spl_sur.

double spl_sur::fitol (  )  const [inline, inherited]

Returns the fit tolerance for the approximating bs3_surface.

subtrans_object* subtrans_object::get_next (  )  const [inline, inherited]

Returns the next object in the list.

virtual curve* sum_spl_sur::get_path (  )  const [virtual]

Returns the sweep path curve.

Reimplemented from spl_sur.

virtual sweep_path_type sum_spl_sur::get_path_type (  )  const [virtual]

Returns the sweep path type.

Reimplemented from spl_sur.

virtual curve* sum_spl_sur::get_profile ( double  param  )  const [virtual]

Returns the sweep profile on the sum_spl_sur, which is the u-curve.



Parameters:
param param.

Reimplemented from spl_sur.

virtual law* sum_spl_sur::get_rail (  )  const [virtual]

Returns the rail law for the sum_spl_sur.



See also:
sweep_options::set_rail_law

Reimplemented from spl_sur.

static int sum_spl_sur::id (  )  [static]

Returns the ID for the sum_spl_sur list.

void spl_sur::invalidate_cache (  )  [inherited]

Method to be called by any user who modifies the surface in an external process, to ensure that stale evaluation results are discarded.

virtual logical sum_spl_sur::is_extendable ( sum_spl_sur const &  other,
SPApar_box new_domain 
) const [virtual]

Returns whether or not the sum_spl_sur can be extended to the point where it can include the given sum_spl_sur.



Role: Returns whether or not the sum_spl_sur can be extended to the point where it can include the given sum_spl_sur. It also returns what the new domain of the "this" surface should be to include the other surface. This method returns false in any case that is not covered.

Parameters:
other other surface.
new_domain new domain.

logical spl_sur::iterate_perp ( SPAposition const &  pos,
SPAposition surf,
SPAunit_vector normal,
surf_princurv curv,
SPApar_pos const &  guess,
SPApar_pos actual,
logical  pt 
) const [inherited]

Support function for point_perp (and bs3_surface_perp).



Role: This method finds a true perpendicular given an initial parameter guess, and avoiding oscillations. It may be set to iterate to the nearest perpendicular of any sort (minimum or maximum distance, or inflexion), or to find only minima (which is sometimes more reliable when there are inflexions), and it returns a success or failure indication.

Parameters:
pos given position.
surf position on surface.
normal normal to surface.
curv principal curvature.
guess guess parameter.
actual actual parameter.
pt TRUE to iterate to a (local) near-point rather than any perpendicular..

virtual void sum_spl_sur::make_approx ( double  fit,
const spline spl = *(spline *) NULL_REF,
logical  force = FALSE 
) const [protected, virtual]

Makes or remakes the approximating surface.



Role: The force flag forces the approximating surface to be made even if it is illegal. This can be used to restore old parts that were not checked properly before being saved. The spline argument 'spl' may be null but if it is supplied the function may be a little faster. The function stores the approximating surface and the actual fit error that was achieved in the spl_sur, overriding the declared const-ness of the function to do this.

Reimplemented from spl_sur.

virtual surface_evaldata* sum_spl_sur::make_evaldata (  )  const [private, virtual]

Construct 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 surface information itself.

Reimplemented from spl_sur.

subtrans_object* subtrans_object::make_trans ( SPAtransf const &  trans  )  [inherited]

Transforms the subtrans_object on an external level.



Role: This method searches the transform list to find a match. It returns the corresponding transformed object if it is found; otherwise, it constructs a new transformed object, enters it into the transformation list for future reference, and returns the new object. If this object is only singly-referenced and has no transformed counterpart, then it transforms directly without copying, and "this" returns.

Parameters:
trans transformation.

logical subtype_object::mult_ref (  )  const [inline, inherited]

Returns TRUE if there is more than one reference - else, it returns FALSE.

logical subtype_object::operator!= ( subtype_object const &  rhs  )  const [inline, inherited]

TRUE if two subtype objects are not the same.



Role: Use this method for sharing on restoration of old save files.

Parameters:
rhs subtype-object.

virtual void sum_spl_sur::operator*= ( SPAtransf const &   )  [private, virtual]

Transformation.

The base class transforms the spline and fit tolerance: we must handle the curve and sweep SPAvector.

Reimplemented from spl_sur.

logical sum_spl_sur::operator== ( subtype_object const &   )  const [private, virtual]

Test for equality.

This does not guarantee that all effectively equal surfaces are determined to be equal, but does guarantee that different surfaces are correctly identified as such.

Reimplemented from spl_sur.

logical sum_spl_sur::operator>> ( subtype_object const &   )  const [private, virtual]

Is this surface contained.

Reimplemented from spl_sur.

virtual SPApar_pos sum_spl_sur::param ( SPAposition const &  ,
SPApar_pos const &  = *(SPApar_pos *) NULL_REF 
) const [private, virtual]

Finds the parameter values of a point on the surface.

Implements spl_sur.

double spl_sur::param_period_u (  )  const [inline, inherited]

Returns the u period of a periodic parametric surface, zero if the surface is not periodic in the u direction.

double spl_sur::param_period_v (  )  const [inline, inherited]

Returns the v period of a periodic parametric surface, zero if the surface is not periodic in the v direction.

SPApar_box spl_sur::param_range ( SPAbox const &  box = *(SPAbox *)NULL_REF  )  const [inline, inherited]

Returns the principal parameter range of a parametric surface in both u and v-parameter directions.



Role: For a nonparametric surface, the range is returned as the empty interval or box.

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 open or nonperiodic in the chosen direction the surface evaluation functions are defined only for parameter values in the returned range.

If a box is provided, the parameter range returned may be restricted to a portion of the surface which 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 conventionally an empty interval is returned.

Parameters:
box object space box.

SPAinterval spl_sur::param_range_u ( SPAbox const &  box = *(SPAbox *)NULL_REF  )  const [inline, inherited]

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



Role: For a nonparametric surface, the range is returned as the empty interval or box. 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 open or nonperiodic in the chosen direction the surface evaluation functions are defined only for parameter values in the returned range.

Parameters:
box object space box.

SPAinterval spl_sur::param_range_v ( SPAbox const &  box = *(SPAbox *)NULL_REF  )  const [inline, inherited]

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



Role: For a nonparametric surface, the range is returned as the empty interval or box. 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 open or nonperiodic in the chosen direction the surface evaluation functions are defined only for parameter values in the returned range.

Parameters:
box object space box.

logical spl_sur::periodic_u (  )  const [inline, inherited]

Determines if a parametric surface is periodic in the u direction.



Role: Determines if a parametric surface is periodic in the u direction. (i.e. it is smoothly closed, so faces can run over the seam).

logical spl_sur::periodic_v (  )  const [inline, inherited]

Determines if a parametric surface is periodic in the v direction.



Role: Determines if a parametric surface is periodic in the v direction. (i.e. it is smoothly closed, so faces can run over the seam).

int subtype_object::ref_count (  )  [inline, inherited]

Returns the use count.

void subtype_object::remove_ref (  )  [inherited]

Removes a reference.

virtual void subtype_object::save (  )  const [virtual, inherited]

Saves a subtype object with identifier and brackets, and enters it in the current tag table.



Role: If it is already there, just puts out a reference.

Reimplemented in blend_spl_sur, rb_blend_spl_sur, skin_spl_sur, sub_spl_sur, and sweep_spl_sur.

virtual void sum_spl_sur::save_data (  )  const [virtual]

Save the information for the sum_spl_sur to a save file.

Reimplemented from spl_sur.

void subtrans_object::set_next ( subtrans_object obj  )  [inherited]

Sets the next object in the list.



Parameters:
obj object.

logical spl_sur::singular_u ( double  uparam  )  const [inherited]

Reports whether the surface parameterization 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 as returned by the functions above. A plane is nonsingular in both directions.

Parameters:
uparam constant u parameter.

logical spl_sur::singular_v ( double  vparam  )  const [inherited]

Reports whether the surface parameterization 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 as returned by the functions above. A plane is nonsingular in both directions.

Parameters:
vparam constant v parameter.

int sum_spl_sur::split_at_kinks ( spl_sur **&  pieces,
logical  udir,
double  curvature = 0.0 
) const [private, virtual]

Divide a surface into separate pieces which are smooth (and therefore suitable for offsetting or blending).



Role: The surface is split at its non-G1 discontinuities, and if it is closed after this, it is then split into two. The functions return the number of pieces, and the pieces themselves are a return argument.

Reimplemented from spl_sur.

virtual void sum_spl_sur::split_u ( double  ,
spl_sur [2] 
) [private, virtual]

Divide a surface into two pieces at a given u parameter.



Role: If the split is at the end of the parameter range, the spl_sur is just returned as the appropriate half (in increasing parameter order), and the other is NULL. Otherwise a new spl_sur is used for one part, and the old one is modified for the other.

Implements spl_sur.

virtual void sum_spl_sur::split_v ( double  ,
spl_sur [2] 
) [private, virtual]

Divide a surface into two pieces at a given v parameter.



Role: If the split is at the end of the parameter range, the spl_sur is just returned as the appropriate half (in increasing parameter order), and the other is NULL. Otherwise a new spl_sur is used for one part, and the old one is modified for the other.

Implements spl_sur.

bs3_surface spl_sur::sur (  )  const [inline, inherited]

Returns the bs3_surface approximation.

virtual int sum_spl_sur::type (  )  const [virtual]

Returns the type of sum_spl_sur.

Implements subtype_object.

virtual char const* sum_spl_sur::type_name (  )  const [virtual]

Returns the string "sumsur".

Implements spl_sur.

virtual curve* sum_spl_sur::u_param_line ( double  ,
spline const &   
) const [private, virtual]

Constructs a parameter line on the surface.

A u parameter line runs in the direction of increasing u parameter, at constant v.

Role: The parametrisation in the non-constant direction matches that of the surface, and has the range obtained by use of param_range_u() or param_range_v() appropriately. The new curve is constructed in free store, so it is the responsibility of the caller to ensure that it is correctly deleted.

Reimplemented from spl_sur.

virtual logical subtype_object::unknown_type (  )  const [virtual, inherited]

Returns TRUE if this object type is unknown to the system - else, it returns FALSE.



Role: This method returns FALSE as the default, so except for the system unknown subtype, the method should be omitted from derived class definitions.

virtual curve* sum_spl_sur::v_param_line ( double  ,
spline const &   
) const [private, virtual]

Constructs a parameter line on the surface.



Role: A v parameter line runs in the direction of increasing v parameter, at constant u. The parametrisation in the non-constant direction matches that of the surface, and has the range obtained by use of param_range_u() or param_range_v() appropriately. The new curve is constructed in free store, so it is the responsibility of the caller to ensure that it is correctly deleted.

Reimplemented from spl_sur.


Member Data Documentation

curves to be summed.

u direction

curves to be summed.

v direction

Datum SPAposition subtracted from the sum of the curves to give a SPAposition for the surface.

Normally initialised to be the start of cur2.