nurbs.h File Reference

Ayam NURBS API. More...

Go to the source code of this file.

Functions

int ay_act_leastSquares (double *Q, int m, int n, int p, int kt, double **U, double **P)
 Do a least squares approximation for a curve.
int ay_act_leastSquaresClosed (double *Q, int m, int n, int p, int kt, double **U, double **P)
 Do a least squares approximation for a closed curve.
void ay_act_multmatrixmn (int m, int n, double *M1, double *M2, double *R)
 Multiply two matrices.
int ay_act_solve (int m, int n, int stride, double *A, double *B, double *X)
 Solve A*X=B.
int ay_act_resize (ay_acurve_object *curve, int new_length)
 Resize a approximating curve.
int ay_act_revert (ay_acurve_object *curve)
 Revert a approximating curve.
int ay_act_getpntfromindex (ay_acurve_object *curve, int index, double **p)
 Get point from approximating curve.
int ay_act_approxtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to approximate selected NURBS curves.
int ay_act_solveaxbtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to solve a linear equation system.
double ay_apt_round (double d)
 round double similar to C99
int ay_apt_getpntfromindex (ay_apatch_object *patch, int indexu, int indexv, double **p)
 Get point from approximating patch.
int ay_apt_swapuv (ay_apatch_object *ap)
 Flip UV of approximating patch.
void ay_apt_revertu (ay_apatch_object *ap)
 Revert approximating patch in U direction.
void ay_apt_revertv (ay_apatch_object *ap)
 Revert approximating patch in V direction.
int ay_apt_approximateuv (double *cv, int width, int height, int awidth, int aheight, int uorder, int vorder, int uknottype, int vknottype, int closeu, int closev, ay_nurbpatch_object **np)
 Approximate a 2D array of data points first in U then in V.
int ay_apt_approximatevu (double *cv, int width, int height, int awidth, int aheight, int uorder, int vorder, int uknottype, int vknottype, int closeu, int closev, ay_nurbpatch_object **np)
 Approximate a 2D array of data points first in V then in U.
int ay_apt_approximateu (double *cv, int width, int height, int awidth, int uorder, int vorder, int uknottype, int vknottype, int closeu, int closev, ay_nurbpatch_object **np)
 Approximate a 2D array of data points in U.
int ay_apt_approximatev (double *cv, int width, int height, int aheight, int uorder, int vorder, int uknottype, int vknottype, int closeu, int closev, ay_nurbpatch_object **np)
 Approximate a 2D array of data points in V.
int ay_apt_approxtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to approximate selected NURBS surfaces.
void ay_bevelt_parsetags (ay_tag *tag, ay_bparam *params)
 Parse BP (BevelParameter) tags.
int ay_bevelt_addbevels (ay_bparam *bparams, ay_cparam *cparams, ay_object *o, ay_object **dst)
 Add bevels to a surface object.
int ay_bevelt_createc (double radius, ay_object *o1, ay_object *o2, ay_nurbpatch_object **bevel)
 Create bevel surface from cross section bevel curve.
int ay_bevelt_createc3d (double radius, int revert, ay_object *o1, ay_object *o2, double *n, int nstride, double *t, int tstride, ay_nurbpatch_object **bevel)
 Create bevel surface from 3D curve and cross section bevel curve.
int ay_bevelt_createroundtocap (double radius, int revert, ay_object *o1, double *t, int tstride, ay_nurbpatch_object **bevel)
 Create bevel surface from 3D curve that rounds to the cap.
int ay_bevelt_createroundtonormal (double radius, int revert, ay_object *o1, double *nt, int nstride, double *ta, int tstride, double *mn, ay_nurbpatch_object **bevel)
 Create bevel surface from 3D curve that rounds to the mean normal.
int ay_bevelt_findbevelcurve (int index, ay_object **c)
 Find cross section bevel curve.
int ay_bevelt_createconcat (int side, ay_object *o, ay_object *c, ay_object **bevel)
 Create bevel by surface concatenations fillet creation.
int ay_capt_addcaps (ay_cparam *cparams, ay_bparam *bparams, ay_object *o, ay_object **dst)
 Create all caps for a surface.
int ay_capt_crtsimplecap (ay_object *c, int mode, double frac, double *mp, ay_object **cap)
 Create simple cap from (convex) curve.
int ay_capt_integrate (ay_object *c, int side, int knottype, ay_object *s)
 Integrate cap into the progenitor surface.
int ay_capt_crttrimcap (ay_object *c, ay_object **cap)
 Create trim cap from (planar) curve(s).
int ay_capt_crtgordoncap (ay_object *c, ay_object **cap)
 Create gordon cap from non planar curve.
void ay_capt_parsetags (ay_tag *tag, ay_cparam *params)
 Parse CP (CapParameter) tags.
void ay_capt_createtags (ay_object *o, int *caps)
 Create CP (CapParameter) tags.
int ay_capt_capnurbpatch (ay_nurbpatch_object *np, int side, double *mpp)
 Cap a NURBS surface.
int ay_capt_capstcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to cap a surface.
int ay_ict_interpolateC2C (int length, double sdlen, double edlen, int param_type, int have_end_derivs, double *sderiv, double *ederiv, double *controlv, ay_nurbcurve_object **c)
 Do a global C2 cubic interpolation.
int ay_ict_interpolateC2CClosed (int length, double sdlen, double edlen, int param_type, int have_end_derivs, double *sderiv, double *ederiv, double *controlv, ay_nurbcurve_object **c)
 Do a global C2 cubic interpolation for a closed curve.
int ay_ict_interpolateG3D (int iorder, int length, double sdlen, double edlen, int have_end_derivs, int param_type, double *controlv, double *sderiv, double *ederiv, ay_nurbcurve_object **c)
 Do a global 3D interpolation.
int ay_ict_interpolateG3DClosed (int iorder, int length, double sdlen, double edlen, int have_end_derivs, int param_type, double *controlv, double *sderiv, double *ederiv, ay_nurbcurve_object **c)
 Do a global 3D interpolation for a closed curve.
int ay_ict_resize (ay_icurve_object *curve, int new_length)
 Resize a interpolating curve.
int ay_ict_revert (ay_icurve_object *curve)
 Revert a interpolating curve.
int ay_ict_getpntfromindex (ay_icurve_object *curve, int index, double **p)
 Get point from a interpolating curve.
int ay_ict_interptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to interpolate selected NURBS curves.
int ay_ipt_getpntfromindex (ay_ipatch_object *patch, int indexu, int indexv, double **p)
 Get control point from index.
int ay_ipt_swapuv (ay_ipatch_object *ip)
 Flip UV of interpolating patch.
