Go::SplineSurfaceInt Class Reference
[Intersections]

This class represents the "intersection object" of a spline surface. More...

#include <SplineSurfaceInt.h>

Inheritance diagram for Go::SplineSurfaceInt:

Go::ParamSurfaceInt Go::ParamGeomInt Go::ParamObjectInt Go::GeomObjectInt List of all members.

Public Member Functions

 SplineSurfaceInt (boost::shared_ptr< ParamSurface > surf)
 
Parameters:
surf the parametric curve defining the intersection object.

 SplineSurfaceInt (boost::shared_ptr< ParamSurface > surf, ParamGeomInt *parent)
 Constructor.
virtual ~SplineSurfaceInt ()
 Destructor.
virtual boost::shared_ptr<
ParamSurfaceInt
makeIntObject (boost::shared_ptr< ParamSurface > surf)
 Return an intersection object for the input surface, using this object as parent.
virtual boost::shared_ptr<
ParamCurveInt
makeIntCurve (boost::shared_ptr< ParamCurve > crv, ParamGeomInt *parent)
 Return an intersection object for the input curve, using parameter parent as parent.
virtual bool hasInnerKnots (int pardir) const
 Return true if the object has any inner knots in the specified parameter direction.
virtual bool hasCriticalValsOrKnots (int pardir) const
 Return true if the object has any critical parameter values or inner knots in the specified parameter direction.
virtual std::vector< double > getInnerKnotVals (int pardir, bool sort=false) const
 Return the inner knot values in the specified direction.
virtual std::vector< double > getCriticalValsAndKnots (int pardir) const
 Return the critical parameter values and inner knots for the object.
virtual int getMeshSize (int dir)
 Return the size of the geometric sample mesh in the specified direction.
virtual double paramFromMesh (int dir, int idx)
 Return the corresponding mesh parameter.
virtual std::vector< double
>::iterator 
getMesh ()
 Return the geometric sample mesh for the parametric function.
virtual DirectionCone directionCone () const
 A cone which contains all normals of the object.
virtual DirectionCone reducedDirectionCone (bool reduce_at_bd[4], double epsge) const
 Make exact direction cone. Only applicable for Bezier case.
virtual void getBoundaryObjects (std::vector< boost::shared_ptr< BoundaryGeomInt > > &bd_objs)
 Return the boundary objects of this object.
virtual int checkPeriodicity (int pardir) const
 Check if the object is periodic in the specified direction.
virtual bool isSimple ()
 Estimates if the current surface is simple enough for a singularity iteration.
virtual bool isSpline ()
 Verify whether the object is a spline.
virtual bool isIsoParametric (ParamCurveInt *curve, int dir, double par, double ptol, double tol)
 Check if a curve is an iso parametric curve in the current surface.
virtual double getOptimizedConeAngle (Point &axis1, Point &axis2)
 We try to treat problems which will never result in a simple case by shrinking the domain slightly, resulting in smaller cones.
virtual void knotIntervalFuzzy (double &u, double &v, double utol, double vtol) const
 Find the knot intervals for which u and v lie inside, moving the value u or v if they lie close to a knot.
virtual double nextSegmentVal (int dir, double par, bool forward, double tol) const
 Return the value of the knot next to the input parameter par.
virtual RotatedBox getRotatedBox (std::vector< Point > &axis) const
 Create a box containing the geometric sample mesh in the input coordinate system.
virtual void splitAtG0 (double angtol, std::vector< boost::shared_ptr< ParamSurfaceInt > > &subG1)
 Requests from selfintersection computation.
virtual boost::shared_ptr<
ParamSurfaceInt
getNormalSurface () const
 Returns the normal surface corresponding to this surface.
virtual bool canImplicitize ()
 Check whether the objects fulfills the requirements to implicitize.
virtual bool implicitize (double tol)
 Implicitize the object.
virtual bool getImplicit (double tol, double &tol2, AlgObj3DInt &alg_obj_3d_int)
 Get the implicit representation of the object.
SplineCurve * constParamCurve (double parameter, bool pardir_is_u) const
 Generate and return the specified isocurve.
boost::shared_ptr< SplineSurface > getSplineSurface ()
 Return pointer to the spline surface defining this object.
virtual boost::shared_ptr<
const SplineSurface > 
splineSurface () const
 Return pointer to the spline surface defining this object.
void setImplicitDeg ()
 Choose a degree for the implicit representation.

Protected Attributes

boost::shared_ptr< SplineSurface > spsf_
boost::shared_ptr< SplineSurface > normalsf_

Detailed Description

This class represents the "intersection object" of a spline surface.

