var_rad_functional
List of: Classes
Subjects: Blending, SAT Save and Restore
Contents: Kernel

Purpose: Defines a functional form of a variable radius function.

Derivation: var_rad_functional : var_radius : ACIS_OBJECT : -

SAT Identifier: "functional"

Filename: kern/kernel/sg_husk/vrbln/var_rad.hxx

Description: This class defines a variable radius function that is specified by a given function, which is represented by a bs2_curve.

Constructor: public: var_rad_functional::var_rad_functional (


bs2_curve radius_fcn // bs2 curve for radius



= NULL


);


C++ constructor, creating a var_rad_functional using the specified parameters.


When a bs2_curve passes into a var_rad_functional constructor, the constructors do not make a copy of the curve. The bs2_curve becomes the exclusive property of the var_rad_functional object, and it is deleted by the var_rad_functional destructors. If the caller wants to keep a bs2 radius function after calling the constructor, the caller must make a copy; e.g. using:


rad = var_rad_functional(FUNCTIONAL,



bs2_curve_copy(fcn)))






public: var_rad_functional::var_rad_functional (


var_rad_functional const& old // old


);


C++ constructor, creating a var_rad_functional by copying one.




Destructor: public: virtual


var_rad_functional::~var_rad_functional ();


C++ destructor, deleting a var_rad_functional.



Methods: public: virtual void var_rad_functional::append (


var_radius& // variable radius


);


Appends the given var_radius.






public: virtual void


var_rad_functional::calibrate_radius (


double t0, // first calibration


double t1 // second calibration


);


The radius function extends the entire length of a subsequence of blends, i.e., a smooth sequence of variable radius blends with no constant blends. Every blend in the subsequence gets the same radius function, and extend_def and extend_rad are no longer called at all. The given start and end parameters are the extreme values at the ends of the subsequence. We don't reparam the radius function, however, because we don't want to shift all of the interior knot values. We just want to adjust the start and end values.






public: virtual var_radius*


var_rad_functional::copy (


void // pointer to data


) const;


Copies a var_rad_functional.






public: virtual void var_rad_functional::debug (


const char* leader, // leader string


FILE* fp // pointer



= debug_file_ptr


) const;


Outputs a title line and information about var_rad_functional to the debug file or to the specified file.






public: virtual double


var_rad_functional::end_deriv1 () const;


Returns the first derivative at the end parameter.






public: virtual double


var_rad_functional::end_radius () const;


Returns the radius at the end parameter.






public: virtual void var_rad_functional::eval (


double v_param, // point


double* val // variable radius



= NULL,


double* der1 // first derivative



= NULL,


double* der2 // second derivative



= NULL,


double* der3 // third derivative



= NULL


) const;


Evaluate a variable radius at a given parameter value.






public: virtual int


var_rad_functional::form () const;


Returns the formFUNCTIONAL.






public: virtual logical


var_rad_functional::implicit_var_radius () const;


Returns FALSE for a var_rad functional.






public: virtual logical


var_rad_functional:: is_constant (


double* const_rad_value // tolerance


) const;


Determines whether the input is constant.






public: virtual logical var_rad_functional::is_zero (


double eps // zero tolerance


) const;


Returns TRUE if a radius function is zero everywhere, to within a given tolerance; otherwise, it returns FALSE.






public: virtual bs2_curve


var_rad_functional::make_bs2 () const;


Returns a bs2_curve representation of this radius function.






public: virtual void var_rad_functional::negate ();


Reverses a functional variable radius, front to back.






public: virtual logical


var_rad_functional::operator!= (


var_radius const& other // variable radius


) const;


Determines whether a var_rad_functional and a var_radius are not equal.






public: virtual void var_rad_functional::operator*= (


SPAtransf const& // transformation


);


Transforms the var_rad_functional by the given transformation.






public: virtual logical


var_rad_functional::operator== (


var_radius const& other // variable radius


) const;


Implements an assignment operator, which tests to see if a .var_rad_functional is equal to a var_radius






public: bs2_curve


var_rad_functional::rad_function () const;


Returns the bs2_curve defining the radius function.






public: virtual void var_rad_functional::reparam (


double start, // start parameter


double end // end parameter


);


Reparameterizes a var_rad_functional.






public: virtual void


var_rad_functional::restore_data ();


Restore the data for a var_rad_functional from a save file.


var_radius::restore_data Generic radius information

bs2_curve_restore
Underlying B-spline curve






public: virtual void var_rad_functional::save () const;


Saves the form or id, calls save_data, then saves the underlying curve.






public: virtual void var_rad_functional::shift (


double // shift delta


);


Reparameterizes the var_rad_functional by the given parameter shift.






public: virtual void var_rad_functional::split (


double param, // point of split


var_radius* pieces[2] // array of 2 var_radii


);


Splits a var_rad_functional into two pieces at the given point.






public: virtual double


var_rad_functional::start_deriv1 () const;


Returns the first derivative at the start parameter.






public: virtual double


var_rad_functional::start_radius () const;


Returns the radius at the start parameter.






public: virtual char const*


var_rad_functional::type_name () const;


Returns the string "functional".






public: virtual logical


var_rad_functional::zero_end_deriv1 (


logical at_start, // at start point if true


double tol // tolerance



= SPAresabs


) const;


Returns TRUE if the first derivative at the start or end point of the var_rad_functional is zero (i.e., less than SPAresabs).






public: virtual logical


var_rad_functional::zero_end_radius (


logical at_start, // at start point if true


double tol // tolerance



= SPAresabs


) const;


Returns TRUE if the radius at the start or end point of the var_rad_functional is zero (i.e., less than SPAresabs).




Related Fncs: bs2_radius_is_zero
PDF/KERN/39CLU.PDF
HTM/DATA/KERN/KERN/39CLU/0006.HTM