void ay_ipt_revertu (ay_ipatch_object *ip)
 Revert interpolating patch in U direction.
void ay_ipt_revertv (ay_ipatch_object *ip)
 Revert interpolating patch in V direction.
int ay_ipt_interpolateu (ay_nurbpatch_object *np, int order, int ktype)
 Interpolate NURBS patch in U direction.
int ay_ipt_interpolateud (ay_nurbpatch_object *np, int order, int ktype, int dmode, double sdlen, double edlen, double *sd, double *ed)
 Interpolate NURBS patch with end derivatives in U direction.
int ay_ipt_interpolateudc (ay_nurbpatch_object *np, int order, int ktype, int dmode, double sdlen, double edlen, double *sd, double *ed)
 Interpolate NURBS patch with end derivatives in U direction (closed).
int ay_ipt_interpolatev (ay_nurbpatch_object *np, int order, int ktype)
 Interpolate NURBS patch in V direction.
int ay_ipt_interpolatevd (ay_nurbpatch_object *np, int order, int ktype, int dmode, double sdlen, double edlen, double *sd, double *ed)
 Interpolate NURBS patch with end derivatives in V direction.
int ay_ipt_interpolatevdc (ay_nurbpatch_object *np, int order, int ktype, int dmode, double sdlen, double edlen, double *sd, double *ed)
 Interpolate NURBS patch with end derivatives in V direction (closed).
int ay_ipt_interpuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to interpolate selected NURBS surfaces.
int ay_ipt_crtderiv (int mode, ay_ipatch_object *ip)
 Create default derivative vectors.
int ay_knots_createnp (ay_nurbpatch_object *patch)
 Create knots for a NURBS patch.
int ay_knots_createnc (ay_nurbcurve_object *curve)
 Create knots for a NURBS curve.
int ay_knots_check (int length, int order, int knot_count, double *knotv)
 Check a knot vector for errors.
void ay_knots_printerr (char *location, int errcode)
 Print knot error message received by knots_check() to Ayam console.
int ay_knots_rescaletorange (int n, double *knotv, double rmin, double rmax)
 Rescale a knot vector to new lower/upper bounds.
int ay_knots_rescaletomindist (int n, double *knotv, double mindist)
 Rescale a knot vector to a minimum knot distance.
int ay_knots_unify (double *Ua, int Ualen, double *Ub, int Ublen, double **Ubar, int *Ubarlen)
 Unify two knot vectors.
int ay_knots_mergenc (ay_nurbcurve_object *curve, double *Ubar, int Ubarlen)
 Merge knot vector into curve knots.
int ay_knots_mergenp (ay_nurbpatch_object *patch, double *Ubar, int Ubarlen, double *Vbar, int Vbarlen)
 Merge knot vectors into patch knots.
int ay_knots_getuminmax (ay_object *o, int order, int knots, double *knotv, double *umin, double *umax)
 Calculate valid knot bounds.
int ay_knots_getvminmax (ay_object *o, int order, int knots, double *knotv, double *vmin, double *vmax)
 Calculate valid knot bounds.
int ay_knots_setuminmax (ay_object *o, double umin, double umax)
 Set valid knot bounds (create UMM tag).
int ay_knots_setvminmax (ay_object *o, double vmin, double vmax)
 Set valid knot bounds (create VMM tag).
int ay_knots_coarsen (int order, int knotvlen, double *knotv, int count, double **newknotv)
 Coarsen a knot vector.
int ay_knots_chordparam (double *Q, int Qlen, int stride, double **U)
 Create chordal parameterized knots.
int ay_knots_centriparam (double *Q, int Qlen, int stride, double **U)
 Create centripetal parameterized knots.
int ay_knots_chordparamnp (int dir, double *Q, int width, int height, int stride, double **U)
 Create chordal parameterized knots for a surface.
int ay_knots_centriparamnp (int dir, double *Q, int width, int height, int stride, double **U)
 Create centripetal parameterized knots for a surface.
int ay_knots_isclamped (unsigned int side, unsigned int order, double *U, unsigned int Ulen, double eps)
 Determine whether a knot vector is clamped.
int ay_knots_classify (unsigned int order, double *U, unsigned int Ulen, double eps)
 Classify a knot vector (returns AY_KT*).
int ay_knots_revert (double *U, int ulen)
 Revert a knot vector.
int ay_knots_getdisc (int Ulen, double *U, int order, int *Udlen, double **Ud)
 Get discontinuous parametric values of a NURBS curve/surface.
int ay_knots_remove (unsigned int index, int order, int length, double **U)
 Remove knot from a knot vector.
int ay_knots_insert (unsigned int index, int order, int length, double **U)
 Insert knot into a knot vector.
void ay_knots_match (ay_nurbcurve_object *nc, double eps, double *u)
 Find matching knot.
int ay_knots_evalparam (char **fpname, double u, int relative, int length, int order, double *knotv, double *v)
 Manage a parameter for evaluation.
int ay_knots_isbezierspline (int length, int order, double *U)
 Check for Bezier Spline knot type.
int ay_knots_init (Tcl_Interp *interp)
 Initialize the knots module.
int ay_nb_LUDecompose (int n, double *A, int *pivot)
 Do a LU decomposition of the nxn matrix A.
int ay_nb_LUInvert (int n, double *inv, int *pivot)
 Invert the nxn matrix inv.
int ay_nb_GlobalInterpolation4D (int n, double *Q, double *ub, double *Uc, int d)
 Interpolate the n+1 4D points in Q.
int ay_nb_GlobalInterpolation4DD (int n, double *Q, double *ub, double *Uc, int d, double *D1, double *D2)
 Interpolate the n+1 4D points in Q with end derivatives.
int ay_nb_RemoveKnotCurve4D (int n, int p, double *U, double *Pw, double tol, int r, int s, int num, double *Ubar, double *Qw)
 Remove a knot from a NURBS curve.
void ay_nb_Bin (int maxn, int maxk, double *bin)
 Calculate binomial coefficients.
int ay_nb_DegreeElevateCurve4D (int stride, int n, int p, double *U, double *Pw, int t, int *nh, double *Uh, double *Qw)
 Elevate degree of a NURBS curve.
int ay_nb_SolveTridiagonal (int n, double *Q, double *U, double *P)
 Solve tridiagonal equation system.
int ay_nb_InsertKnotCurve4D (int np, int p, double *UP, double *Pw, double u, int k, int s, int r, int *nq, double *UQ, double *Qw)
 Insert knot into rational NURBS curve.
int ay_nb_InsertKnotCurve3D (int np, int p, double *UP, double *P, double u, int k, int s, int r, int *nq, double *UQ, double *Q)
 Insert knot into non-rational NURBS curve.
