Name
gen_contour_nurbs_xldT_gen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld — Transform a NURBS curve into an XLD contour.
Herror gen_contour_nurbs_xld(Hobject* Contour, const HTuple& Rows, const HTuple& Cols, const HTuple& Knots, const HTuple& Weights, const HTuple& Degree, const HTuple& MaxError, const HTuple& MaxDistance)
HXLDCont HXLDCont::GenContourNurbsXld(const HTuple& Rows, const HTuple& Cols, const HTuple& Knots, const HTuple& Weights, const HTuple& Degree, const HTuple& MaxError, const HTuple& MaxDistance)
void GenContourNurbsXld(HObject* Contour, const HTuple& Rows, const HTuple& Cols, const HTuple& Knots, const HTuple& Weights, const HTuple& Degree, const HTuple& MaxError, const HTuple& MaxDistance)
void HXLDCont::GenContourNurbsXld(const HTuple& Rows, const HTuple& Cols, const HTuple& Knots, const HTuple& Weights, Hlong Degree, const HTuple& MaxError, const HTuple& MaxDistance)
void HXLDCont::GenContourNurbsXld(const HTuple& Rows, const HTuple& Cols, const HString& Knots, const HString& Weights, Hlong Degree, double MaxError, double MaxDistance)
void HXLDCont::GenContourNurbsXld(const HTuple& Rows, const HTuple& Cols, const char* Knots, const char* Weights, Hlong Degree, double MaxError, double MaxDistance)
void HOperatorSetX.GenContourNurbsXld(
[out] IHUntypedObjectX** Contour, [in] VARIANT Rows, [in] VARIANT Cols, [in] VARIANT Knots, [in] VARIANT Weights, [in] VARIANT Degree, [in] VARIANT MaxError, [in] VARIANT MaxDistance)
void HXLDContX.GenContourNurbsXld(
[in] VARIANT Rows, [in] VARIANT Cols, [in] VARIANT Knots, [in] VARIANT Weights, [in] Hlong Degree, [in] VARIANT MaxError, [in] VARIANT MaxDistance)
static void HOperatorSet.GenContourNurbsXld(out HObject contour, HTuple rows, HTuple cols, HTuple knots, HTuple weights, HTuple degree, HTuple maxError, HTuple maxDistance)
void HXLDCont.GenContourNurbsXld(HTuple rows, HTuple cols, HTuple knots, HTuple weights, int degree, HTuple maxError, HTuple maxDistance)
void HXLDCont.GenContourNurbsXld(HTuple rows, HTuple cols, string knots, string weights, int degree, double maxError, double maxDistance)
gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld generates an XLD ContourContourContourContourContourcontour that
approximates a
NURBS curve (non-uniform rational B-Spline curve). The NURBS curve is
specified by its DegreeDegreeDegreeDegreeDegreedegree, a control polygon (via RowsRowsRowsRowsRowsrows and
ColsColsColsColsColscols), a WeightsWeightsWeightsWeightsWeightsweights vector and a KnotsKnotsKnotsKnotsKnotsknots
vector.
The DegreeDegreeDegreeDegreeDegreedegree of the curve determines the grade of differentiability of
the curve. The curve lies within the convex hull of its control
polygon (RowsRowsRowsRowsRowsrows,ColsColsColsColsColscols). The weights in WeightsWeightsWeightsWeightsWeightsweights
determine how much the curve is
attracted by the individual control points (RowsRowsRowsRowsRowsrows,ColsColsColsColsColscols).
A WeightsWeightsWeightsWeightsWeightsweights vector with equal weights for all
control points is generated if 'auto'"auto""auto""auto""auto""auto" is chosen.
The KnotsKnotsKnotsKnotsKnotsknots vector describes the domain of the curve.
Typically, this parameter can be set to 'auto'"auto""auto""auto""auto""auto".
The accuracy of the generated ContourContourContourContourContourcontour depends on the two parameters
MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance and MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError. MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance limits the
maximum distance of two subsequent ContourContourContourContourContourcontour points. The maximum
distance between the generated ContourContourContourContourContourcontour and the actual NURBS curve
is limited to MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError. By default the approximation must fulfill
both constraints, but it is possible to set one of these parameters to
'omit'. The lower MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError and MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance are chosen
the better is the approximation of the curve. Note that all ContourContourContourContourContourcontour
points lie exactly on the curve (except for numerical inaccuracies).
Definition
A NURBS curve C of degree p is given by
The basis functions N_{i,p} are defined by
Thus, each NURBS curve is determined by its DegreeDegreeDegreeDegreeDegreedegree p, its control
Polygon P_{0},...,P_{n-1} (RowsRowsRowsRowsRowsrows and ColsColsColsColsColscols), its weight
vector w = (w_{0}, ..., w_{n-1}) (WeightsWeightsWeightsWeightsWeightsweights),
and its knot vector u = (u_{0},..., u_{n+p}) (KnotsKnotsKnotsKnotsKnotsknots).
The grade of differentiability of the curve is set via the degree p. At
least p+1 control points P_{i} are required to form a valid curve.
The knot vector u describes the domain of the curve. Its length must be
n+p+1 and its entries must be monotonically increasing.
Every entry u_{i}
stands for a knot between the curve segments [u_{i-1}, u_{i}) and
[u_{i},u_{i+1}). Each curve segment [u_{i}, u_{i+1}) lies within the
convex hull of the control points P_{i-p}, .., P_{i}. For every curve
segment of length zero, the differentiability at knot k decreases.
The number of occurrences of each
knot in the knot vector is called multiplicity. The maximum multiplicity of
one knot is p. Only the start and the end point's multiplicity can be p+1
(which in fact is the case for most curves, because in this case start and
end point of the curve correspond to the first respectively last point of
the control polygon).
If start and/or end point do not have full multiplicity, the domain of
the curve is restricted to [u_{p},u_{n}]. The weights w_{i} determine
the influence of the individual control Points P_{i} on the curve.
Closed Curves: If start and end point are equal (P_{0}=P_{n-1})
and KnotsKnotsKnotsKnotsKnotsknots is set to 'auto', the curve is closed automatically such
that all knots feature multiplicity one. Note that in this case the length of
WeightsWeightsWeightsWeightsWeightsweights is required to be n-1.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
The contour that approximates the NURBS curve.
Row coordinates of the control polygon.
Number of elements: Rows == Cols && Rows >= Degree + 1
Column coordinates of the control polygon.
Number of elements: Cols == Rows && Cols >= Degree + 1
The knot vector u.
Default value:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Suggested values: 'auto'"auto""auto""auto""auto""auto"
The weight vector w.
Number of elements: Weights == Rows
Default value:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Suggested values: 'auto'"auto""auto""auto""auto""auto"
Restriction: Weights > 0.0
The degree p of the NURBS curve.
Default value: 3
Suggested values: 2, 3, 4, 5
Restriction: Degree >= 2
Maximum distance between the NURBS
curve and its approximation.
Default value: 1.0
Suggested values: 'omit'"omit""omit""omit""omit""omit", 1.0, 2.0, 3.0, 4.0, 5.0
Restriction: MaxError > 0.0
Maximum distance between two subsequent
ContourContourContourContourContourcontour points.
Default value: 5.0
Suggested values: 'omit'"omit""omit""omit""omit""omit", 1.0, 2.0, 3.0, 4.0, 5.0
Restriction: MaxDistance > 0.0
* use a polygon XLD contour as control polygon and approximate
* the NURBS curve as contour
get_contour_xld(Polygon, Row, Col)
gen_contour_nurbs_xld(NURBSContour, Row, Col, 'auto', 'auto', 3, 1.0, 10.0)
gen_nurbs_interpgen_nurbs_interpGenNurbsInterpgen_nurbs_interpGenNurbsInterpGenNurbsInterp
gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld
L. Piegl, W. Tiller: ”The NURBS Book”, 2nd Edition, Springer, 1997.
Foundation