surface_law_data
List of: Classes
Subjects: Geometric Analysis, Laws, SAT Save and Restore
Contents: Kernel

Purpose: Creates a wrapper to an ACISsurface class.

Derivation: surface_law_data : base_surface_law_data : law_data : ACIS_OBJECT : -

SAT Identifier: "SURF#"

Filename: kern/kernel/kernutil/law/law.hxx

Description: This is a law data class that holds a pointer to a surface.

References: KERN surface

BASE SPAinterval, SPApar_pos, SPAposition

Data: protected SPAinterval u_domain;

This holds the u parameter range of the given surface.


protected SPAinterval v_domain;

This holds the v parameter range of the given surface.


protected int *which_cached;

This holds the time tags.


protected int point_level;

This holds the size of tvalue.


protected SPApar_pos *tvalue;

This holds the parameter values.


protected SPAposition *cached_f;

This holds the positions.


protected surface *acis_surface;

This holds a pointer to the ACISsurface class.

Constructor: public: surface_law_data::surface_law_data (


surface const& in_acis_surface, // surface


SPAinterval const& in_u_domain, // u parameter






// range


SPAinterval const& in_v_domain // v parameter






// range


);


C++ constructor, creating a sruface_law_data which is a wrapper for the ACISsurface.






public: surface_law_data::surface_law_data (


surface const& in_acis_surface // surface


);


C++ constructor, creating a sruface_law_data which is a wrapper for the ACISsurface.




Destructor: public: surface_law_data::~surface_law_data ();


Applications are required to call this destructor for their law data types.



Methods: public: SPAposition surface_law_data::bs3_eval (


SPApar_pos const& in_par_pos // uv parameters


) const;


Returns the position of the u,v parameters on the spline approximating surface.






public: virtual law_data*


surface_law_data::deep_copy (


base_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: void surface_law_data::eval (


SPApar_pos& uv, // parameter to evaluate


SPAposition& pos, // output surface




// position


SPAvector* dpos, // array of 1st




// derivatives


SPAvector* ddpos // array of second




// derivatives


);


This takes in a uv parameter value and returns the corresponding xyz position on the surface; a vector array, which holds the derivative with respect to u and the derivative with respect to v; and an array with three vectors, which correspond to the second derivative with respect to u, the derivative with respect to u and then to v, and the second derivative with respect to v.






public: double


surface_law_data::eval_gaussian_curvature (


SPApar_pos const& in_par_pos // parameter position


) const;


Finds the Gaussian curvature at the given parameter value on the curve.






public: double surface_law_data::eval_max_curvature (


SPApar_pos const& in_par_pos // parameter position


) const;


Finds the maximum curvature at the given parameter value on the curve.






public: double


surface_law_data::eval_mean_curvature (


SPApar_pos const& in_par_pos // parameter position


) const;


Finds the mean curvature at the given parameter value on the curve.






public: double surface_law_data::eval_min_curvature (


SPApar_pos const& in_par_pos // parameter position


) const;


Finds the minimum curvature at the given parameter value on the curve.






protected: void surface_law_data::init (


surface const& in_acis_surface, // surface


SPAinterval const& in_u_domain, // u parameter






// range


SPAinterval const& in_v_domain // v parameter






// range


);


Initializes this object.






public: SPApar_pos surface_law_data::point_perp (


SPAposition in_point // given position


);


Finds the parameter position on the surface perpendicular to the given position outside of the surface.






public: SPApar_pos surface_law_data::point_perp (


SPAposition in_point, // given position


SPApar_pos in_par_pos // given par pos


);


Finds the parameter position on the surface perpendicular to the given position outside of the surface.






public: virtual void surface_law_data::save ();


Calls the specific surface save method, and saves the u domain interval and v domain interval.






public: void surface_law_data::set_levels (


int in_point_level // number of tvalue



= 4,


int in_derivative_level // number of deriv



= 2


);


Establishes the number of positions stored in tvalue in preparation for starting over. In addition, it clears out cached arrays for the positions and their derivatives.






public: char const* surface_law_data::symbol (


law_symbol_type type // type of law symbol


);


Returns the string that represents this law class's symbol. The symbol is used for parsing the law and for saving and restoring law-based geometry. For a law to be saved and restored, it must have or inherit this method.


The default law symbol for this class is SURF.






public: logical surface_law_data::term_domain (


int which, // term to bound


SPAinterval& answer // bounds for term


);


Establishes the domain of a given term in the law.

Internal Use: grid




Related Fncs: restore_law, restore_law_data, save_law
PDF/KERN/37CLSR.PDF
HTM/DATA/KERN/KERN/37CLSR/0011.HTM