int ay_nb_FindSpan (int n, int p, double u, double *U)
 Find knot span containing parameter u.
int ay_nb_FindSpanMult (int n, int p, double u, double *U, int *s)
 Find knot span containing parameter u and calculate multiplicity.
int ay_nb_BasisFuns (int i, double u, int p, double *U, double *N)
 Calculate NURBS basis functions.
void ay_nb_BasisFunsM (int i, double u, int p, double *U, double *N)
 Calculate NURBS basis functions in provided memory.
int ay_nb_CurvePoint4D (int n, int p, double *U, double *Pw, double u, double *C)
 Calculate a point on a rational NURBS curve.
void ay_nb_CurvePoint4DM (int n, int p, double *U, double *Pw, double u, double *C)
 Calculate a point on a rational NURBS curve in provided memory.
int ay_nb_CurvePoint3D (int n, int p, double *U, double *P, double u, double *C)
 Calculate a point on a non-rational NURBS curve.
void ay_nb_CurvePoint3DM (int n, int p, double *U, double *P, double u, double *C)
 Calculate a point on a non-rational NURBS curve in provided memory.
int ay_nb_SurfacePoint4D (int n, int m, int p, int q, double *U, double *V, double *Pw, double u, double v, double *C)
 Calculate a point on a rational NURBS surface.
int ay_nb_SurfacePoint3D (int n, int m, int p, int q, double *U, double *V, double *P, double u, double v, double *C)
 Calculate a point on a non-rational NURBS surface.
void ay_nb_DersBasisFuns (int i, double u, int p, int n, double *U, double *ders)
 Calculate derivatives of NURBS basis funs.
void ay_nb_FirstDer3D (int n, int p, double *U, double *P, double u, double *C1)
 Calculate first derivative of non-rational NURBS curve.
void ay_nb_SecondDer3D (int n, int p, double *U, double *P, double u, double *C2)
 Calculate second derivative of non-rational NURBS curve.
void ay_nb_FirstDer4D (int n, int p, double *U, double *Pw, double u, double *C1)
 Calculate first derivative of rational NURBS curve.
void ay_nb_SecondDer4D (int n, int p, double *U, double *Pw, double u, double *C2)
 Calculate second derivative of rational NURBS curve.
void ay_nb_FirstDerSurf4D (int n, int m, int p, int q, double *U, double *V, double *Pw, double u, double v, double *C)
 Calculate first derivative of rational NURBS surface.
int ay_nb_FirstDerSurf4DMSize (int p, int q)
 Calculate size of memory area needed by ay_nb_FirstDerSurf4DM().
void ay_nb_FirstDerSurf4DM (int n, int m, int p, int q, double *U, double *V, double *Pw, double u, double v, double *C)
 Calculate first derivative of rational NURBS surface.
void ay_nb_FirstDerSurf3D (int n, int m, int p, int q, double *U, double *V, double *P, double u, double v, double *C)
 Calculate first derivative of non-rational NURBS surface.
int ay_nb_FirstDerSurf3DMSize (int p, int q)
 Calculate size of memory area needed by ay_nb_FirstDerSurf3DM().
void ay_nb_FirstDerSurf3DM (int n, int m, int p, int q, double *U, double *V, double *P, double u, double v, double *C)
 Calculate first derivative of non-rational NURBS surface.
void ay_nb_SecondDerSurf3D (int n, int m, int p, int q, double *U, double *V, double *P, double u, double v, double *C)
 Calculate second derivative of non-rational NURBS curve.
void ay_nb_SecondDerSurf4D (int n, int m, int p, int q, double *U, double *V, double *Pw, double u, double v, double *C)
 Calculate second derivative of rational NURBS curve.
int ay_nb_CreateNurbsCircleArc (double r, double ths, double the, int *length, double **knotv, double **controlv)
 Create NURBS circle or arc.
void ay_nb_RefineKnotVectCurve (int is_rat, int n, int p, double *U, double *Pw, double *X, int r, double *Ubar, double *Qw)
 Refine knot vector of NURBS curve with a new vector.
int ay_nb_DegreeElevateSurfU4D (int stride, int w, int h, int p, double *U, double *Pw, int t, int *nw, double *Uh, double *Qw)
 Elevate degree of NURBS surface in U direction.
int ay_nb_DegreeElevateSurfV4D (int stride, int w, int h, int q, double *V, double *Pw, int t, int *nh, double *Vh, double *Qw)
 Elevate degree of NURBS surface in V direction.
int ay_nb_RefineKnotVectSurfU (int is_rat, int w, int h, int p, double *U, double *Pw, double *X, int r, double *Ubar, double *Qw)
 Refine U knot vector of NURBS surface with a new vector.
int ay_nb_RefineKnotVectSurfV (int is_rat, int w, int h, int p, double *V, double *Pw, double *X, int r, double *Vbar, double *Qw)
 Refine V knot vector of NURBS surface with a new vector.
int ay_nb_DecomposeCurve (int stride, int n, int p, double *U, double *Pw, int *nb, double **Qw)
 Decompose NURBS curve into Bezier segments.
int ay_nb_InsertKnotSurfU (int stride, int w, int h, int p, double *UP, double *Pw, double u, int k, int s, int r, double *UQ, double *Qw)
 Insert knot into NURBS surface in U direction.
int ay_nb_InsertKnotSurfV (int stride, int w, int h, int q, double *VP, double *Pw, double v, int k, int s, int r, double *VQ, double *Qw)
 Insert knot into NURBS surface in V direction.
int ay_nb_RemoveKnotSurfV (int w, int h, int q, double *V, double *Pw, double tol, int r, int s, int num, double *Vbar, double *Qw)
 Remove knot from NURBS surface in V direction.
void ay_nb_UnclampCurve (int israt, int n, int p, int s, double *U, double *Pw, int updateknots)
 Unclamp a NURBS curve.
void ay_nb_UnclampSurfaceU (int israt, int w, int h, int p, int s, double *U, double *Pw)
 Unclamp a NURBS surface in U direction.
void ay_nb_UnclampSurfaceV (int israt, int w, int h, int q, int s, double *V, double *Pw)
 Unclamp a NURBS surface in V direction.
int ay_nb_DegreeReduceCurve4D (int n, int p, double *U, double *Qw, double tol, int *nh, double *Uh, double *Pw)
 Reduce degree of NURBS curve.
int ay_nb_DegreeReduceSurfV (int w, int h, int q, double *V, double *Pw, double tol, int *nh, double *Vbar, double *Qw)
 Reduce degree of NURBS surface.