Definition at line 53 of file SplineSurfaceInt.h.


Constructor & Destructor Documentation

Go::SplineSurfaceInt::SplineSurfaceInt ( boost::shared_ptr< ParamSurface >  surf,
ParamGeomInt parent 
) [explicit]

Constructor.

Parameters:
surf the parametric curve defining the intersection object.
parent the parent object to this object.


Member Function Documentation

virtual boost::shared_ptr<ParamSurfaceInt> Go::SplineSurfaceInt::makeIntObject ( boost::shared_ptr< ParamSurface >  surf  )  [virtual]

Return an intersection object for the input surface, using this object as parent.

Parameters:
surf the parametric surface defining the intersection object.

Reimplemented from Go::ParamSurfaceInt.

virtual boost::shared_ptr<ParamCurveInt> Go::SplineSurfaceInt::makeIntCurve ( boost::shared_ptr< ParamCurve >  crv,
ParamGeomInt parent 
) [virtual]

Return an intersection object for the input curve, using parameter parent as parent.

Parameters:
crv the parametric curve defining the intersection object.
parent the parent to the created intersection object.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::hasInnerKnots ( int  pardir  )  const [virtual]

Return true if the object has any inner knots in the specified parameter direction.

Parameters:
pardir the parameter direction in question. Indexing starts at 0.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::hasCriticalValsOrKnots ( int  pardir  )  const [virtual]

Return true if the object has any critical parameter values or inner knots in the specified parameter direction.

Parameters:
pardir the parameter direction in question. Indexing starts at 0.

Reimplemented from Go::ParamSurfaceInt.

virtual std::vector<double> Go::SplineSurfaceInt::getInnerKnotVals ( int  pardir,
bool  sort = false 
) const [virtual]

Return the inner knot values in the specified direction.

Parameters:
pardir the parameter direction in question. Indexing starts at 0.
sort the returned values may be sorted by the function.

Reimplemented from Go::ParamSurfaceInt.

virtual std::vector<double> Go::SplineSurfaceInt::getCriticalValsAndKnots ( int  pardir  )  const [virtual]

Return the critical parameter values and inner knots for the object.

Parameters:
pardir the parameter direction in question. Indexing starts at 0.

Reimplemented from Go::ParamSurfaceInt.

virtual int Go::SplineSurfaceInt::getMeshSize ( int  dir  )  [virtual]

Return the size of the geometric sample mesh in the specified direction.

Parameters:
dir the parameter direction in question. Indexing starts at 0.

Reimplemented from Go::ParamSurfaceInt.

virtual double Go::SplineSurfaceInt::paramFromMesh ( int  dir,
int  idx 
) [virtual]

Return the corresponding mesh parameter.

Parameters:
dir the parameter direction in question. Indexing starts at 0.
idx the mesh idx in the specified direction. Indexing starts at 0.

Reimplemented from Go::ParamSurfaceInt.

virtual DirectionCone Go::SplineSurfaceInt::directionCone (  )  const [virtual]

A cone which contains all normals of the object.

Returns:
A cone which contains all normals of the object.

Reimplemented from Go::ParamSurfaceInt.

virtual void Go::SplineSurfaceInt::getBoundaryObjects ( std::vector< boost::shared_ptr< BoundaryGeomInt > > &  bd_objs  )  [virtual]

Return the boundary objects of this object.

Parameters:
bd_objs the boundary objects of this object.

Reimplemented from Go::ParamSurfaceInt.

virtual int Go::SplineSurfaceInt::checkPeriodicity ( int  pardir  )  const [virtual]

Check if the object is periodic in the specified direction.

Analyze periodicity of surface based on number of repeating knots and control points. The return value is -1 if the surface ends are disjoint, otherwise k if cv is C^k continuous. These are sufficient but not necessary conditions for periodicity, so it is possible that a higher degree of periodicity exists. Should not be called on this layer, should be overruled by inherited class.

Parameters:
pardir the parameter direction in question.
Returns:
-1 if the curve ends are disjoint, or k if the surface is proven to be C^k continuous.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::isSimple (  )  [virtual]

Estimates if the current surface is simple enough for a singularity iteration.

Checks the span of the normal cone and the size of the surface

Returns:
True if the surface is characterized as simple.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::isSpline (  )  [virtual]

Verify whether the object is a spline.

Returns:
True if the object is a spline.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::isIsoParametric ( ParamCurveInt curve,
int  dir,
double  par,
double  ptol,
double  tol 
) [virtual]

Check if a curve is an iso parametric curve in the current surface.

NB! Only valid for splines

Reimplemented from Go::ParamSurfaceInt.

