#include <swp_spl.hxx>


Public Member Functions | |
| int | accurate_derivs (SPApar_box const &range=*(SPApar_box *) NULL_REF) const |
| Calculates the derivatives for the surface. | |
| void | add_ref () |
| Uses count manipulation. | |
| void | check_for_approx () const |
This function should be used after creating a sweep_spl_sur, to ensure the surface will be valid for downstream operations. | |
| 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 void | eval (SPApar_pos const &uv, SPAposition &pos, SPAvector *dpos, SPAvector *ddpos) const |
| Finds the position and the first and second derivatives of the surface at a specified point. | |
| 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. | |
| virtual law * | get_draft () const |
| Returns the draft law for the sweep. | |
| 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 |
| Evaluates the curve at the given parameter location. | |
| virtual law * | get_rail () const |
| Returns a pointer to the sweep rail law. | |
| virtual law * | get_scale () const |
| Returns a pointer to the sweep scale law. | |
| logical | helix (spline const &owner, SPAvector &axis=*(SPAvector *) NULL_REF, SPAposition &root=*(SPAposition *) NULL_REF, double &pitch=*(double *) NULL_REF, double &radius=*(double *) NULL_REF, logical &right_handed=*(logical *) NULL_REF) const |
| Returns if the sweep is a helical surface. | |
| 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. | |
| 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. | |
| virtual logical | planar_profile (SPAunit_vector &norm) const |
| Checks whether the sweep profile is planar and returns a vector normal to the profile. | |
| virtual logical | planar_profile () const |
| Checks whether the sweep profile is planar. | |
| curve const & | profile () const |
| Returns the sweep profile curve. | |
| int | ref_count () |
| Returns the use count. | |
| void | remove_ref () |
| Removes a reference. | |
| virtual void | save () const |
| Saves an approximation of the surface, or calls the subtype object's save method. | |
| virtual void | save_data () const |
Save the information for the sweep_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. | |
| bs3_surface | sur () const |
Returns the bs3_surface approximation. | |
| sweep_spl_sur (curve const &shape, curve const &path, law *rail, law *draft, law *scale, SPAinterval const &u_range, SPAinterval const &v_range, logical shape_perp, bs3_curve help_profile_bs=(bs3_curve) NULL, bs3_curve help_path_bs=(bs3_curve) NULL, SPAunit_vector const &in_profile_nor=*(const class SPAunit_vector *) NULL_REF, logical use_old_nonperpdraft=FALSE, SPAunit_vector const &in_rigid_tangent=*(const class SPAunit_vector *) NULL_REF, SPAunit_vector const &in_axis=*(const class SPAunit_vector *) NULL_REF) | |
| C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments. | |
| virtual int | type () const |
Returns the type sweep_spl_sur. | |
| virtual char const * | type_name () const |
Returns a string "sweepsur". | |
| 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 sweep_spl_sur list. | |
Protected Member Functions | |
| virtual void | calculate_disc_info () |
| Calculates and adds the dicontinuities from the generating curves to the sweep surface. | |
| virtual subtrans_object * | copy () const |
| Construct a duplicate in free store of this object but with zero use count. | |
| virtual void | debug (char const *, logical, FILE *) const |
Writes the subtype_object in readable form for debugging. | |
| virtual double | eval_cross (SPApar_pos const &, SPAunit_vector const &) const |
Finds the curvature of a cross-section curve of the surface at the point on the surface with given SPAparameter values. | |
| virtual SPAunit_vector | eval_normal (SPApar_pos const &) const |
| Finds the normal to the surfac at the point with given SPAparameter values. | |
| virtual void | eval_prin_curv (SPApar_pos const &, SPAunit_vector &, double &, SPAunit_vector &, double &, evaluate_surface_quadrant=evaluate_surface_unknown) const |
Finds 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 &uv, SPAposition &xyz, SPAvector **derivs, int number_of_derivs, evaluate_surface_quadrant quadrant) const |
Finds the SPAposition and first and second derivatives of the surface at a given parameter. | |
| virtual void | make_approx (double fit, const spline &spl=*(spline *) NULL_REF, logical force=FALSE) const |
| Makes or remakes the approximating surface. | |
| virtual void | operator*= (SPAtransf const &) |
| Transform this sweep by the given SPAtransf. | |
| logical | operator== (subtype_object const &) const |
| Test for equality. | |
| virtual SPApar_pos | param (SPAposition const &, SPApar_pos const &=*(SPApar_pos *) NULL_REF) const |
| Finds the SPAparameter values of a point on the surface. | |
| virtual SPApar_vec | param_unitvec (SPAunit_vector const &, SPApar_pos const &) const |
Finds the change in surface SPAparameter corresponding to a unit offset in a given direction at a given uv, the direction lying in the surface. | |
| virtual SPAunit_vector | point_normal (SPAposition const &, SPApar_pos const &=*(SPApar_pos *) NULL_REF) const |
| Finds the normal to the surface at a point on the surface nearest to the given point. | |
| virtual void | point_prin_curv (SPAposition const &, SPAunit_vector &, double &, SPAunit_vector &, double &, SPApar_pos const &=*(SPApar_pos *) NULL_REF, evaluate_surface_quadrant=evaluate_surface_unknown) const |
| Finds the principal axes of curvature of the surface at a given point, and the curvatures in those directions. | |
| void | restore_data () |
Restores spl_sur data from file. | |
| virtual void | shift_u (double) |
| Parameter shift Role: Adjust the spline surface to have a SPAparameter range increased by the argument value (which may be negative). | |
| virtual void | shift_v (double) |
| Parameter shift Role: Adjust the spline surface to have a SPAparameter range increased by the argument value (which may be negative). | |
| virtual void | split_u (double, spl_sur *[2]) |
Divide a surface into two pieces at a given SPAparameter value. | |
| virtual void | split_v (double, spl_sur *[2]) |
Divide a surface into two pieces at a given SPAparameter value. | |
| sweep_spl_sur () | |
| C default constructor. | |
| virtual logical | test_point_tol (SPAposition const &, double, SPApar_pos const &=*(SPApar_pos *) NULL_REF, SPApar_pos &=*(SPApar_pos *) NULL_REF) const |
| Tests whether a point lies on the surface. | |
| virtual | ~sweep_spl_sur () |
| Destructor needs to delete the spine curve. | |
Protected Attributes | |
| SPAinterval | draft_domain |
| Original path domain. | |
| law * | draft_law |
| Draft distance is defined by a law, and is a function of the length of the path. | |
| logical | is_path_normal |
| Switch on the path type. | |
| logical | m_axis_sweep |
| Axis sweep. | |
| SPAvector | m_helix_axis |
| cached helix exis | |
| double | m_helix_pitch |
| cached helix pitch | |
| double | m_helix_radius |
| cached helix radius | |
| logical | m_helix_right_handed |
| cached helix is right handed | |
| SPAposition | m_helix_root |
| cached helix root | |
| sweep_helix_type | m_is_helix |
| Info about if this surface is a helix or if it should be determined. | |
| logical | m_is_linear_path |
| Whether or not the path is a straight line. | |
| logical | m_rigid |
| Rigid sweep. | |
| logical | m_use_old_nonperpdraft |
| Use old evaluator. | |
| curve * | path_curve |
| Copy of the path curve. | |
| SPAposition | path_start |
| Path start position. | |
| curve * | profile_curve |
| Copy of the profile curve. | |
| SPAunit_vector | profile_nor |
| Profile normal. | |
| law * | rail_law |
| Rail law: vector field for 3D paths or any path. | |
| law * | scale_law |
| Function from R to R3 for scale in x,y, and z. | |
| SPAmatrix | start_frame |
| Start of frame: Defined by the path and the rail law. | |
| SPAmatrix | start_frame_t |
| Transpose of start frame. | |
Private Attributes | |
| SPApar_box | m_safe_nonperp_range |
| Safe non perpendicular range. | |
Role: This class defines the perpendicular sweep of a planar profile curve along a path curve.
The sweep surface equation S<i>(u,v) is defined below:
S (u,v) = k (u) *M (v)
where
S (u,v) = k (u) *s (v) * M (v)
where
s (v) = the 3 x 3 matrix with diagonal
equal to { xs (v), ys (v), zs (v) }
and where
"_s" is the scale in the frame's "_" direction
S (u,v) = k (u,v) * s (v) * M (v)
where
k (u,v) = p (u,v) - (the start of the sweep path) and
p (u,v) = the u position of the profile offset by the draft_law(v)
The equation becomes:
S(u,v) = So(u,v) + No(u,v)*D(v-vo);
where
So(u,v) = Surface position without draft.
No(u,v) = Normal at the position u,v without draft.
D(v-vo) = Draf law ant v, provides the offset distance that will produce
the requested draft angle.
Limitations:
| sweep_spl_sur::sweep_spl_sur | ( | ) | [protected] |
C default constructor.
Role: Private for internal use only Default constructor, used in to create a empty class, so that the copy function can use it.
| virtual sweep_spl_sur::~sweep_spl_sur | ( | ) | [protected, virtual] |
Destructor needs to delete the spine curve.
| sweep_spl_sur::sweep_spl_sur | ( | curve const & | shape, | |
| curve const & | path, | |||
| law * | rail, | |||
| law * | draft, | |||
| law * | scale, | |||
| SPAinterval const & | u_range, | |||
| SPAinterval const & | v_range, | |||
| logical | shape_perp, | |||
| bs3_curve | help_profile_bs = (bs3_curve) NULL, |
|||
| bs3_curve | help_path_bs = (bs3_curve) NULL, |
|||
| SPAunit_vector const & | in_profile_nor = *(const class SPAunit_vector *) NULL_REF, |
|||
| logical | use_old_nonperpdraft = FALSE, |
|||
| SPAunit_vector const & | in_rigid_tangent = *(const class SPAunit_vector *) NULL_REF, |
|||
| SPAunit_vector const & | in_axis = *(const class SPAunit_vector *) NULL_REF | |||
| ) |
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
Role: This sweep surface is formed by sweeping the shape along the path curve, with an optional rail curve to specify the twist of the shape curve when it is swept along the path. If the path curve is normal, the path normal must not be NULL. If the path is not planar, a rail curve must be specified.
| shape | shape curve. | |
| path | path curve. | |
| rail | rail law. | |
| draft | draft law. | |
| scale | scale law. | |
| u_range | shape range. | |
| v_range | path range. | |
| shape_perp | shape profile is perpendicular to path. | |
| help_profile_bs | help profile. | |
| help_path_bs | help path. | |
| in_profile_nor | unit vector normal in shape. | |
| use_old_nonperpdraft | use the evaluation method for non perpendicular draft cases implemented in versions prior to R12 | |
| in_rigid_tangent | the curve tangent direction for a rigid sweep where the curve tangent is a constant |
| int sweep_spl_sur::accurate_derivs | ( | SPApar_box const & | range = *(SPApar_box *) NULL_REF |
) | const [virtual] |
| void subtype_object::add_ref | ( | ) | [inherited] |
Uses count manipulation.
| virtual void sweep_spl_sur::calculate_disc_info | ( | ) | [protected, virtual] |
| void sweep_spl_sur::check_for_approx | ( | ) | const |
This function should be used after creating a sweep_spl_sur, to ensure the surface will be valid for downstream operations.
Check if the approximation is available, if not, constructs one.
| 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* sweep_spl_sur::copy | ( | ) | const [protected, virtual] |
| virtual void sweep_spl_sur::debug | ( | char const * | leader, | |
| logical | output, | |||
| FILE * | fp | |||
| ) | const [protected, 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* sweep_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 spl_sur::eval | ( | SPApar_pos const & | uv, | |
| SPAposition & | pos, | |||
| SPAvector * | dpos, | |||
| SPAvector * | ddpos | |||
| ) | const [virtual, inherited] |
Finds the position and the first and second derivatives of the surface at a specified point.
| uv | given parameter. | |
| pos | returned point. | |
| dpos | first derivative. | |
| ddpos | second derivative. |
Reimplemented in skin_spl_sur, sub_spl_sur, sum_spl_sur, and VBL_SURF.
| virtual double sweep_spl_sur::eval_cross | ( | SPApar_pos const & | , | |
| SPAunit_vector const & | ||||
| ) | const [protected, virtual] |
Finds the curvature of a cross-section curve of the surface at the point on the surface with given SPAparameter values.
Role: The cross-section curve is defined as the intersection of the surface with a plane passing through the point on the surface and normal to the given direction, which must lie in the surface.
Reimplemented from spl_sur.
| virtual SPAunit_vector sweep_spl_sur::eval_normal | ( | SPApar_pos const & | ) | const [protected, virtual] |
Finds the normal to the surfac at the point with given SPAparameter values.
Reimplemented from spl_sur.
| 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 sweep_spl_sur::eval_prin_curv | ( | SPApar_pos const & | , | |
| SPAunit_vector & | , | |||
| double & | , | |||
| SPAunit_vector & | , | |||
| double & | , | |||
| evaluate_surface_quadrant | = evaluate_surface_unknown | |||
| ) | const [protected, virtual] |
Finds 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 sweep_spl_sur::evaluate | ( | SPApar_pos const & | uv, | |
| SPAposition & | xyz, | |||
| SPAvector ** | derivs, | |||
| int | number_of_derivs, | |||
| evaluate_surface_quadrant | quadrant | |||
| ) | const [protected, virtual] |
Finds the SPAposition and first and second derivatives of the surface at a given parameter.
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* sweep_spl_sur::get_path | ( | ) | const [virtual] |
| virtual sweep_path_type sweep_spl_sur::get_path_type | ( | ) | const [virtual] |
| virtual curve* sweep_spl_sur::get_profile | ( | double | param | ) | const [virtual] |
| virtual law* sweep_spl_sur::get_rail | ( | ) | const [virtual] |
| logical sweep_spl_sur::helix | ( | spline const & | owner, | |
| SPAvector & | axis = *(SPAvector *) NULL_REF, |
|||
| SPAposition & | root = *(SPAposition *) NULL_REF, |
|||
| double & | pitch = *(double *) NULL_REF, |
|||
| double & | radius = *(double *) NULL_REF, |
|||
| logical & | right_handed = *(logical *) NULL_REF | |||
| ) | const |
| static int sweep_spl_sur::id | ( | ) | [static] |
Returns the ID for the sweep_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.
| 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 sweep_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: This function, which is a virtual function of spl_sur, is implemented using make_sweep_approx. 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.
| 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 sweep_spl_sur::operator*= | ( | SPAtransf const & | ) | [protected, virtual] |
| logical sweep_spl_sur::operator== | ( | subtype_object const & | ) | const [protected, virtual] |
Test for equality.
Role: 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.
| virtual SPApar_pos sweep_spl_sur::param | ( | SPAposition const & | , | |
| SPApar_pos const & | = *(SPApar_pos *) NULL_REF | |||
| ) | const [protected, 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. |
| virtual SPApar_vec sweep_spl_sur::param_unitvec | ( | SPAunit_vector const & | , | |
| SPApar_pos const & | ||||
| ) | const [protected, virtual] |
Finds the change in surface SPAparameter corresponding to a unit offset in a given direction at a given uv, the direction lying in the surface.
Reimplemented from spl_sur.
| logical spl_sur::periodic_u | ( | ) | const [inline, inherited] |
| logical spl_sur::periodic_v | ( | ) | const [inline, inherited] |
| virtual logical sweep_spl_sur::planar_profile | ( | SPAunit_vector & | norm | ) | const [virtual] |
Checks whether the sweep profile is planar and returns a vector normal to the profile.
| norm | normal to profile. |
| virtual logical sweep_spl_sur::planar_profile | ( | ) | const [virtual] |
Checks whether the sweep profile is planar.
| virtual SPAunit_vector sweep_spl_sur::point_normal | ( | SPAposition const & | , | |
| SPApar_pos const & | = *(SPApar_pos *) NULL_REF | |||
| ) | const [protected, virtual] |
| virtual void sweep_spl_sur::point_prin_curv | ( | SPAposition const & | , | |
| SPAunit_vector & | , | |||
| double & | , | |||
| SPAunit_vector & | , | |||
| double & | , | |||
| SPApar_pos const & | = *(SPApar_pos *) NULL_REF, |
|||
| evaluate_surface_quadrant | = evaluate_surface_unknown | |||
| ) | const [protected, virtual] |
| int subtype_object::ref_count | ( | ) | [inline, inherited] |
Returns the use count.
| void subtype_object::remove_ref | ( | ) | [inherited] |
Removes a reference.
| void sweep_spl_sur::restore_data | ( | ) | [protected] |
Restores spl_sur data from file.
| virtual void sweep_spl_sur::save | ( | ) | const [virtual] |
Saves an approximation of the surface, or calls the subtype object's save method.
Reimplemented from subtype_object.
| virtual void sweep_spl_sur::save_data | ( | ) | const [virtual] |
| void subtrans_object::set_next | ( | subtrans_object * | obj | ) | [inherited] |
Sets the next object in the list.
| obj | object. |
| virtual void sweep_spl_sur::shift_u | ( | double | ) | [protected, virtual] |
Parameter shift
Role: Adjust the spline surface to have a SPAparameter range increased by the argument value (which may be negative).
This is only used to move portions of a periodic surface by integral multiples of the period, so "shift_v" will never be used, and so we can leave it undefined here.
Reimplemented from spl_sur.
| virtual void sweep_spl_sur::shift_v | ( | double | ) | [protected, virtual] |
Parameter shift
Role: Adjust the spline surface to have a SPAparameter range increased by the argument value (which may be negative).
This is only used to move portions of a periodic surface by integral multiples of the period, so "shift_v" will never be used, and so we can leave it undefined here.
Reimplemented from spl_sur.
| 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. |
| virtual void sweep_spl_sur::split_u | ( | double | , | |
| spl_sur * | [2] | |||
| ) | [protected, virtual] |
Divide a surface into two pieces at a given SPAparameter value.
Role: If the split is at the end of the SPAparameter range, the spl_sur is just returned as the appropriate half (in increasing SPAparameter 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 sweep_spl_sur::split_v | ( | double | , | |
| spl_sur * | [2] | |||
| ) | [protected, virtual] |
Divide a surface into two pieces at a given SPAparameter value.
Role: If the split is at the end of the SPAparameter range, the spl_sur is just returned as the appropriate half (in increasing SPAparameter 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 logical sweep_spl_sur::test_point_tol | ( | SPAposition const & | , | |
| double | , | |||
| SPApar_pos const & | = *(SPApar_pos *) NULL_REF, |
|||
| SPApar_pos & | = *(SPApar_pos *) NULL_REF | |||
| ) | const [protected, virtual] |
| virtual int sweep_spl_sur::type | ( | ) | const [virtual] |
| virtual char const* sweep_spl_sur::type_name | ( | ) | const [virtual] |
| 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.
SPAinterval sweep_spl_sur::draft_domain [protected] |
Original path domain.
law* sweep_spl_sur::draft_law [protected] |
Draft distance is defined by a law, and is a function of the length of the path.
logical sweep_spl_sur::is_path_normal [protected] |
Switch on the path type.
logical sweep_spl_sur::m_axis_sweep [protected] |
Axis sweep.
(sweeping while keep planar profile normal perpendicular to the axis)
SPAvector sweep_spl_sur::m_helix_axis [mutable, protected] |
cached helix exis
double sweep_spl_sur::m_helix_pitch [mutable, protected] |
cached helix pitch
double sweep_spl_sur::m_helix_radius [mutable, protected] |
cached helix radius
logical sweep_spl_sur::m_helix_right_handed [mutable, protected] |
cached helix is right handed
SPAposition sweep_spl_sur::m_helix_root [mutable, protected] |
cached helix root
sweep_helix_type sweep_spl_sur::m_is_helix [mutable, protected] |
logical sweep_spl_sur::m_is_linear_path [protected] |
Whether or not the path is a straight line.
logical sweep_spl_sur::m_rigid [protected] |
Rigid sweep.
(Curve tangent is constant, defined by m_rigid_tangent_dir.)
SPApar_box sweep_spl_sur::m_safe_nonperp_range [mutable, private] |
Safe non perpendicular range.
logical sweep_spl_sur::m_use_old_nonperpdraft [mutable, protected] |
Use old evaluator.
Role : Use evaluator used in ACIS previous to R12. The draft with non perpendicular path operation is handled differently.
curve* sweep_spl_sur::path_curve [protected] |
Copy of the path curve.
SPAposition sweep_spl_sur::path_start [protected] |
Path start position.
curve* sweep_spl_sur::profile_curve [protected] |
Copy of the profile curve.
SPAunit_vector sweep_spl_sur::profile_nor [protected] |
Profile normal.
law* sweep_spl_sur::rail_law [protected] |
Rail law: vector field for 3D paths or any path.
law* sweep_spl_sur::scale_law [protected] |
Function from R to R3 for scale in x,y, and z.
Role: x is the rail, z is the sweep path and y is z X x.
SPAmatrix sweep_spl_sur::start_frame [protected] |
Start of frame: Defined by the path and the rail law.
Role: x axis is the rail, z axis is the path direction at start, y axis is z cross x
SPAmatrix sweep_spl_sur::start_frame_t [protected] |
Transpose of start frame.