void ay_nb_MakeOneArc (double *P0, double *T0, double *P2, double *T2, double *P, double *P1, double *w1)
 Create conic arc Bezier curve.
double ay_nb_InsertControlCurve4D (int n, int p, double *U, double *Pw, int qi, double *Q)
 Compute knot that relates to an inserted control point.
int ay_nct_create (int order, int length, int knot_type, double *controlv, double *knotv, ay_nurbcurve_object **curveptr)
 Create NURBS curve object.
void ay_nct_destroy (ay_nurbcurve_object *curve)
 Gracefully destroy NURBS curve object.
void ay_nct_clearmp (ay_nurbcurve_object *c)
 Remove multiple points from curve.
void ay_nct_recreatemp (ay_nurbcurve_object *c)
 Re-create multiple points for curve.
int ay_nct_collapseselp (ay_object *o)
 Collapse selected points to multiple points.
int ay_nct_explodemp (ay_object *o)
 Explode selected multiple points.
int ay_nct_resize (ay_nurbcurve_object *curve, int new_length)
 Change the number of control points of a NURBS curve.
int ay_nct_close (ay_nurbcurve_object *curve)
 Close NURBS curve.
int ay_nct_open (ay_nurbcurve_object *curve)
 Open a NURBS curve.
int ay_nct_refinearray (double *Pw, int len, int stride, ay_point *selp, double **Qw, int *Qwlen)
 Refine a 1D control point array.
int ay_nct_revertarr (double *cv, int cvlen, int stride)
 Revert array.
int ay_nct_revert (ay_nurbcurve_object *curve)
 Revert NURBS curve.
int ay_nct_refinekn (ay_nurbcurve_object *curve, int maintain_ends, double *newknotv, int newknotvlen)
 Refine NURBS curve knots.
int ay_nct_refinecv (ay_nurbcurve_object *curve, ay_point *selp)
 Refine NURBS curve control points.
int ay_nct_refinekntcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to refine the knots of selected NURBS curves.
int ay_nct_clampperiodic (ay_nurbcurve_object *curve)
 Clamp periodic NURBS curve on both ends.
int ay_nct_clamp (ay_nurbcurve_object *curve, int side)
 Clamp NURBS curve.
int ay_nct_clamptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to clamp selected NURBS curves.
int ay_nct_elevate (ay_nurbcurve_object *curve, int new_order)
 Elevate order of NURBS curve.
int ay_nct_elevatetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to elevate order of selected NURBS curves.
int ay_nct_insertkntcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to insert knot into selected NURBS curves.
int ay_nct_findu (struct Togl *togl, ay_object *o, double *winXY, double *worldXYZ, double *u)
 Find point on NURBS curve.
int ay_nct_finducb (struct Togl *togl, int argc, char *argv[])
 Find point on NURBS curve modelling action.
int ay_nct_split (ay_object *src, double u, int relative, ay_object **result)
 Split NURBS curve.
int ay_nct_splittcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to split selected NURBS curves.
int ay_nct_concatctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to concatenate selected curves.
int ay_nct_crtncircle (double radius, ay_nurbcurve_object **curve)
 Create a NURBS circle.
int ay_nct_crtncirclearc (double radius, double arc, ay_nurbcurve_object **curve)
 Create a circular NURBS arc.
int ay_nct_crtnhcircle (double radius, ay_nurbcurve_object **curve)
 Create a NURBS half-circle.
int ay_nct_crtncirclefrom3pnts (double *A, double *B, double *C, ay_nurbcurve_object **ncircle)
 Create a NURBS circle from three points.
int ay_nct_crtncirclearcfrom3pnts (double *A, double *B, double *C, int keep_cvs, ay_nurbcurve_object **ncirclearc)
 Create a NURBS circle arc from three points.
int ay_nct_crtnconicarc (double *p0, double *t0, double *p2, double *t2, double *p1, int keep_cvs, ay_nurbcurve_object **narc)
 Create a NURBS conic arc.
int ay_nct_crtncircletcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a NURBS circle.
int ay_nct_crtnparabola (double ymin, double ymax, double rmax, ay_nurbcurve_object **curve)
 Create a NURBS parabola.
int ay_nct_crtnhyperbola (double ymin, double ymax, double a, double b, ay_nurbcurve_object **curve)
 Create a NURBS hyperbola.
int ay_nct_crtnparabolatcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a NURBS parabola or hyperbola.
int ay_nct_crtnconicarctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a NURBS conic arc or circle arc.
int ay_nct_crtrecttcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a NURBS rectangle.
int ay_nct_crtcircbspcv (int sections, double radius, double arc, int order, double **result)
 Create control points for a circular B-Spline curve.
int ay_nct_crtcircbsp (int sections, double radius, double arc, int order, ay_nurbcurve_object **result)
 Create a circular B-Spline curve.
int ay_nct_crtclosedbsptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a circular B-Spline curve.
int ay_nct_getorientation (ay_nurbcurve_object *curve, int stride, int report, int plane, double *oangle)
 Calculate orientation of planar aligned NURBS curve.
int ay_nct_getorientation3d (ay_nurbcurve_object *curve, int stride, int report, double *orient)
 Calculate orientation of NURBS curve.
int ay_nct_getwinding (ay_nurbcurve_object *curve, double *v)
 Calculate winding of arbitrary (3D) NURBS curve.
int ay_nct_isclosed (ay_nurbcurve_object *nc)
 Check NURBS curve closeness.
void ay_nct_settype (ay_nurbcurve_object *nc)
 Set NURBS curve type.
int ay_nct_applytrafo (ay_object *c)
 Apply transformations to all control points.
int ay_nct_getpntfromindex (ay_nurbcurve_object *curve, int index, double **p)
 Get control point from index.
void ay_nct_concatobjs (ay_object *o, ay_object **result)
 Concatenate multiple objects.
int ay_nct_concatmultiple (int closed, int knot_type, int fillgaps, ay_object *curves, ay_object **result)
 Concatenate multiple NURBS curves.
int ay_nct_fillgap (int order, double tanlen, ay_nurbcurve_object *c1, ay_nurbcurve_object *c2, ay_object **result)
 Create fillet.
int ay_nct_fillgaps (int closed, int order, double tanlen, ay_object *curves)
 Create fillets.
int ay_nct_arrange (ay_object *o, ay_object *t, int rotate)
 Place objects on a curve.
int ay_nct_rescaleknvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to rescale the knot vectors of selected curves.
double ay_nct_gettorsion (ay_nurbcurve_object *nc, int relative, double u)
 Calculate torsion at parameter value u.
double ay_nct_getcurvature (ay_nurbcurve_object *nc, int relative, double u)
 Calculate curvature at parameter value u.
