Implicitization


Classes

class  Go::BernsteinMulti
 Class that implements bivariate tensor product Bernstein polynomials on the domain [0,1]x[0,1]. More...
class  Go::BernsteinPoly
 Class that implements Bernstein polynomials on the interval [0,1]. More...
class  Go::BernsteinTetrahedralPoly
 Class that implements Bernstein polynomials on a tetrahedron. More...
class  Go::BernsteinTriangularPoly
 Class that implements Bernstein polynomials on a triangle. More...
class  Go::BezierTriangle< N >
 Not documented. More...
class  Go::Binomial
 Class that computes the binomial coefficients. More...
class  Go::ImplicitizeCurveAlgo
 Class that implements an implicitization algorithm for spline curves. More...
class  Go::ImplicitizeCurveAndVectorAlgo
 Class that implements an algorithm for finding an implicit ruled surface defined by a curve and a vector. More...
class  Go::ImplicitizePointCloudAlgo
 Class that implements an algorithm for finding an implicit surface from a 3D point cloud. More...
class  Go::ImplicitizeSurfaceAlgo
 Class that implements an implicitization algorithm for spline surfaces. More...

Functions

BernsteinMulti Go::operator * (const BernsteinMulti &m1, const BernsteinMulti &m2)
 Multiplication of two polynomials.
BernsteinMulti Go::operator * (const BernsteinMulti &m1, double c)
 Multiplication of a polynomial with a scalar.
BernsteinMulti Go::operator * (double c, const BernsteinMulti &m1)
 Multiplication of a scalar with a polynomial.
BernsteinMulti Go::operator+ (const BernsteinMulti &m1, const BernsteinMulti &m2)
 Addition of two polynomials.
BernsteinMulti Go::operator+ (const BernsteinMulti &m, double c)
 Addition of a polynomial with a scalar.
BernsteinMulti Go::operator+ (double c, const BernsteinMulti &m)
 Addition of a scalar with a polynomial.
BernsteinMulti Go::operator- (const BernsteinMulti &m1, const BernsteinMulti &m2)
 Subtraction of two polynomials.
BernsteinMulti Go::operator- (const BernsteinMulti &m, double c)
 Subtraction of a scalar from a polynomial.
BernsteinMulti Go::operator- (double c, const BernsteinMulti &m)
 Subtraction of a polynomial from a scalar.
BernsteinMulti Go::operator/ (const BernsteinMulti &m, double c)
 Division of a polynomial with a scalar.
std::istream & std::operator>> (std::istream &is, Go::BernsteinMulti &m)
 Read BernsteinMulti from input stream.
std::ostream & std::operator<< (std::ostream &os, const Go::BernsteinMulti &m)
 Write BernsteinMulti to output stream.
BernsteinPoly Go::operator * (const BernsteinPoly &p1, const BernsteinPoly &p2)
 Multiplication of two polynomials.
BernsteinPoly Go::operator * (const BernsteinPoly &p, double c)
 Multiplication of a polynomial with a scalar.
BernsteinPoly Go::operator * (double c, const BernsteinPoly &p)
 Multiplication of a scalar with a polynomial.
BernsteinPoly Go::operator+ (const BernsteinPoly &p1, const BernsteinPoly &p2)
 Addition of two polynomials.
BernsteinPoly Go::operator+ (double c, const BernsteinPoly &p)
 Addition of a scalar with a polynomial.
BernsteinPoly Go::operator+ (const BernsteinPoly &p, double c)
 Addition of a polynomial with a scalar.
BernsteinPoly Go::operator- (const BernsteinPoly &p1, const BernsteinPoly &p2)
 Subtraction of two polynomials.
BernsteinPoly Go::operator- (double c, const BernsteinPoly &p)
 Subtraction of a polynomial from a scalar.
BernsteinPoly Go::operator- (const BernsteinPoly &p, double c)
 Subtraction of a scalar from a polynomial.
BernsteinPoly Go::operator/ (const BernsteinPoly &p, double c)
 Division of a polynomial with a scalar.
std::istream & std::operator>> (std::istream &is, Go::BernsteinPoly &p)
 Read BernsteinPoly from input stream.
std::ostream & std::operator<< (std::ostream &os, const Go::BernsteinPoly &p)
 Write BernsteinPoly to output stream.
