Synopsis
PDX_MSGT gdx_ApproxG1CurveWithG1Nurb(long option, int model, PDX_MSGT (*eval_curv)(), double t_start, double t_end, int degree, double dev_tol, double pts_tol, long method, MDA_PTR *gdx_nc_ptr)
Purpose
Approximate a G1-continuous curve with a G1-continuous Nurb curve.
Description
Approximate a G1-continuous curve (or segment thereof) with a G1-continuous nonrational Nurb curve of 2 <= degree <= 5. The output Nurb curve is parameterized on [0,1]. It is not checked whether the input curve is G1, but if it is not, then the approximating Nurb curve may not be within the specified tolerance.
Input
option
GDX_LEAVE_LOCKED
If set, the returned entity will be left locked; in this case it is up to the caller to call mda_UnlockEntity for each entity returned. Note: the entity structure can be accessed via mda_GetLockedAddr.
model
The model to create GDX entity in.
eval_curv
A function which evaluates points and first derivative vectors on the curve to be approximated. This function must be declared as: PDX_MSGT eval_curv(double t, int nder, double *ders) nder = 0 or 1 must hold. ders[0]-ders[2] is the curve point, ders[3]-ders[5] is the first derivative if nders = 1.
t_start
Start parameter of curve segment to be approximated.
t_end
End parameter of curve segment to be approximated.
degree
Degree of the output Nurb curve (must be >= 2 and <= 5).
dev_tol
Maximum desired absolute deviation error between the curve segment and the Nurb curve.
pts_tol
Tolerance representing zero distance between two points on the curve; i.e. coincident points tolerance for the space in which the curve lies.
method
GDX_UNI_PARAMS
This method approximates the geometry to within tolerance, and also tries to maintain roughly the parameterization of the original curve segment (scaled to [0,1]).
GDX_UNI_PNTS
This method approximates only the geometry of the original curve segment. Parameterization is roughly uniform.
Output
gdx_nc_ptr
Nurb curve fitting the curve segment.
Return
GDX_NOERR
GDX_BADDATA
Low level error return
.fi