Go::ParamSurfaceInt Class Reference
[Intersections]

Class that represents the "intersection object" of a parametric surface. More...

#include <ParamSurfaceInt.h>

Inheritance diagram for Go::ParamSurfaceInt:

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

Public Member Functions

 ParamSurfaceInt (boost::shared_ptr< ParamSurface > surf, ParamGeomInt *parent=0)
 Constructor.
virtual ~ParamSurfaceInt ()
 Destructor.
virtual void point (Point &pt, const double *tpar) const
 Evaluate the object in the input parameter.
virtual void point (std::vector< Point > &pt, const double *tpar, int derivs, const bool *from_right=0, double resolution=1.0e-12) const
 Evaluate the object in the input parameter, with the specified number of derivatives.
virtual ParamSurfaceIntgetParamSurfaceInt ()
 Return a pointer to this object.
boost::shared_ptr< ParamSurface > getParamSurface ()
 Return pointer to the parametric surface defining this object.
boost::shared_ptr< const ParamSurface > getParamSurface () const
 Return pointer to the parametric surface defining this object.
boost::shared_ptr< ParamSurface > getParentParamSurface (RectDomain &domain)
 Return pointer to a subsurface of the parent surface for this object.
boost::shared_ptr< ParamSurface > getParentParamSurface ()
 Return pointer to the parent surface for this object.
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 int numParams () const
 The number of parameters in the object.
boost::shared_ptr< ParamCurve > getIsoCurve (double param_start, double param_end, double isoval, bool pardir_is_u) const
 Returns the specified isocurve.
boost::shared_ptr< ParamCurve > getConstantParameterCurve (int dir, double par)
 Return a curveOnSurface along the current surface in the given direction and parameter value.
virtual void getLengthAndWiggle (double *length, double *wiggle)
 Return an estimate on the size and wiggle of the object.
virtual bool hasInnerKnots (int pardir) const
 Return true if the object has any inner knots in the specified parameter direction.
virtual bool hasCriticalVals (int pardir) const
 Return true if the object has any critical parameter values 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 bool canDivide (int pardir)
 Return true if we are allowed to divide in the specified parameter direction.
virtual std::vector< double > getCriticalVals (int pardir) const
 Return the critical parameter values in the specified 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 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 double startParam (int pardir) const
 Return the start parameter value in the specified direction.
virtual double endParam (int pardir) const
 Return the end parameter in the specified direction.
virtual bool boundaryPoint (const double *par, double eps) const
 Return true if the specified point lies within eps from the boundary.
std::vector< double > getMima () const
 Return the domain of the surface.
virtual bool inCorner (const double *par, double epspar) const
 Check if parameter point lies close to a corner of the parameter domain.
virtual void subdivide (int pardir, double par, std::vector< boost::shared_ptr< ParamGeomInt > > &subdiv_objs, std::vector< boost::shared_ptr< ParamGeomInt > > &bd_objs)
 Subdivide the object in the specified parameter direction and parameter value.
virtual std::vector< boost::shared_ptr<
ParamSurfaceInt > > 
subSurfaces (double from_upar, double from_vpar, double to_upar, double to_vpar, double fuzzy)
 Return the subsurface(s) on the input domain.
virtual CompositeBox compositeBox () const
 Create the CompositeBox for the parametric object.
virtual DirectionCone directionCone () const
 A cone which contains all normals of the object.
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 int dimension () const
 The dimension of the geometric space.
virtual const RectDomain & getDomain () const
 Return the rectangular domain of the surface.
const RectDomain & getDegDomain (double epsge)
 Return a rectangular domain of the surface which is slightly reduced in the degenerate case.
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.
bool isDegenerate (double epsge)
 Verfify whether the object is degenerate.
virtual int isDegenerate (double epsge, int dir)
 Verfify whether the object is degenerate in the specified direction.
virtual bool isDegenerate (double epsge, int dir, double *par)
 Verfify whether the object is degenerate in the specified direction and parameter.
double isolateDegPar (int dir, int deg_edge, double threshold, double *deg_factor=NULL)
 Return info on parameter domain which needs special treatment near a degenerated edge.
void setDegTriang ()
 Set dege_triang info.
bool getDegTriang ()
 Get deg_triang info.
double getParOffBd (int dir, bool atstart, double tol) const
 Estimate the parameter value of a surface a specified distance from a given edge.
void first_fund_form (double u, double v, bool u_from_right, bool v_from_right, double &E, double &F, double &G) const
 Return the coefficients necessary to calculate the first fundamental form of the surface in the parameter point.