BernsteinTetrahedralPoly Go::operator * (const BernsteinTetrahedralPoly &p1, const BernsteinTetrahedralPoly &p2)
 Multiplication of two polynomials.
BernsteinTetrahedralPoly Go::operator * (const BernsteinTetrahedralPoly &p, double c)
 Multiplication of a polynomial with a scalar.
BernsteinTetrahedralPoly Go::operator * (double c, const BernsteinTetrahedralPoly &p)
 Multiplication of a scalar with a polynomial.
BernsteinTetrahedralPoly Go::operator+ (const BernsteinTetrahedralPoly &p1, const BernsteinTetrahedralPoly &p2)
 Addition of two polynomials.
BernsteinTetrahedralPoly Go::operator+ (double c, const BernsteinTetrahedralPoly &p)
 Addition of a scalar with a polynomial.
BernsteinTetrahedralPoly Go::operator+ (const BernsteinTetrahedralPoly &p, double c)
 Addition of a polynomial with a scalar.
BernsteinTetrahedralPoly Go::operator- (const BernsteinTetrahedralPoly &p1, const BernsteinTetrahedralPoly &p2)
 Subtraction of two polynomials.
BernsteinTetrahedralPoly Go::operator- (double c, const BernsteinTetrahedralPoly &p)
 Subtraction of a polynomial from a scalar.
BernsteinTetrahedralPoly Go::operator- (const BernsteinTetrahedralPoly &p, double c)
 Subtraction of a scalar from a polynomial.
BernsteinTetrahedralPoly Go::operator/ (const BernsteinTetrahedralPoly &p, double c)
 Division of a polynomial with a scalar.
std::istream & Go::operator>> (std::istream &is, Go::BernsteinTetrahedralPoly &p)
 Read BernsteinTetrahedralPoly from input stream.
std::ostream & Go::operator<< (std::ostream &os, const Go::BernsteinTetrahedralPoly &p)
 Write BernsteinTetrahedralPoly to output stream.
BernsteinTriangularPoly Go::operator * (const BernsteinTriangularPoly &p1, const BernsteinTriangularPoly &p2)
 Multiplication of two polynomials.
BernsteinTriangularPoly Go::operator * (const BernsteinTriangularPoly &p, double c)
 Multiplication of a polynomial with a scalar.
BernsteinTriangularPoly Go::operator * (double c, const BernsteinTriangularPoly &p)
 Multiplication of a scalar with a polynomial.
BernsteinTriangularPoly Go::operator+ (const BernsteinTriangularPoly &p1, const BernsteinTriangularPoly &p2)
 Addition of two polynomials.
BernsteinTriangularPoly Go::operator+ (double c, const BernsteinTriangularPoly &p)
 Addition of a scalar with a polynomial.
BernsteinTriangularPoly Go::operator+ (const BernsteinTriangularPoly &p, double c)
 Addition of a polynomial with a scalar.
BernsteinTriangularPoly Go::operator- (const BernsteinTriangularPoly &p1, const BernsteinTriangularPoly &p2)
 Subtraction of two polynomials.
BernsteinTriangularPoly Go::operator- (double c, const BernsteinTriangularPoly &p)
 Subtraction of a polynomial from a scalar.
BernsteinTriangularPoly Go::operator- (const BernsteinTriangularPoly &p, double c)
 Subtraction of a scalar from a polynomial.
BernsteinTriangularPoly Go::operator/ (const BernsteinTriangularPoly &p, double c)
 Division of a polynomial with a scalar.
std::istream & Go::operator>> (std::istream &is, Go::BernsteinTriangularPoly &p)
 Read BernsteinTriangularPoly from input stream.
std::ostream & Go::operator<< (std::ostream &os, const Go::BernsteinTriangularPoly &p)
 Write BernsteinTriangularPoly to output stream.
void Go::spline_to_bernstein (const SplineCurve &seg, int dd, BernsteinPoly &bp)
 Takes a segment (defined as having numCoefs() == order() and an order()-regular knot vector) and returns a bernstein polynomial equal to the curve's coordinate number dd.
void Go::spline_to_bernstein (const SplineSurface &pat, int dd, BernsteinMulti &bm)
 Converts the dd-component of a surface patch on SplineSurface form to a BernsteinMulti.
