ClassesClassesClassesClasses | | | | Operators

gen_contour_nurbs_xldT_gen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld (Operator)

Name

gen_contour_nurbs_xldT_gen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld — Transform a NURBS curve into an XLD contour.

Signature

gen_contour_nurbs_xld( : Contour : Rows, Cols, Knots, Weights, Degree, MaxError, MaxDistance : )

Herror T_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)

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)

Description

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.

Parallelization

Parameters

ContourContourContourContourContourcontour (output_object)  xld_cont objectHXLDContHXLDContHXLDContHXLDContXHobject *

The contour that approximates the NURBS curve.

RowsRowsRowsRowsRowsrows (input_control)  coordinates.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Row coordinates of the control polygon.

Number of elements: Rows == Cols && Rows >= Degree + 1

ColsColsColsColsColscols (input_control)  coordinates.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Column coordinates of the control polygon.

Number of elements: Cols == Rows && Cols >= Degree + 1

KnotsKnotsKnotsKnotsKnotsknots (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string / real) (string / double) (HString / double) (char* / double) (BSTR / double) (char* / double)

The knot vector u.

Default value: 'auto' "auto" "auto" "auto" "auto" "auto"

Suggested values: 'auto'"auto""auto""auto""auto""auto"

WeightsWeightsWeightsWeightsWeightsweights (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string / real) (string / double) (HString / double) (char* / double) (BSTR / double) (char* / double)

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

DegreeDegreeDegreeDegreeDegreedegree (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

The degree p of the NURBS curve.

Default value: 3

Suggested values: 2, 3, 4, 5

Restriction: Degree >= 2

MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / string) (double / string) (double / HString) (double / char*) (double / BSTR) (double / char*)

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

MaxDistanceMaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / string) (double / string) (double / HString) (double / char*) (double / BSTR) (double / char*)

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

Example (HDevelop)

* 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)

Possible Predecessors

gen_nurbs_interpgen_nurbs_interpGenNurbsInterpgen_nurbs_interpGenNurbsInterpGenNurbsInterp

Possible Successors

gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld

References

L. Piegl, W. Tiller: ”The NURBS Book”, 2nd Edition, Springer, 1997.

Module

Foundation


ClassesClassesClassesClasses | | | | Operators