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
|