int ay_nct_curvplottcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a curvature plot curve.
int ay_nct_getcurvaturetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to compute the curvature of a curve.
int ay_nct_intersect (ay_nurbcurve_object *cu, ay_nurbcurve_object *cv, double *intersection)
 Unfinished.
int ay_nct_intersectsets (int ncu, ay_object *cu, int ncv, ay_object *cv, double *intersections)
 Calculate intersections of two sets of curves.
int ay_nct_iscompatible (ay_object *curves, int level, int *result)
 Check a number of curves for compatibility.
int ay_nct_makecompatible (ay_object *curves, int level)
 Make a number of curves compatible.
int ay_nct_shiftarr (int dir, int stride, int cvlen, double *cv)
 Shift control points of a 1D (curve) control vector.
int ay_nct_shiftctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Shift control points of selected curves.
int ay_nct_toplane (int plane, int allow_flip, ay_object *c)
 Rotate curve to XY/YZ/XZ plane.
int ay_nct_toxytcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to rotate selected NURBS curves to XY/YZ/XZ plane.
int ay_nct_iscomptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to check compatibility of the selected NURBS curves.
int ay_nct_makecomptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to make selected NURBS curves compatible.
int ay_nct_israt (ay_nurbcurve_object *curve)
 Check whether any weight of a NURBS curve is != 1.0.
int ay_nct_coarsen (ay_nurbcurve_object *curve, ay_point *selp)
 Coarsen NURBS curve.
int ay_nct_coarsenarray (double *Pw, int len, int stride, ay_point *selp, double **Qw, int *Qwlen)
 Coarsen a 1D control point vector.
int ay_nct_removesuperfluousknots (ay_nurbcurve_object *nc, double tol)
 Remove all knots from the curve that do not contribute to its shape.
int ay_nct_removekntcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to remove a knot from selected NURBS curves.
int ay_nct_trimtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Trim selected NURBS curves.
int ay_nct_trim (ay_nurbcurve_object **curve, double umin, double umax)
 Trim NURBS curve.
int ay_nct_isdegen (ay_nurbcurve_object *curve)
 Check curve for degeneracy.
int ay_nct_offset (ay_object *o, int mode, double offset, ay_nurbcurve_object **nc)
 Create offset curve.
int ay_nct_cmppnt (const void *p1, const void *p2)
 Compare two points (helper for qsort).
int ay_nct_cmppntp (const void *p1, const void *p2)
 Compare two points given as pointers (helper for qsort).
int ay_nct_estlen (ay_nurbcurve_object *nc, double *len)
 Do curve length estimation.
int ay_nct_estlentcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to estimate length of selected NURBS curves.
int ay_nct_reparamtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to reparameterise selected NURBS curves.
int ay_nct_euctohom (ay_nurbcurve_object *nc)
 Convert rational coordinates from euclidean to homogeneous style.
int ay_nct_homtoeuc (ay_nurbcurve_object *nc)
 Convert rational coordinates from homogeneous to euclidean style.
void ay_nct_isplanar (ay_object *c, int allow_flip, ay_object **cp, int *is_planar)
 Check planarity of curve.
int ay_nct_unclamptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to unclamp the selected NURBS curves.
int ay_nct_extend (ay_nurbcurve_object *curve, double *p)
 Extend NURBS curve to a point.
int ay_nct_extendtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to extend the selected NURBS curves.
double ay_nct_meandist (int cvlen, int cvastride, double *cva, int cvbstride, double *cvb)
 Compute mean distance of two 1D control point arrays.
int ay_nct_shifttominmeandist (int cvlen, int cvstride, double *cva, double *cvb)
 Shift 1D control point array to minimum mean distance to a second array.
int ay_nct_rotatetominmeandist (int cvlen, int cvstride, double *cva, double *cvb)
 Rotate 1D control point array to minimum mean distance to a second array.
int ay_nct_getcvtangents (ay_nurbcurve_object *nc, double **result)
 Compute curve tangent vectors from control points.
int ay_nct_computebreakpoints (ay_nurbcurve_object *ncurve)
 Compute all distinct knots and their curve positions.
void ay_nct_drawbreakpoints (ay_nurbcurve_object *ncurve)
 Draw distinct knots as rhombuses.
void ay_nct_colorfromweight (double w)
 Set the current OpenGL color from a weight value.
int ay_nct_extractnc (ay_object *src, double umin, double umax, int relative, ay_object **result)
 Extract sub curve.
int ay_nct_extractnctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to extract a sub curve from the selected NURBS curves.
int ay_nct_fair (ay_nurbcurve_object *curve, ay_point *selp, double tol, int fair_worst)
 make the shape of a curve more pleasant
int ay_nct_fairnctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to make the shape of a curve more pleasant.
int ay_nct_tobezierspline (ay_nurbcurve_object *nc)
 Convert knots to bezier spline style.
double ay_nct_dist (ay_nurbcurve_object *nc1, ay_nurbcurve_object *nc2, int mode)
 Compute (mean, min, max) distance between curves.
int ay_nct_distnctcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to compute curve distances.
int ay_npt_create (int uorder, int vorder, int width, int height, int uknot_type, int vknot_type, double *controlv, double *uknotv, double *vknotv, ay_nurbpatch_object **patchptr)
 Create NURBS patch object.
void ay_npt_destroy (ay_nurbpatch_object *patch)
 Gracefully destroy NURBS patch object.
int ay_npt_createnpatchobject (ay_object **result)
 Create Ayam object for NURBS patch.
void ay_npt_resetdisplay (ay_object *o)
 Reset the display attributes of a NURBS patch.
int ay_npt_resizearrayw (double **controlvptr, int stride, int width, int height, int new_width)
 Resize width (U) of 2D control point array.
int ay_npt_resizew (ay_nurbpatch_object *np, int new_width)
 Resize width (U) of NURBS patch.
int ay_npt_resizearrayh (double **controlvptr, int stride, int width, int height, int new_height)
 Resize height (V) of 2D control point array.
int ay_npt_resizeh (ay_nurbpatch_object *np, int new_height)
 Resize height (V) of NURBS patch.
int ay_npt_revertu (ay_nurbpatch_object *np)
 Revert NURBS patch in U direction.
int ay_npt_revertutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to revert selected surfaces in U direction.
int ay_npt_revertv (ay_nurbpatch_object *np)
 Revert NURBS patch in V direction.
int ay_npt_revertvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to revert selected surfaces in V direction.
int ay_npt_swaparray (double **controlvptr, int stride, int width, int height)
 Flip UV of 2D control point array.
