Home

sweep_spl_sur Class Reference
[surfaces]

Defines the perpendicular sweep of a planar profile curve along a path curve. More...

#include <swp_spl.hxx>

Inheritance diagram for sweep_spl_sur:

Inheritance graph
[legend]
Collaboration diagram for sweep_spl_sur:

Collaboration graph
[legend]

List of all members.

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_surdeep_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 &parameter) 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 lawget_draft () const
 Returns the draft law for the sweep.
subtrans_objectget_next () const
 Returns the next object in the list.
virtual curveget_path () const
 Returns the sweep path curve.
virtual sweep_path_type get_path_type () const
 Returns the sweep path type.
virtual curveget_profile (double param) const
 Evaluates the curve at the given parameter location.
virtual lawget_rail () const
 Returns a pointer to the sweep rail law.
virtual lawget_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_objectmake_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_objectcopy () 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.
lawdraft_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.
curvepath_curve
 Copy of the path curve.
SPAposition path_start
 Path start position.
curveprofile_curve
 Copy of the profile curve.
SPAunit_vector profile_nor
 Profile normal.
lawrail_law
 Rail law: vector field for 3D paths or any path.
lawscale_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.


Detailed Description

Defines the perpendicular sweep of a planar profile curve along a path curve.


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

 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:
 


Constructor & Destructor Documentation

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.

Parameters:
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


Member Function Documentation

int sweep_spl_sur::accurate_derivs ( SPApar_box const &  range = *(SPApar_box *) NULL_REF  )  const [virtual]

Calculates the derivatives for the surface.



Parameters:
range range for derivs.

Reimplemented from spl_sur.

void subtype_object::add_ref (  )  [inherited]

Uses count manipulation.

virtual void sweep_spl_sur::calculate_disc_info (  )  [protected, virtual]

Calculates and adds the dicontinuities from the generating curves to the sweep surface.

Reimplemented from spl_sur.

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]

Construct a duplicate in free store of this object but with zero use count.

Implements spl_sur.

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.

Parameters:
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.

Parameters:
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.



Parameters:
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.



Parameters:
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.

virtual law* sweep_spl_sur::get_draft (  )  const [virtual]

Returns the draft law for the sweep.

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]

Returns the sweep path curve.

Reimplemented from spl_sur.

virtual sweep_path_type sweep_spl_sur::get_path_type (  )  const [virtual]

Returns the sweep path type.

Reimplemented from spl_sur.

virtual curve* sweep_spl_sur::get_profile ( double  param  )  const [virtual]

Evaluates the curve at the given parameter location.



Parameters:
param parameter location.

Reimplemented from spl_sur.

virtual law* sweep_spl_sur::get_rail (  )  const [virtual]

Returns a pointer to the sweep rail law.

Reimplemented from spl_sur.

virtual law* sweep_spl_sur::get_scale (  )  const [virtual]

Returns a pointer to the sweep scale law.

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

Returns if the sweep is a helical surface.



Parameters:
owner starting surface.
axis axis start direction.
root axis start position.
pitch thread pitch.
radius radius of helix.
right_handed TRUE is right handed.

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.

Parameters:
pos given position.
surf position on surface.
normal normal to surface.
curv principal curvature.
guess guess parameter.
actual actual parameter.
pt TRUE to iterate to a (local) near-point rather than any perpendicular..

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.

Parameters:
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.

Parameters:
rhs subtype-object.

virtual void sweep_spl_sur::operator*= ( SPAtransf const &   )  [protected, virtual]

Transform this sweep by the given SPAtransf.

Reimplemented from spl_sur.

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]

Finds the SPAparameter values of a point on the surface.

Implements spl_sur.

double spl_sur::param_period_u (  )  const [inline, inherited]

Returns the u period of a periodic parametric surface, zero if the surface is not periodic in the u direction.

double spl_sur::param_period_v (  )  const [inline, inherited]

Returns the v period of a periodic parametric surface, zero if the surface is not periodic in the v direction.

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.

Parameters:
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.

Parameters:
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.

Parameters:
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]

Determines if a parametric surface is periodic in the u direction.



Role: Determines if a parametric surface is periodic in the u direction. (i.e. it is smoothly closed, so faces can run over the seam).

logical spl_sur::periodic_v (  )  const [inline, inherited]

Determines if a parametric surface is periodic in the v direction.



Role: Determines if a parametric surface is periodic in the v direction. (i.e. it is smoothly closed, so faces can run over the seam).

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.



Parameters:
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]

Finds the normal to the surface at a point on the surface nearest to the given point.

Reimplemented from spl_sur.

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]

Finds the principal axes of curvature of the surface at a given point, and the curvatures in those directions.

Reimplemented from spl_sur.

curve const& sweep_spl_sur::profile (  )  const

Returns the sweep profile curve.

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]

Save the information for the sweep_spl_sur to a save file.

Reimplemented from spl_sur.

void subtrans_object::set_next ( subtrans_object obj  )  [inherited]

Sets the next object in the list.



Parameters:
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.

Parameters:
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.

Parameters:
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]

Tests whether a point lies on the surface.

Reimplemented from spl_sur.

virtual int sweep_spl_sur::type (  )  const [virtual]

Returns the type sweep_spl_sur.

Implements subtype_object.

virtual char const* sweep_spl_sur::type_name (  )  const [virtual]

Returns a string "sweepsur".

Implements spl_sur.

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.


Member Data Documentation

Original path domain.

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

cached helix root

sweep_helix_type sweep_spl_sur::m_is_helix [mutable, protected]

Info about if this surface is a helix or if it should be determined.

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.)

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.

Copy of the path curve.

Path start position.

Copy of the profile curve.

Profile normal.

Rail law: vector field for 3D paths or any path.

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.

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

Transpose of start frame.