void Go::spline_to_bernstein (const SplineCurve &seg, std::vector< BernsteinPoly > &seg_bp)
 Converts a curve segment on SplineCurve form to a vector of BernsteinPolys.
void Go::spline_to_bernstein (const SplineSurface &pat, std::vector< BernsteinMulti > &pat_bm)
 Converts a surface patch on SplineSurface form to a vector of BernsteinMultis.
template<int Ndim>
void Go::splineToBernstein (const SplineCurve &segment, Array< BernsteinPoly, Ndim > &curve_bp)
 Converts a Bezier curve segment on SplineCurve form to an Array of Ndim BernsteinPolys.
template<int Ndim>
void Go::splineToBernstein (const SplineSurface &patch, Array< BernsteinMulti, Ndim > &surface_bm)
 Converts a Bezier surface patch on SplineSurface form to an Array of Ndim BernsteinMultis.
template<int Ndim>
void Go::bernsteinToSpline (const Array< BernsteinPoly, Ndim > &curve_bp, bool rational, SplineCurve &segment)
 Converts an Array of Ndim BernsteinPolys to a SplineCurve segment.
template<int Ndim>
void Go::bernsteinToSpline (const Array< BernsteinMulti, Ndim > &surface_bm, bool rational, SplineSurface &patch)
 Converts an Array of Ndim BernsteinMultis to a SplineSurface patch.
template<class _Tp>
_Tp std::identity_element (plus< _Tp >)
template<class _Tp>
_Tp std::identity_element (multiplies< _Tp >)
template<class _Tp, class _Integer, class _MonoidOperation>
_Tp std::__power (_Tp __x, _Integer __n, _MonoidOperation __oper)
template<class _Tp, class _Integer>
_Tp std::__power (_Tp __x, _Integer __n)
template<class _Tp, class _Integer, class _MonoidOperation>
_Tp std::power (_Tp __x, _Integer __n, _MonoidOperation __oper)
template<class _Tp, class _Integer>
_Tp std::power (_Tp __x, _Integer __n)
void Go::create_bary_coord_system2D (const SplineCurve &curve, BaryCoordSystem2D &bc)
 Creates a barycentric coordinate system from a given spline curve.
void Go::create_bary_coord_system3D (const SplineCurve &curve, BaryCoordSystem3D &bc)
 Creates a barycentric coordinate system from a given 3D spline curve.
void Go::create_bary_coord_system3D (const SplineSurface &surface, BaryCoordSystem3D &bc)
 Creates a barycentric coordinate system from a given spline surface.
void Go::create_bary_coord_system3D (const PointCloud3D &cloud, BaryCoordSystem3D &bc)
 Creates a barycentric coordinate system from a point cloud.
void Go::create_bary_coord_system3D (const BoundingBox &box, BaryCoordSystem3D &bc)
 Creates a barycentric coordinate system from a bounding box.
void Go::cart_to_bary (const SplineCurve &cv, const BaryCoordSystem2D &bc, SplineCurve &cv_bc)
 Creates a new curve with control points in 3 barycentric coordinates from the 2D input curve.
void Go::cart_to_bary (const SplineCurve &cv, const BaryCoordSystem3D &bc, SplineCurve &cv_bc)
 Creates a new curve with control points in 4 barycentric coordinates from the 3D input curve.
void Go::cart_to_bary (const SplineSurface &sf, const BaryCoordSystem3D &bc, SplineSurface &sf_bc)
 Creates a new surface with control points in 4 barycentric coordinates from the 3D input surface.
void Go::cart_to_bary (const PointCloud3D &cloud, const BaryCoordSystem3D &bc, PointCloud4D &cloud_bc)
 Creates a new point cloud in 4 barycentric coordinates from the 3D input cloud.
void Go::make_matrix (const SplineCurve &curve, int deg, std::vector< std::vector< double > > &mat)
 Make the matrix D.
void Go::make_matrix (const SplineSurface &surf, int deg, std::vector< std::vector< double > > &mat)
 Make the matrix D.
void Go::make_matrix (const PointCloud4D &cloud, int deg, std::vector< std::vector< double > > &mat)
 Make the matrix D.
