#include <ImplicitizeCurveAndVectorAlgo.h>
Public Member Functions | |
ImplicitizeCurveAndVectorAlgo () | |
Default constructor. | |
ImplicitizeCurveAndVectorAlgo (int deg) | |
Constructor. | |
ImplicitizeCurveAndVectorAlgo (const SplineCurve &crv, const Point &pt, int deg) | |
Constructor. | |
void | useSplineCurve (const SplineCurve &crv) |
Load the spline curve for the implicitization. | |
void | useVector (const Point &pt) |
Load the vector for the implicitization. | |
void | setDegree (int deg) |
Choose the degree of the implicit representation. | |
void | setTolerance (double tol) |
Set the tolerance. | |
int | perform () |
Perform the implicitization. | |
void | getResultData (BernsteinTetrahedralPoly &implicit, BaryCoordSystem3D &bc, double &sigma_min) |
Get the result of the implicitization. |
Input: A curve of type SplineCurve, a vector of type Point, and the degree that is chosen for the implicit surface.
Output: A barycentric coordinate system, and the Bernstein polynomial that represents the implicit surface.
The algorithm first defines a barycentric coordinate system in terms of a tetrahedron that is slightly larger than the bounding box of the spline curve. It then computes the Bernstein polynomial representing the implicit ruled surface defined by the spline curve and vector. If the chosen degree is too low to produce the exact result, an approximate implicit surface is produced. If the degree is too high, the resulting polynomial will be reducible and contain the exact implicitization as a factor. If the input curve consists of multiple segments, the output polynomial will be a product of the separate implicit surfaces, or an approximation of it.
Definition at line 71 of file ImplicitizeCurveAndVectorAlgo.h.
Go::ImplicitizeCurveAndVectorAlgo::ImplicitizeCurveAndVectorAlgo | ( | int | deg | ) | [inline, explicit] |
Constructor.
deg | degree of the implicit representation |
Definition at line 77 of file ImplicitizeCurveAndVectorAlgo.h.
Go::ImplicitizeCurveAndVectorAlgo::ImplicitizeCurveAndVectorAlgo | ( | const SplineCurve & | crv, | |
const Point & | pt, | |||
int | deg | |||
) | [inline] |
Constructor.
crv | 3D spline curve defining the implicit surface | |
pt | 3D vector defining the implicit surface | |
deg | degree of the implicit surface |
Definition at line 83 of file ImplicitizeCurveAndVectorAlgo.h.
void Go::ImplicitizeCurveAndVectorAlgo::useSplineCurve | ( | const SplineCurve & | crv | ) | [inline] |
Load the spline curve for the implicitization.
crv | curve on SplineCurve form |
Definition at line 89 of file ImplicitizeCurveAndVectorAlgo.h.
void Go::ImplicitizeCurveAndVectorAlgo::useVector | ( | const Point & | pt | ) | [inline] |
Load the vector for the implicitization.
pt | vector of type Point |
Definition at line 94 of file ImplicitizeCurveAndVectorAlgo.h.
void Go::ImplicitizeCurveAndVectorAlgo::setDegree | ( | int | deg | ) | [inline] |
Choose the degree of the implicit representation.
deg | degree |
Definition at line 99 of file ImplicitizeCurveAndVectorAlgo.h.
void Go::ImplicitizeCurveAndVectorAlgo::setTolerance | ( | double | tol | ) | [inline] |
Set the tolerance.
tol | tolerance; default value is 3.0e-15 |
Definition at line 104 of file ImplicitizeCurveAndVectorAlgo.h.
int Go::ImplicitizeCurveAndVectorAlgo::perform | ( | ) |
Perform the implicitization.
This function runs the implicitization algorithm.
void Go::ImplicitizeCurveAndVectorAlgo::getResultData | ( | BernsteinTetrahedralPoly & | implicit, | |
BaryCoordSystem3D & | bc, | |||
double & | sigma_min | |||
) | [inline] |
Get the result of the implicitization.
implicit | a BernsteinTetrahedralPoly representing the implicit surface | |
bc | the barycentric coordinate system in which the BernsteinTetrahedralPoly is defined |
Definition at line 116 of file ImplicitizeCurveAndVectorAlgo.h.