void second_fund_form (double u, double v, bool u_from_right, bool v_from_right, double &L, double &M, double &N) const
 Return the coefficients necessary to calculate the second fundamental form of the surface in the parameter point.
void derivs (double u, double v, Point &deriv_u, Point &deriv_v, bool from_right_1=true, bool from_right_2=true) const
 Return the partial derivatives in the input parameter point.
void normal (double u, double v, Point &normal, bool from_right_1=true, bool from_right_2=true) const
 Calculate the normal in the specified parameter point.
virtual RotatedBox getRotatedBox (std::vector< Point > &axis) const
 Create a box containing the geometric sample mesh in the input coordinate system.
void axisFromCorners (Point &axis1, Point &axis2) const
 Use the corner points of the parameter domain to create axes.
virtual void splitAtG0 (double angtol, std::vector< boost::shared_ptr< ParamSurfaceInt > > &subG1)
 Requests from selfintersection computation.
void getSingularity (double eps, double sing_par[], Point &sing_pt, double &sing_val, double *seed)
 Iterate for a surface singularity.
bool canSelfIntersect (double epsge) const
 Check if the current surface can selfintersect.
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.

Protected Attributes

boost::shared_ptr< ParamSurface > surf_
int dim_
double deg_tol_
bool deg_triang_
std::vector< std::pair< double,
int > > 
segment_ [2]
bool bd_deg_ [4]
RectDomain domain_
RectDomain deg_domain_
int nmesh_ [2]
std::vector< double > mesh_
DirectionCone cone_
bool lw_set_
double length_ [2]
double wiggle_ [2]
std::vector< Point > temp_point_array_
boost::shared_ptr< ImplicitizeSurfaceAlgo > impl_sf_algo_
double implicit_tol_
int impl_deg_
boost::shared_ptr< AlgObj3DIntimplicit_obj_
double implicit_err_

Detailed Description

Class that represents the "intersection object" of a parametric surface.

Definition at line 55 of file ParamSurfaceInt.h.


Constructor & Destructor Documentation

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

Constructor.

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


Member Function Documentation

virtual void Go::ParamSurfaceInt::point ( Point &  pt,
const double *  tpar 
) const [inline, virtual]

Evaluate the object in the input parameter.

Parameters:
pt the Point to be returned.
tpar the parameter in which to evaluate. The size of the array should be equal to numParams().

Implements Go::ParamObjectInt.

Definition at line 71 of file ParamSurfaceInt.h.

References surf_.

virtual void Go::ParamSurfaceInt::point ( std::vector< Point > &  pt,
const double *  tpar,
int  derivs,
const bool *  from_right = 0,
double  resolution = 1.0e-12 
) const [inline, virtual]

Evaluate the object in the input parameter, with the specified number of derivatives.

