#include <SplineSurfaceInt.h>
Inheritance diagram for Go::SplineSurfaceInt:
Public Member Functions | ||||
SplineSurfaceInt (boost::shared_ptr< ParamSurface > surf) | ||||
| ||||
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_ |
Definition at line 53 of file SplineSurfaceInt.h.
Go::SplineSurfaceInt::SplineSurfaceInt | ( | boost::shared_ptr< ParamSurface > | surf, | |
ParamGeomInt * | parent | |||
) | [explicit] |
Constructor.
surf | the parametric curve defining the intersection object. | |
parent | the parent object to this object. |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
pardir | the parameter direction in question. |
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
Reimplemented from Go::ParamSurfaceInt.
virtual bool Go::SplineSurfaceInt::isSpline | ( | ) | [virtual] |
Verify whether 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.
axis1 | first vector defining a projection plane | |
axis2 | second vector defining a projection plane |
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.
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.
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. |
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.
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]. |
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.
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.
Reimplemented from Go::ParamSurfaceInt.
virtual bool Go::SplineSurfaceInt::canImplicitize | ( | ) | [virtual] |
Check whether the objects fulfills the requirements to implicitize.
Reimplemented from Go::ParamSurfaceInt.
virtual bool Go::SplineSurfaceInt::implicitize | ( | double | tol | ) | [virtual] |
Implicitize the object.
tol | the geoemtric tolerance for the implicitization. |
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.
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. |
Reimplemented from Go::ParamSurfaceInt.
SplineCurve* Go::SplineSurfaceInt::constParamCurve | ( | double | parameter, | |
bool | pardir_is_u | |||
) | const |
Generate and return the specified isocurve.
parameter | value of the fixed parameter. | |
pardir_is_u | 'true' if the first parameter is the running parameter, 'false' otherwise. |
boost::shared_ptr<SplineSurface> Go::SplineSurfaceInt::getSplineSurface | ( | ) | [inline] |
Return pointer to 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.
Definition at line 260 of file SplineSurfaceInt.h.
References spsf_.