void Go::make_implicit_svd (std::vector< std::vector< double > > &mat, std::vector< double > &b, double &sigma_min)
 Performs implicitization using SVD.
void Go::make_implicit_gauss (std::vector< std::vector< double > > &mat, std::vector< double > &b)
 Performs implicitization using Gaussian elimination.

Function Documentation

template<int Ndim>
void Go::bernsteinToSpline ( const Array< BernsteinMulti, Ndim > &  surface_bm,
bool  rational,
SplineSurface &  patch 
)

Converts an Array of Ndim BernsteinMultis to a SplineSurface patch.

If the wanted SplineSurface is rational, Ndim is equal to dim+1, where dim is the dimension of space. Furthermore, in surface_bm, the weights are included in the space part of the coefficients, i.e. they have the form wP1, wP2, ..., wPdim, w.

Parameters:
surface_bm an Array of Ndim BernsteinMultis
rational flag to indicate if the objects are rational
patch the resulting spline surface patch

Definition at line 216 of file BernsteinUtils.h.

template<int Ndim>
void Go::bernsteinToSpline ( const Array< BernsteinPoly, Ndim > &  curve_bp,
bool  rational,
SplineCurve &  segment 
)

Converts an Array of Ndim BernsteinPolys to a SplineCurve segment.

If the wanted SplineCurve is rational, Ndim is equal to dim+1, where dim is the dimension of space. Furthermore, in curve_bp, the weights are included in the space part of the coefficients, i.e. they have the form wP1, wP2, ..., wPdim, w.

Parameters:
curve_bp an Array of Ndim BernsteinPolys
rational flag to indicate if the objects are rational
segment the resulting spline curve segment

Definition at line 180 of file BernsteinUtils.h.

void Go::make_implicit_gauss ( std::vector< std::vector< double > > &  mat,
std::vector< double > &  b 
)

Performs implicitization using Gaussian elimination.

This method is suitable when the implicitization is exact. If the implicitization is approximate, make_implicit_svd() is better.

void Go::make_implicit_svd ( std::vector< std::vector< double > > &  mat,
std::vector< double > &  b,
double &  sigma_min 
)

Performs implicitization using SVD.

This method is suitable when the implicitization is approximate. If the implicitization is exact, make_implicit_gauss() is better. Based on the function SVD() from the newmat matrix library.

void Go::spline_to_bernstein ( const SplineCurve &  seg,
int  dd,
BernsteinPoly &  bp 
)

Takes a segment (defined as having numCoefs() == order() and an order()-regular knot vector) and returns a bernstein polynomial equal to the curve's coordinate number dd.

Allowed values for dd are in [0, dimension()-1] for nonrational segments, and in [0, dimension()] for rational (NURBS) segments. The polynomials returned in the rational case are the weighted coordinate functions for dd in [0, dimension()-1] and to the weight polynomial for dd equal to dimension().

template<int Ndim>
void Go::splineToBernstein ( const SplineSurface &  patch,
Array< BernsteinMulti, Ndim > &  surface_bm 
)

Converts a Bezier surface patch on SplineSurface form to an Array of Ndim BernsteinMultis.

If the SplineSurface is rational, Ndim is equal to dim+1, where dim is the dimension of space. Furthermore, in surface_bm, the weights are included in the space part of the coefficients, i.e. they have the form wP1, wP2, ..., wPdim, w.

Parameters:
patch the Bezier surface on SplineSurface form
surface_bm the resulting Array of BernsteinMultis

Definition at line 133 of file BernsteinUtils.h.

template<int Ndim>
void Go::splineToBernstein ( const SplineCurve &  segment,
Array< BernsteinPoly, Ndim > &  curve_bp 
)

Converts a Bezier curve segment on SplineCurve form to an Array of Ndim BernsteinPolys.

If the SplineCurve is rational, Ndim is equal to dim+1, where dim is the dimension of space. Furthermore, in curve_bp, the weights are included in the space part of the coefficients, i.e. they have the form wP1, wP2, ..., wPdim, w.

Parameters:
segment the Bezier curve segment on SplineCurve form
curve_bp the resulting Array of BernsteinPolys

Definition at line 92 of file BernsteinUtils.h.


Generated on Mon Jun 11 15:13:16 2007 for GoTools Implicitization Library by  doxygen 1.5.1