int ay_npt_swapuv (ay_nurbpatch_object *np)
 Flip UV of NURBS patch.
int ay_npt_drawtrimcurve (ay_object *o, GLUnurbsObj *no, unsigned int refine)
 Draw a single trim curve using GLU.
int ay_npt_drawtrimcurves (ay_object *o, unsigned int refine_trims)
 Draw all trim curves using GLU.
void ay_npt_drawhandles (struct Togl *togl, ay_nurbpatch_object *npatch)
 Draw handles helper for tool objects.
void ay_npt_drawrohandles (ay_nurbpatch_object *patch)
 Draw read-only handles.
int ay_npt_computebreakpoints (ay_nurbpatch_object *npatch)
 Compute all distinct knots and their surface positions.
void ay_npt_drawbreakpoints (ay_nurbpatch_object *npatch)
 Draw distinct knots as rhombuses.
int ay_npt_crtcobbsphere (ay_nurbpatch_object **cobbsphere)
 Create Cobbs NURBS sphere patch.
int ay_npt_crtnsphere (double radius, ay_nurbpatch_object **nsphere)
 Create standard NURBS sphere (revolved half circle).
int ay_npt_crtnparaboloid (double ymin, double ymax, double rmax, ay_nurbpatch_object **nparab)
 Create standard NURBS paraboloid (revolved parabola).
int ay_npt_crtnhyperboloid (double ymin, double ymax, double a, double b, ay_nurbpatch_object **nhyperb)
 Create standard NURBS hyperboloid (revolved hyperbola).
int ay_npt_crtntorus (double majorradius, double minorradius, ay_nurbpatch_object **nsphere)
 Create standard NURBS torus (revolved circle).
int ay_npt_crtncylinder (double radius, double height, ay_nurbpatch_object **nsphere)
 Create standard NURBS cylinder (revolved line).
int ay_npt_crtncone (double radius, double height, ay_nurbpatch_object **nsphere)
 Create standard NURBS cone (revolved line).
int ay_npt_crtndisk (double radius, ay_nurbpatch_object **nsphere)
 Create standard NURBS disk (revolved line).
int ay_npt_crtncube (double radius, ay_nurbpatch_object **ncube)
 Create simple NURBS cube.
int ay_npt_crtnquadtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create standard NURBS quadrics.
int ay_npt_crtnsphere2tcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to create a multi patch Cobbs NURBS sphere.
int ay_npt_breakintocurvesu (ay_object *o, int apply_trafo, ay_object **curves, ay_object ***last)
 Break NURBS patch into curves along U.
int ay_npt_breakintocurvesv (ay_object *o, int apply_trafo, ay_object **curves, ay_object ***last)
 Break NURBS patch into curves along V.
int ay_npt_breakintocurvestcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to break a NURBS patch into curves.
int ay_npt_buildfromcurves (ay_list_object *curves, int ncurves, int type, int order, int knot_type, int apply_trafo, ay_object **patch)
 Build NURBS patch from curves.
int ay_npt_buildfromcurvestcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to build NURBS patch from curves.
int ay_npt_fillgap (ay_object *o1, ay_object *o2, double tanlen, char *uv, ay_object **result)
 Create fillet patch.
int ay_npt_setback (ay_object *o1, ay_object *o2, double tanlen, char *uv)
 Create setback (instead of fillet).
int ay_npt_concat (ay_object *o, int type, int order, int knot_type, int fillet_type, double ftlen, int compatible, char *uv, ay_object **result)
 Concatenate NURBS patches.
int ay_npt_revolve (ay_object *o, double arc, int sections, int order, ay_nurbpatch_object **revolution)
 Create surface of revolution.
int ay_npt_swing (ay_object *o1, ay_object *o2, ay_nurbpatch_object **swing)
 Create swung surface.
int ay_npt_sweep (ay_object *o1, ay_object *o2, ay_object *o3, int sections, int rotate, int closed, ay_nurbpatch_object **sweep)
 Create swept surface.
int ay_npt_sweepperiodic (ay_object *o1, ay_object *o2, ay_object *o3, int sections, int rotate, ay_nurbpatch_object **sweep)
 Create periodic swept surface.
int ay_npt_birail1 (ay_object *o1, ay_object *o2, ay_object *o3, int sections, int closed, ay_nurbpatch_object **birail1)
 Create birailed surface from three curves.
int ay_npt_birail1periodic (ay_object *o1, ay_object *o2, ay_object *o3, int sections, ay_nurbpatch_object **birail1)
 Create periodic birailed surface from three curves.
int ay_npt_birail2 (ay_object *o1, ay_object *o2, ay_object *o3, ay_object *o4, ay_object *o5, int sections, int closed, int fullinterpolctrl, ay_nurbpatch_object **birail2)
 Create birailed surface from four curves.
int ay_npt_skinu (ay_object *curves, int order, int knot_type, int interpolate, ay_nurbpatch_object **skin)
 Create loft/skinned surface.
int ay_npt_skinv (ay_object *curves, int order, int knot_type, int interpolate, ay_nurbpatch_object **skin)
 Create loft/skinned surface.
int ay_npt_extrude (double height, ay_object *o, ay_nurbpatch_object **extrusion)
 Create extruded surface.
int ay_npt_gettangentfromcontrol2D (int ctype, int n, int p, int stride, double *P, int a, double *T)
 Calculate 2D tangent from control points.
int ay_npt_createcap (double z, ay_nurbcurve_object *curve, double *ominx, double *omaxx, double *ominy, double *omaxy, ay_nurbpatch_object **cap)
 Create cap surface.
int ay_npt_applytrafo (ay_object *p)
 Apply transformations to all control points.
int ay_npt_getpntfromindex (ay_nurbpatch_object *patch, int indexu, int indexv, double **p)
 Get control point from index.
int ay_npt_elevateu (ay_nurbpatch_object *patch, int t, int is_clamped)
 Elevate U order of NURBS patch.
int ay_npt_elevatev (ay_nurbpatch_object *patch, int t, int is_clamped)
 Elevate V order of NURBS patch.
int ay_npt_elevateuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to elevate U/V order of selected NURBS patches.
int ay_npt_swapuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to swap U and V of selected surfaces.
int ay_npt_gordon (ay_object *cu, ay_object *cv, ay_object *in, int uorder, int vorder, ay_nurbpatch_object **gordon)
 Create Gordon surface.
int ay_npt_dualskin (ay_object *cu, ay_object *cv, ay_object *tc, int uorder, int vorder, ay_nurbpatch_object **dskin)
 Create DualSkin surface.
void ay_npt_gordonwc (ay_object *g)
 Watch and correct Gordon surface corners.