virtual double Go::SplineSurfaceInt::getOptimizedConeAngle ( Point &  axis1,
Point &  axis2 
) [virtual]

We try to treat problems which will never result in a simple case by shrinking the domain slightly, resulting in smaller cones.

This is useful for scenarios where the normals are parallell in a boundary point.

Parameters:
axis1 first vector defining a projection plane
axis2 second vector defining a projection plane
Returns:
The optimized cone angle

Reimplemented from Go::ParamSurfaceInt.

virtual void Go::SplineSurfaceInt::knotIntervalFuzzy ( double &  u,
double &  v,
double  utol,
double  vtol 
) const [virtual]

Find the knot intervals for which u and v lie inside, moving the value u or v if they lie close to a knot.

Parameters:
u the u parameter value
v the v parameter value
utol the parametric tolerance deciding if the input parameter u should be moved.
vtol the parametric tolerance deciding if the input parameter v should be moved.

Reimplemented from Go::ParamSurfaceInt.

virtual double Go::SplineSurfaceInt::nextSegmentVal ( int  dir,
double  par,
bool  forward,
double  tol 
) const [virtual]

Return the value of the knot next to the input parameter par.

Parameters:
dir the parameter direction in question. Indexing starts at 0.
par the parameter value
forward if true we return the closest knot to the right, otherwise the closest knot to the left.
tol the tolerance to determine if par is already located on the start of the next segment.
Returns:
The knot closest to the input parameter.

Reimplemented from Go::ParamSurfaceInt.

virtual RotatedBox Go::SplineSurfaceInt::getRotatedBox ( std::vector< Point > &  axis  )  const [virtual]

Create a box containing the geometric sample mesh in the input coordinate system.

Parameters:
axis the axis defining the coordinate system. The size of vector axis is 2, the last point is given as the cross product axis[0]axis[1].
Returns:
The rotated box

Reimplemented from Go::ParamSurfaceInt.

virtual void Go::SplineSurfaceInt::splitAtG0 ( double  angtol,
std::vector< boost::shared_ptr< ParamSurfaceInt > > &  subG1 
) [virtual]

Requests from selfintersection computation.

Split at G1 discontinuities.

Parameters:
angtol angular tolerance defining G1 discontinuity
subG1 vector of subdivided patches that are G1

Reimplemented from Go::ParamSurfaceInt.

virtual boost::shared_ptr<ParamSurfaceInt> Go::SplineSurfaceInt::getNormalSurface (  )  const [virtual]

Returns the normal surface corresponding to this surface.

Returns:
Pointer to the SplineSurface defining the normal surface.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::canImplicitize (  )  [virtual]

Check whether the objects fulfills the requirements to implicitize.

Returns:
Return true if we may implicitize the object.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::implicitize ( double  tol  )  [virtual]

Implicitize the object.

Parameters:
tol the geoemtric tolerance for the implicitization.
Returns:
True if the implicitization was a success.

Reimplemented from Go::ParamSurfaceInt.

virtual bool Go::SplineSurfaceInt::getImplicit ( double  tol,
double &  tol2,
AlgObj3DInt alg_obj_3d_int 
) [virtual]

Get the implicit representation of the object.

Garbage is returned if we are not able to implicitize.

Parameters:
tol geometric tolerance for the implicitization procedure.
tol2 geometric estimate for the accuracy of the implicitized object. Not yet in use!!!
alg_obj_3d_int the algebraic object containing the implicitized surface.
Returns:
True if the implicitization was a success.

Reimplemented from Go::ParamSurfaceInt.

SplineCurve* Go::SplineSurfaceInt::constParamCurve ( double  parameter,
bool  pardir_is_u 
) const

Generate and return the specified isocurve.

Parameters:
parameter value of the fixed parameter.
pardir_is_u 'true' if the first parameter is the running parameter, 'false' otherwise.
Returns:
Pointer to the created isocurve.

boost::shared_ptr<SplineSurface> Go::SplineSurfaceInt::getSplineSurface (  )  [inline]

Return pointer to the spline surface defining this object.

Returns:
The spline surface defining this object.

Definition at line 255 of file SplineSurfaceInt.h.

References spsf_.

virtual boost::shared_ptr<const SplineSurface> Go::SplineSurfaceInt::splineSurface (  )  const [inline, virtual]

Return pointer to the spline surface defining this object.

Returns:
The spline surface defining this object.

Definition at line 260 of file SplineSurfaceInt.h.

References spsf_.


The documentation for this class was generated from the following file:
Generated on Fri Nov 23 12:24:35 2007 for GoTools Intersections Library by  doxygen 1.5.1