Purpose:
|
Represents a linear sum of two curves.
|
|
Derivation:
|
sum_spl_sur : spl_sur : subtrans_object : subtype_object : ACIS_OBJECT : -
|
|
SAT Identifier:
|
"sumsur"
|
|
Filename:
|
kern/kernel/kerngeom/splsur/sum_spl.hxx
|
|
Description:
|
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 x = c2(t)
|
|
|
the surface is:
|
|
|
x = s(u, v) = c1(u) + c2(v) - p
|
|
|
where
p is a constant position, normally initialized to be the value of
c2 at the start of the parameter range.
|
|
References:
|
KERN
|
curve
|
|
BASE
|
SPAposition
|
|
Constructor:
|
public: sum_spl_sur::sum_spl_sur
(
|
|
|
const sum_spl_sur&
|
// input curve
|
|
|
);
|
|
|
C++ copy constructor requests memory for this object and populates it with the data from the object supplied as an argument.
|
|
|
|
|
|
|
public: sum_spl_sur::sum_spl_sur
(
|
|
|
curve const&,
|
|
|
// 1st curve
|
|
|
curve const&,
|
|
|
// 2nd curve
|
|
|
SPAinterval const&
|
|
|
// 1st curve
|
|
|
|
= * (SPAinterval* ) NULL_REF,// param range
|
|
|
|
|
|
|
// (u-param)
|
|
|
SPAinterval const&
|
|
|
// 2nd curve
|
|
|
|
= * (SPAinterval* ) NULL_REF,// param range
|
|
|
|
|
|
|
// (v-param)
|
|
|
SPAposition const&
|
|
|
// datum position
|
|
|
|
= * (SPAposition* ) NULL_REF
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
|
|
|
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.
|
|
|
|
Methods:
|
protected: virtual SPAbox sum_spl_sur::bound
(
|
|
|
SPApar_box const&
|
|
// parameter box of
|
|
|
|
= * (SPApar_box* )NULL_REF// defining curves
|
|
|
);
|
|
|
Returns a bounding box by boxing the defining curves and combining them.
|
|
|
|
|
|
|
public: virtual spl_sur* sum_spl_sur::deep_copy
(
|
|
|
pointer_map* pm
|
// list of items within
|
|
|
|
= NULL
|
// the entity that are
|
|
|
|
|
// already deep copied
|
|
|
) const;
|
|
|
Creates a copy of an item that does not share any data with the original. Allocates new storage for all member data and any pointers. Returns a pointer to the copied item.
|
|
|
|
|
|
|
public: virtual curve*
|
|
|
sum_spl_sur::get_path () const;
|
|
|
Returns the sweep path curve.
|
|
|
|
|
|
|
public: virtual sweep_path_type
|
|
|
sum_spl_sur::get_path_type () const;
|
|
|
Returns the sweep path type
|
|
|
|
|
|
|
public: virtual curve*
|
|
|
sum_spl_sur::get_profile (
|
|
|
double
|
// param
|
|
) const;
|
|
|
Returns the sweep profile on the
sum_spl_sur, which is the
u-curve.
|
|
|
|
|
|
|
public: virtual law*
|
|
|
sum_spl_sur::get_rail () const;
|
|
|
Returns the rail law for the
sum_spl_sur.
|
|
|
|
|
|
|
public: static int sum_spl_sur::id
();
|
|
|
Returns the ID for the
sum_spl_sur list.
|
|
|
|
|
|
|
public: virtual logical sum_spl_sur::is_extendable
(
|
|
|
sum_spl_sur const& other,
|
// other surface
|
|
|
SPApar_box& new_domain
|
|
// new domain
|
|
|
) const;;
|
|
|
This method will return true if the
sum_spl_sur can be extended to 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.
|
|
|
|
|
|
|
protected: virtual void sum_spl_sur::make_approx
(
|
|
|
double fit,
|
// fit tolerance
|
|
|
const spline& spl
|
// pointer to output
|
|
|
|
= * (spline*) NULL_REF,// spline approx.
|
|
|
logical force
|
// flag for forcing
|
|
|
|
= FALSE
|
|
|
) const;
|
|
|
Makes or remakes an approximation of the surface, within the given tolerance.
|
|
|
|
|
|
|
private: void sum_spl_sur::restore_data ();
|
|
|
Restores the information for the
sum_spl_sur from a save file.
|
|
|
restore_curve
|
u-curve
|
|
restore_curve
|
v-curve
|
|
read_position
|
Datum point
|
|
if ( restore_version_number < APPROX_SUMMARY_VERSION )
|
|
read_interval
|
u-range
|
|
read_interval
|
v-range
|
|
if ( restore_version_number >= DISCONTINUITY_VERSION )
|
|
|
discontinuity_info::restore
|
u discontinuities
|
|
|
discontinuity_info::restore
|
v discontinuities
|
|
else
|
|
spl_sur::restore_common_data
|
restore the generic surface data
|
|
|
|
|
|
|
public: virtual void sum_spl_sur::save_data
() const;
|
|
|
Save the information for the
sum_spl_sur to a save file.
|
|
|
|
|
|
|
public: virtual int sum_spl_sur::type
() const;
|
|
|
Returns the type of
sum_spl_sur.
|
|
|
|
|
|
|
public: virtual char const*
|
|
|
sum_spl_sur::type_name () const;
|
|
|
Returns the string "sumsur".
|
|
Internal Use:
|
full_size
|
|
|
|
|
Related Fncs:
|
restore_sum_spl_sur
|