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. |
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.
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.
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.
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().
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.
patch | the Bezier surface on SplineSurface form | |
surface_bm | the resulting Array of BernsteinMultis |
Definition at line 133 of file BernsteinUtils.h.
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.
segment | the Bezier curve segment on SplineCurve form | |
curve_bp | the resulting Array of BernsteinPolys |
Definition at line 92 of file BernsteinUtils.h.