void ay_npt_gordonwct (ay_object *g)
 Watch and correct triangular Gordon surface corners.
int ay_npt_extractboundary (ay_object *o, int apply_trafo, int extractnt, double **pvnt, ay_nurbcurve_object **result)
 Extract boundary curve from NURBS patch.
int ay_npt_extracttrim (ay_object *o, int tnum, double param, int apply_trafo, int extractnt, double **pvnt, ay_nurbcurve_object **result)
 Extract trim curve from NURBS patch.
int ay_npt_extractnc (ay_object *npatch, int side, double param, int relative, int apply_trafo, int extractnt, double **pvnt, ay_nurbcurve_object **result)
 Extract curve from patch.
int ay_npt_israt (ay_nurbpatch_object *np)
 Check whether any weight of a NURBS patch is != 1.0.
int ay_npt_isboundcurve (ay_object *o, double b1, double b2, double b3, double b4, int *result)
 Check whether curve is boundary.
int ay_npt_istrimmed (ay_object *o, int mode)
 Check whether NURBS patch is trimmed.
int ay_npt_closeu (ay_nurbpatch_object *np, int mode)
 Close NURBS patch in U direction.
int ay_npt_closeutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to close selected surface objects in U direction.
int ay_npt_closev (ay_nurbpatch_object *np, int mode)
 Close NURBS patch in V direction.
int ay_npt_closevtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to close selected surface objects in V direction.
int ay_npt_openu (ay_nurbpatch_object *np, double offset)
 Open NURBS patch in U direction.
int ay_npt_openv (ay_nurbpatch_object *np, double offset)
 Open NURBS patch in V direction.
int ay_npt_openuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to close selected surface objects in U/V direction.
int ay_npt_isplanar (ay_nurbpatch_object *np, double *n)
 Check NURBS patch planarity.
int ay_npt_isclosedu (ay_nurbpatch_object *np)
 Check NURBS patch closeness in U direction.
int ay_npt_isclosedv (ay_nurbpatch_object *np)
 Check NURBS patch closeness in V direction.
void ay_npt_setuvtypes (ay_nurbpatch_object *np, int dir)
 Set the NURBS patch utype and vtype attributes.
void ay_npt_clearmp (ay_nurbpatch_object *np)
 Remove multiple points from patch np.
void ay_npt_recreatemp (ay_nurbpatch_object *np)
 Re-create multiple points for patch np.
int ay_npt_collapseselp (ay_object *o)
 Collapse selected points to multiple points.
int ay_npt_explodemp (ay_object *o)
 Explode selected multiple points.
int ay_npt_getbeveltags (ay_object *o, int place, int *has_bevel, int *type, double *radius, int *sense)
 Find and parse bevel parameter tags.
int ay_npt_clampu (ay_nurbpatch_object *np, int side)
 Clamp surface in U direction.
int ay_npt_clampv (ay_nurbpatch_object *np, int side)
 Clamp surface in V direction.
int ay_npt_clampuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to clamp selected NURBS patches in U/V direction.
int ay_npt_rescaletrims (ay_object *trim, int mode, double omin, double omax, double nmin, double nmax)
 Rescale trim curves according to surface knot vector scaling.
int ay_npt_rescaleknvnptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to rescale knots of selected NURBS patches.
int ay_npt_insertknutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to insert knots into selected NURBS patches (U direction).
int ay_npt_insertknvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to insert knots into selected NURBS patches (V direction).
int ay_npt_splitu (ay_object *src, double u, int relative, ay_object **result)
 Split a surface in U direction (along V).
int ay_npt_splitv (ay_object *src, double v, int relative, ay_object **result)
 Split a surface in V direction (along U).
int ay_npt_splituvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to split selected NURBS patches in U/V direction.
int ay_npt_extractnp (ay_object *src, double umin, double umax, double vmin, double vmax, int relative, ay_object **result)
 Extract sub surface.
int ay_npt_extractnptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to extract a sub surface from the selected NURBS patches.
int ay_npt_offset (ay_object *o, int mode, double offset, ay_nurbpatch_object **np)
 Calculate offset surface.
int ay_npt_finduv (struct Togl *togl, ay_object *o, double *winXY, double *worldXYZ, double *u, double *v)
 Find point on NURBS surface.
int ay_npt_finduvcb (struct Togl *togl, int argc, char *argv[])
 Find point on NURBS surface modelling action.
int ay_npt_avglensu (double *cv, int width, int height, int stride, double **avlens)
 Compute average control point distances in U direction.
int ay_npt_avglensv (double *cv, int width, int height, int stride, double **avlens)
 Compute average control point distances in V direction.
int ay_npt_concatstcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to concatenate selected surfaces.
int ay_npt_remknunptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to remove knot from selected surfaces.
int ay_npt_remknvnptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to remove knot from selected surfaces.
int ay_npt_removesuperfluousknots (ay_nurbpatch_object *np, double tol)
 Remove all knots from the surface that do not contribute to its shape.
int ay_npt_remsuknnptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to remove superfluous knots from selected surfaces.
int ay_npt_degreereduce (ay_nurbpatch_object *np, double tol)
 Reduce degree of the surface.
int ay_npt_degreereducetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to reduce the degree of selected surfaces.
int ay_npt_euctohom (ay_nurbpatch_object *nc)
 Convert rational coordinates from euclidean to homogeneous style.
int ay_npt_homtoeuc (ay_nurbpatch_object *nc)
 Convert rational coordinates from homogeneous to euclidean style.
int ay_npt_refineu (ay_nurbpatch_object *patch, double *newknotv, int newknotvlen)
 Refine NURBS surface in U direction.
int ay_npt_refinev (ay_nurbpatch_object *patch, double *newknotv, int newknotvlen)
 Refine NURBS surface in V direction.
int ay_npt_refineuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to refine the knots of selected surfaces.
void ay_npt_gnd (char dir, ay_nurbpatch_object *np, int ij, double *p, double **dp)
 Get next different control point in designated direction.
void ay_npt_getcvnormals (ay_nurbpatch_object *np, double *n)
 Get all normals from control points.
void ay_npt_getcvnormal (ay_nurbpatch_object *np, int i, int j, double *n)
 Get a single normal from control points.
int ay_npt_unclamptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to unclamp the knot vectors of the selected surfaces.
void ay_npt_gentexcoords (ay_nurbpatch_object *np, ay_tag *tags, double **result)
 Generate texture coordinates.
int ay_npt_iscompatible (ay_object *patches, int side, int level, int *result)
 Check compatibility of surfaces.
int ay_npt_iscomptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to check compatibility of selected surfaces.
int ay_npt_makecompatible (ay_object *patches, int side, int level)
 Make a number of NURBS surfaces compatible.
