#include <sum_spl.hxx>


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_sur * | deep_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 ¶meter) 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_object * | get_next () const |
| Returns the next object in the list. | |
| virtual curve * | get_path () const |
| Returns the sweep path curve. | |
| virtual sweep_path_type | get_path_type () const |
| Returns the sweep path type. | |
| virtual curve * | get_profile (double param) const |
Returns the sweep profile on the sum_spl_sur, which is the u-curve. | |
| virtual law * | get_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_object * | make_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_list * | 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) |
| Check for any data errors in the surface, and correct the errors if possible. | |
| virtual subtrans_object * | copy () 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 curve * | u_param_line (double, spline const &) const |
| Constructs a parameter line on the surface. | |
| virtual curve * | v_param_line (double, spline const &) const |
| Constructs a parameter line on the surface. | |
| virtual | ~sum_spl_sur () |
| C Destructor. | |
Private Attributes | |
| curve * | cur1 |
| curves to be summed. | |
| curve * | cur2 |
| curves to be summed. | |
| SPAposition | datum |
| Datum SPAposition subtracted from the sum of the curves to give a SPAposition for the surface. | |
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) - pwhere p is a constant position, normally initialized to be the value of >c2(vo)(at the start of the parameter range).
| 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.
| 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.
| 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.
| 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] |
| virtual void sum_spl_sur::calculate_disc_info | ( | ) | [private, virtual] |
| 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] |
| 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.
| 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.
| 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] |
| virtual SPAposition spl_sur::eval_position | ( | SPApar_pos const & | parameter | ) | const [virtual, inherited] |
Finds the point on the spline with the given parameter value.
| 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] |
| virtual sweep_path_type sum_spl_sur::get_path_type | ( | ) | const [virtual] |
| 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.
| param | param. |
Reimplemented from spl_sur.
| virtual law* sum_spl_sur::get_rail | ( | ) | const [virtual] |
Returns the rail law for the sum_spl_sur.
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.
| 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.
| 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.
| 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.
| rhs | subtype-object. |
| virtual void sum_spl_sur::operator*= | ( | SPAtransf const & | ) | [private, virtual] |
| 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] |
| virtual SPApar_pos sum_spl_sur::param | ( | SPAposition const & | , | |
| SPApar_pos const & | = *(SPApar_pos *) NULL_REF | |||
| ) | const [private, virtual] |
| double spl_sur::param_period_u | ( | ) | const [inline, inherited] |
| double spl_sur::param_period_v | ( | ) | const [inline, inherited] |
| 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.
| 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.
| 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.
| box | object space box. |
| logical spl_sur::periodic_u | ( | ) | const [inline, inherited] |
| logical spl_sur::periodic_v | ( | ) | const [inline, inherited] |
| 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] |
| void subtrans_object::set_next | ( | subtrans_object * | obj | ) | [inherited] |
Sets the next object in the list.
| 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.
| 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.
| 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] |
| virtual char const* sum_spl_sur::type_name | ( | ) | const [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.
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.
curve* sum_spl_sur::cur1 [private] |
curves to be summed.
u direction
curve* sum_spl_sur::cur2 [private] |
curves to be summed.
v direction
SPAposition sum_spl_sur::datum [private] |
Datum SPAposition subtracted from the sum of the curves to give a SPAposition for the surface.
Normally initialised to be the start of cur2.