Parameters:
pt the vecotr of points to be returned.
tpar the parameter in which to evaluate. The size of the array should be equal to numParams().
derivs the number of derivatives to calculate.
from_right if true the evaluation is to be performed from the right side of the parameter value.
resolution tolerance used when determining whether parameters are located at special values of the parameter domain (in particualar: knot values in case of spline objects.

Implements Go::ParamObjectInt.

Definition at line 85 of file ParamSurfaceInt.h.

References surf_.

virtual ParamSurfaceInt* Go::ParamSurfaceInt::getParamSurfaceInt (  )  [virtual]

Return a pointer to this object.

Returns:
Pointer to this object.

Reimplemented from Go::ParamObjectInt.

boost::shared_ptr<ParamSurface> Go::ParamSurfaceInt::getParamSurface (  )  [inline]

Return pointer to the parametric surface defining this object.

Returns:
Pointer to the parametric surface defining this object.

Definition at line 112 of file ParamSurfaceInt.h.

References surf_.

boost::shared_ptr<const ParamSurface> Go::ParamSurfaceInt::getParamSurface (  )  const [inline]

Return pointer to the parametric surface defining this object.

Returns:
Pointer to the parametric surface defining this object.

Definition at line 118 of file ParamSurfaceInt.h.

References surf_.

boost::shared_ptr<ParamSurface> Go::ParamSurfaceInt::getParentParamSurface ( RectDomain &  domain  ) 

Return pointer to a subsurface of the parent surface for this object.

If no such surface exist, we use the surface of this object instead.

Parameters:
domain the parametric domain of the subsurface.
Returns:
Pointer to a subsurface of the parent surface for this object.

boost::shared_ptr<ParamSurface> Go::ParamSurfaceInt::getParentParamSurface (  ) 

Return pointer to the parent surface for this object.

If no such surface exist, we use the surface of this object instead.

Returns:
Pointer to a subsurface of the parent surface for this object.

virtual boost::shared_ptr<ParamSurfaceInt> Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

virtual boost::shared_ptr<ParamCurveInt> Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

boost::shared_ptr<ParamCurve> Go::ParamSurfaceInt::getIsoCurve ( double  param_start,
double  param_end,
double  isoval,
bool  pardir_is_u 
) const

Returns the specified isocurve.

Parameters:
param_start start parameter for the isocurve.
param_end end parameter for the isocurve.
isoval the value for the isoparameter.
pardir_is_u if 'pardir_is_u' is 'true', then the first parameter is the running direction and the second parameter is the isoparameter; vice versa for 'pardir_is_u' equal to 'false'.

boost::shared_ptr<ParamCurve> Go::ParamSurfaceInt::getConstantParameterCurve ( int  dir,
double  par 
)

Return a curveOnSurface along the current surface in the given direction and parameter value.

Parameters:
dir the direction of the constant parameter curve. Indexing starts at 0.
par the isoparameter for the curve.

virtual void Go::ParamSurfaceInt::getLengthAndWiggle ( double *  length,
double *  wiggle 
) [virtual]

Return an estimate on the size and wiggle of the object.

Parameters:
length the approximative length of the object in the corresponding parameter directions. The size of the array should be equal to numParams().
wiggle a scalar representing the wiggle of the object in the corresponding parameter directions. The size of the array should be equal to numParams().

Implements Go::ParamObjectInt.

virtual bool Go::ParamSurfaceInt::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.

Implements Go::ParamObjectInt.

Reimplemented in Go::SplineSurfaceInt.

virtual bool Go::ParamSurfaceInt::hasCriticalVals ( int  pardir  )  const [virtual]

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

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

Implements Go::ParamObjectInt.

virtual bool Go::ParamSurfaceInt::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.

Implements Go::ParamObjectInt.

Reimplemented in Go::SplineSurfaceInt.

virtual bool Go::ParamSurfaceInt::canDivide ( int  pardir  )  [virtual]

Return true if we are allowed to divide in the specified parameter direction.

Parameters:
pardir the parameter direction in question.

Implements Go::ParamObjectInt.

virtual std::vector<double> Go::ParamSurfaceInt::getCriticalVals ( int  pardir  )  const [virtual]

Return the critical parameter values in the specified direction.

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

Implements Go::ParamObjectInt.

virtual std::vector<double> Go::ParamSurfaceInt::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.

Implements Go::ParamObjectInt.

Reimplemented in Go::SplineSurfaceInt.

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

Return the critical parameter values and inner knots for object.

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

Implements Go::ParamObjectInt.

Reimplemented in Go::SplineSurfaceInt.

virtual int Go::ParamSurfaceInt::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.

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual double Go::ParamSurfaceInt::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.

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual double Go::ParamSurfaceInt::startParam ( int  pardir  )  const [virtual]

Return the start parameter value in the specified direction.

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

Implements Go::ParamObjectInt.

virtual double Go::ParamSurfaceInt::endParam ( int  pardir  )  const [virtual]

Return the end parameter in the specified direction.

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

Implements Go::ParamObjectInt.

virtual bool Go::ParamSurfaceInt::boundaryPoint ( const double *  par,
double  eps 
) const [virtual]

Return true if the specified point lies within eps from the boundary.

Parameters:
par the parameter in which to evaluate. Size of array should be equal to numParams().
eps the tolerance defining the boundary neighbourhood.

Implements Go::ParamObjectInt.

std::vector<double> Go::ParamSurfaceInt::getMima (  )  const

Return the domain of the surface.

Returns:
The returned vector consists of (umin, umax, vmin, vmax).

virtual bool Go::ParamSurfaceInt::inCorner ( const double *  par,
double  epspar 
) const [virtual]

Check if parameter point lies close to a corner of the parameter domain.

Parameters:
par the input parameter point.
epspar the parametric tolerance defining the neighbourhood.

Reimplemented from Go::ParamObjectInt.

virtual void Go::ParamSurfaceInt::subdivide ( int  pardir,
double  par,
std::vector< boost::shared_ptr< ParamGeomInt > > &  subdiv_objs,
std::vector< boost::shared_ptr< ParamGeomInt > > &  bd_objs 
) [virtual]

Subdivide the object in the specified parameter direction and parameter value.

Parameters:
pardir direction in which to subdive. Indexing starts at 0.
par parameter in which to subdivide.
subdiv_objs The subparts of this object. Of the same geometric dimension as this object.
bd_objs the boundaries between the returned subdiv_objs. Of geometric dimension 1 less than this object.

Implements Go::ParamGeomInt.

virtual std::vector<boost::shared_ptr<ParamSurfaceInt> > Go::ParamSurfaceInt::subSurfaces ( double  from_upar,
double  from_vpar,
double  to_upar,
double  to_vpar,
double  fuzzy 
) [virtual]

Return the subsurface(s) on the input domain.

For a trimmed surface there may be more than one surface, for a surface defined on a rectangular domain there will be only one.

Parameters:
from_upar start parameter in the first parameter direction.
from_vpar start parameter in the second parameter direction.
to_upar end parameter in the first parameter direction.
to_vpar end parameter in the second parameter direction.
fuzzy allowed alteration of an input parameter value. Typically this applies to a spline surface, where we do not want knots to lie too close whilst not being equal.

virtual CompositeBox Go::ParamSurfaceInt::compositeBox (  )  const [virtual]

Create the CompositeBox for the parametric object.

Returns:
The CompositeBox for the parametric object.

Implements Go::ParamGeomInt.

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

A cone which contains all normals of the object.

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

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual void Go::ParamSurfaceInt::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.

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual int Go::ParamSurfaceInt::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::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual const RectDomain& Go::ParamSurfaceInt::getDomain (  )  const [inline, virtual]

Return the rectangular domain of the surface.

Returns:
Return the rectangular domain of the surface.

Definition at line 351 of file ParamSurfaceInt.h.

References domain_.

const RectDomain& Go::ParamSurfaceInt::getDegDomain ( double  epsge  ) 

Return a rectangular domain of the surface which is slightly reduced in the degenerate case.

Returns:
Return the rectangular domain of the surface.

virtual bool Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

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

Verify whether the object is a spline.

Returns:
True if the object is a spline.

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

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

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

NB! Only valid for splines

Reimplemented in Go::SplineSurfaceInt.

Definition at line 371 of file ParamSurfaceInt.h.

virtual double Go::ParamSurfaceInt::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

Implements Go::ParamGeomInt.

Reimplemented in Go::SplineSurfaceInt.

virtual void Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

virtual double Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

bool Go::ParamSurfaceInt::isDegenerate ( double  epsge  ) 

Verfify whether the object is degenerate.

Parameters:
epsge the geometric tolerance defining degeneracy.

virtual int Go::ParamSurfaceInt::isDegenerate ( double  epsge,
int  dir 
) [virtual]

Verfify whether the object is degenerate in the specified direction.

Parameters:
epsge the geometric tolerance defining degeneracy.
dir the parameter direction in question.

Reimplemented from Go::ParamGeomInt.

virtual bool Go::ParamSurfaceInt::isDegenerate ( double  epsge,
int  dir,
double *  par 
) [virtual]

Verfify whether the object is degenerate in the specified direction and parameter.

Parameters:
epsge the geometric tolerance defining degeneracy.
dir the parameter direction in question.
par the parameter in which to evaluate. Size of array should be equal to numParams().

Implements Go::ParamGeomInt.

double Go::ParamSurfaceInt::isolateDegPar ( int  dir,
int  deg_edge,
double  threshold,
double *  deg_factor = NULL 
)

Return info on parameter domain which needs special treatment near a degenerated edge.

Parameters:
dir the parameter direction in question. Indexing starts at 0.
deg_edge the degenerate edge
threshold a tolerance
Returns:
a safe parameter value that is isolated from the degenerate value

void Go::ParamSurfaceInt::setDegTriang (  )  [inline]

Set dege_triang info.

Variable useful for surfaces with degenerated edge(s).

Definition at line 438 of file ParamSurfaceInt.h.

References deg_triang_.

bool Go::ParamSurfaceInt::getDegTriang (  )  [inline]

Get deg_triang info.

Variable useful for surfaces with degenerated edge(s).

Definition at line 443 of file ParamSurfaceInt.h.

References deg_triang_.

double Go::ParamSurfaceInt::getParOffBd ( int  dir,
bool  atstart,
double  tol 
) const

Estimate the parameter value of a surface a specified distance from a given edge.

Parameters:
dir the parameter direction in question.
atstart true if we are the start of the parameter interval, false otherwise.
tol influencing how far from the edge we should move.
Returns:
the computed parameter value.

void Go::ParamSurfaceInt::first_fund_form ( double  u,
double  v,
bool  u_from_right,
bool  v_from_right,
double &  E,
double &  F,
double &  G 
) const [inline]

Return the coefficients necessary to calculate the first fundamental form of the surface in the parameter point.

Parameters:
u the first parameter value.
v the second parameter value.
u_from_right if true then evaluate from the right, otherwise from the left.
v_from_right if true then evaluate from the right, otherwise from the left.
E the first coefficient for the first fundamental form.
F the second coefficient for the first fundamental form.
G the third coefficient for the first fundamental form.

Definition at line 467 of file ParamSurfaceInt.h.

References surf_, and temp_point_array_.

void Go::ParamSurfaceInt::second_fund_form ( double  u,
double  v,
bool  u_from_right,
bool  v_from_right,
double &  L,
double &  M,
double &  N 
) const [inline]

Return the coefficients necessary to calculate the second fundamental form of the surface in the parameter point.

Parameters:
u the first parameter value.
v the second parameter value.
u_from_right if true then evaluate from the right, otherwise from the left.
v_from_right if true then evaluate from the right, otherwise from the left.
L the first coefficient for the second fundamental form.
M the second coefficient for the second fundamental form.
N the third coefficient for the second fundamental form.

Definition at line 498 of file ParamSurfaceInt.h.

References surf_, and temp_point_array_.

void Go::ParamSurfaceInt::derivs ( double  u,
double  v,
Point &  deriv_u,
Point &  deriv_v,
bool  from_right_1 = true,
bool  from_right_2 = true 
) const [inline]

Return the partial derivatives in the input parameter point.

Parameters:
u the first parameter value.
v the second parameter value.
deriv_u the partial derivative in the u-direction.
deriv_v the partial derivative in the u-direction.
from_right_1 if true then calculate from the left int the first parameter parameter direction, otherwise from the right.
from_right_2 if true then calculate from the left int the second parameter parameter direction, otherwise from the right.

Definition at line 531 of file ParamSurfaceInt.h.

References surf_, and temp_point_array_.

void Go::ParamSurfaceInt::normal ( double  u,
double  v,
Point &  normal,
bool  from_right_1 = true,
bool  from_right_2 = true 
) const [inline]

Calculate the normal in the specified parameter point.

Parameters:
u the first parameter value.
v the second parameter value.
normal the calculated normal in the parameter point.
from_right_1 if true then calculate from the left int the first parameter parameter direction, otherwise from the right.
from_right_2 if true then calculate from the left int the second parameter parameter direction, otherwise from the right.

Definition at line 554 of file ParamSurfaceInt.h.

References surf_, and temp_point_array_.

virtual RotatedBox Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

void Go::ParamSurfaceInt::axisFromCorners ( Point &  axis1,
Point &  axis2 
) const

Use the corner points of the parameter domain to create axes.

Parameters:
axis1 the first axis.
axis2 the second axis.

virtual void Go::ParamSurfaceInt::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 in Go::SplineSurfaceInt.

void Go::ParamSurfaceInt::getSingularity ( double  eps,
double  sing_par[],
Point &  sing_pt,
double &  sing_val,
double *  seed 
)

Iterate for a surface singularity.

Parameters:
eps numerical tolerance
sing_par parameters of the singularity
sing_pt the singular point
sing_val a number that measures the quality of the singularity
seed initial guess for singularity in parameter plane

bool Go::ParamSurfaceInt::canSelfIntersect ( double  epsge  )  const

Check if the current surface can selfintersect.

Uses normal cone and tangent cones.

Parameters:
epsge a geometric tolerance

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

Returns the normal surface corresponding to this surface.

Returns:
Pointer to the SplineSurface defining the normal surface. Not implemented for a general parametric surface.

Reimplemented in Go::SplineSurfaceInt.

Definition at line 610 of file ParamSurfaceInt.h.

virtual bool Go::ParamSurfaceInt::canImplicitize (  )  [inline, virtual]

Check whether the objects fulfills the requirements to implicitize.

Returns:
Return true if we may implicitize the object.

Reimplemented in Go::SplineSurfaceInt.

Definition at line 619 of file ParamSurfaceInt.h.

virtual bool Go::ParamSurfaceInt::implicitize ( double  tol  )  [inline, virtual]

Implicitize the object.

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

Reimplemented in Go::SplineSurfaceInt.

Definition at line 625 of file ParamSurfaceInt.h.

virtual bool Go::ParamSurfaceInt::getImplicit ( double  tol,
double &  tol2,
AlgObj3DInt alg_obj_3d_int 
) [inline, 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 in Go::SplineSurfaceInt.

Definition at line 638 of file ParamSurfaceInt.h.


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