int ay_npt_makecomptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to make selected NURBS surfaces compatible.
int ay_npt_isdegen (ay_nurbpatch_object *patch)
 Check surface for degeneracy.
int ay_npt_getcurvaturetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to compute the curvature of a NURBS surface.
int ay_npt_fair (ay_nurbpatch_object *np, ay_point *selp, double tol, int mode, int worst)
 Improve the shape of a NURBS surface.
int ay_npt_fairnptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to improve the shape of a NURBS surface.
int ay_npt_drawboundaries (struct Togl *togl, ay_object *o)
 Draw all selected boundaries of a NURBS surface.
int ay_npt_pickboundcb (struct Togl *togl, int argc, char *argv[])
 Select boundary on NURBS surface modelling action.
int ay_npt_selectbound (ay_object *o, unsigned int pid, unsigned int bid, int format)
 Add SB (SelectedBoundary) tag to an object.
void ay_npt_deselectbound (ay_object *o, unsigned int pid, unsigned int bid)
 Remove SB (SelectedBoundary) tags from an object.
int ay_npt_isboundselected (ay_object *o, unsigned int pid, unsigned int bid)
 Check for presence of an SB tag.
int ay_npt_tgordon (ay_object **curves, int uorder, int vorder, ay_nurbpatch_object **gordon)
 Create triangular Gordon surface.
int ay_npt_flashboundcb (struct Togl *togl, int argc, char *argv[])
 Draw surface boundary in front buffer with XOR.
int ay_npt_tobeziersplineu (ay_nurbpatch_object *np)
 Convert knots to bezier spline style.
int ay_npt_tobeziersplinev (ay_nurbpatch_object *np)
 Convert knots to bezier spline style.
int ay_pmt_tonpatch (ay_object *o, int btype, ay_object **result)
 Convert patchmesh to NURBS patch.
int ay_pmt_valid (ay_pamesh_object *pamesh)
 Check patchmesh for errors.
int ay_pmt_getpntfromindex (ay_pamesh_object *patch, int indexu, int indexv, double **p)
 Get control point from index.
int ay_pmt_swapuv (ay_pamesh_object *pm)
 Flip UV of patchmesh.
void ay_pmt_revertu (ay_pamesh_object *pm)
 Revert patchmesh in U direction.
void ay_pmt_revertv (ay_pamesh_object *pm)
 Revert patchmesh in V direction.
int ay_pmt_israt (ay_pamesh_object *pm)
 Check whether any weight of a patch mesh is != 1.0.
int ay_pmt_tobasistcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to convert selected patch meshes to a different basis matrix.
void ay_pmt_getbasis (int btype, double **result)
 Get basis matrix.
void ay_pmt_init ()
 Initialize the patch mesh tools module.
void ay_stess_destroy (ay_stess_patch *stess)
 Remove tesselation from NURBS patch.
int ay_stess_GetQF (double gst)
 Calculate stess usable quality factor from GLU sampling tolerance.
int ay_stess_CurvePoints2D (int n, int p, double *U, double *Pw, int stride, int is_rat, int qf, int *Clen, double **C)
 Tesselate a (non-rational or rational) 2D (trim) curve.
int ay_stess_CurvePoints3D (int n, int p, double *U, double *Pw, int is_rat, int qf, int *Clen, double **C)
 Tesselate a (non-rational or rational) 3D curve.
int ay_stess_SurfacePoints3D (int n, int m, int p, int q, double *U, double *V, double *P, int qfu, int qfv, int *Cn, int *Cm, double **C)
 Tesselate a untrimmed, non-rational NURBS surface.
int ay_stess_SurfacePoints4D (int n, int m, int p, int q, double *U, double *V, double *P, int qfu, int qfv, int *Cn, int *Cm, double **C)
 Tesselate a untrimmed, rational NURBS surface.
void ay_stess_DrawTrimmedSurface (ay_stess_patch *stess)
 Draw tesselation of a trimmed NURBS surface.
void ay_stess_ShadeTrimmedSurface (ay_stess_patch *stess)
 Shade tesselation of a trimmed NURBS surface.
int ay_stess_TessTrimCurves (ay_object *o, int qf, int *nt, double ***tt, int **tl, int **td)
 Tesselate all trim curves of a NURBS surface.
int ay_stess_ReTessTrimCurves (ay_object *o, int qf, int nt, double **tt, int *tl, double **tp)
 Tesselate all trim curves of a NURBS surface for drawing.
int ay_stess_TessTrimmedNP (ay_object *o, int qf, ay_stess_patch *stess)
 Tesselate a trimmed NURBS surface.
int ay_stess_TessNP (ay_object *o, int qf, ay_stess_patch *stess)
 Tesselate a NURBS surface.
int ay_stess_topomesh (ay_stess_patch *stess, ay_object **result)
 Convert a STESS tesselation to a polymesh.
int ay_tess_quadrangulate (ay_object *o, ay_nurbpatch_object *np, double *uv, char *stname, ay_object **q)
 Refine a tesselated triangular polymesh to quads.
void ay_stess_init (Tcl_Interp *interp)
 initialize the STESS module
int ay_tess_checktri (double *p1, double *p2, double *p3)
 Check triangle for degeneracy.
int ay_tess_npatch (ay_object *o, int smethod, double sparamu, double sparamv, int use_tc, char *myst, int use_vc, char *mycs, int use_vn, char *myn, int refine_trims, int primitives, double quad_eps, ay_object **pm)
 Tesselate NURBS patch (convert to PolyMesh) with GLU.
int ay_tess_npatchtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to tesselate selected NURBS patches (convert to PolyMesh) with GLU.
int ay_tess_pomeshf (ay_pomesh_object *pomesh, unsigned int f, unsigned int m, unsigned int n, int optimize, ay_pomesh_object **trpomesh)
 Tesselate a single polymesh face with GLU.
int ay_tess_pomesh (ay_pomesh_object *pomesh, int optimize, double *normal, ay_pomesh_object **trpomesh)
 Tesselate a polymesh with GLU.
int ay_tess_ncurve (ay_nurbcurve_object *ncurve, double tmode, double tparam, double **verts, int *vertslen)
 Tesselate a NURBS curve with GLU.
double ay_rtess_getedgethresh (double tolerance)
 Compute edge threshold from GLU sampling tolerance.
int ay_rtess_tessnp (ay_nurbpatch_object *np, int degen, int dice, double tolerance, ay_object **result)
 Tesselate a NURBS patch with rtess.

Detailed Description

Generated on Thu Jan 2 15:24:23 2025 for Ayam by  doxygen 1.6.3