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, double **U, double **P)
 Do a least squares approximation.
int ay_act_leastSquaresClosed (double *Q, int m, int n, int p, double **U, double **P)
 Do a least squares approximation for a closed curve.
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_capt_createfromcurve (ay_object *c, ay_object **cap)
 Create cap from (planar) curve.
int ay_capt_createfromnpcurve (ay_object *c, ay_object **cap)
 Create cap from non planar curve.
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 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 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_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_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_CurveRemoveKnot4D (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_DegreeElevateCurve (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_CurveInsertKnot4D (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_CurveInsertKnot3D (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.
void ay_nb_BasisFuns (int i, double u, int p, double *U, double *N)
 Calculate NURBS basis functions.
int ay_nb_CurvePoint4D (int n, int p, double *U, double *Pw, double u, double *C)
 Calculate a point on a rational NURBS curve.
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.
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_ComputeFirstDer3D (int n, int p, double *U, double *P, double u, double *C1)
 Calculate first derivative of non-rational NURBS curve.
void ay_nb_ComputeSecDer3D (int n, int p, double *U, double *P, double u, double *C2)
 Calculate second derivative of non-rational NURBS curve.
void ay_nb_ComputeFirstDer4D (int n, int p, double *U, double *Pw, double u, double *C1)
 Calculate first derivative of rational NURBS curve.
void ay_nb_ComputeSecDer4D (int n, int p, double *U, double *Pw, double u, double *C2)
 Calculate second derivative of rational NURBS curve.
void ay_nb_CompFirstDerSurf4D (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_CompFirstDerSurf3D (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_CreateNurbsCircleArc (double r, double ths, double the, int *length, double **knotv, double **controlv)
 Create NURBS circle or arc.
void ay_nb_RefineKnotVectCurve (int stride, 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_DegreeElevateSurfU (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 dimension.
int ay_nb_DegreeElevateSurfV (int stride, int w, int h, int p, double *V, double *Pw, int t, int *nh, double *Vh, double *Qw)
 Elevate degree of NURBS surface in V dimension.
int ay_nb_RefineKnotVectSurfU (int stride, 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 stride, 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 dimension.
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 dimension.
int ay_nct_create (int order, int length, int knot_type, double *controlv, double *knotv, ay_nurbcurve_object **curveptr)
 Create curve object.
int ay_nct_destroy (ay_nurbcurve_object *curve)
 Destroy curve object.
void ay_nct_clearmp (ay_nurbcurve_object *c)
 Remove multiple points from curve c.
int ay_nct_recreatemp (ay_nurbcurve_object *c)
 Re-create multiple points for curve c.
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)
 Resize NURBS curve to new length.
int ay_nct_close (ay_nurbcurve_object *curve)
 Close NURBS curve.
int ay_nct_revert (ay_nurbcurve_object *curve)
 Revert NURBS curve.
int ay_nct_refine (ay_nurbcurve_object *curve, double *newknotv, int newknotvlen)
 Refine NURBS curve.
int ay_nct_refinetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Refine NURBS curve.
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 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[])
 Elevate order of NURBS curve.
int ay_nct_insertkntcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Insert knot into NURBS curve.
int ay_nct_collapsetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Collapse selected points of NURBS curve to multiple points.
int ay_nct_explodetcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Explode selected multiple points.
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, ay_object **result)
 Split NURBS curve.
int ay_nct_splittcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Split NURBS curve.
int ay_nct_concattcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Concatenate selected NURBS 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_crtncircletcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Create a NURBS circle.
int ay_nct_crtrecttcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Create a NURBS rectangle.
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[])
 Create a circular B-Spline curve.
int ay_nct_getorientation (ay_nurbcurve_object *curve, double *oangle)
 Calculate orientation of NURBS curve.
int ay_nct_isclosed (ay_nurbcurve_object *nc)
 Check NURBS curve closedness.
int 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.
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)
 Arrange objects.
int ay_nct_rescaleknvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Rescale the knot vectors of selected curves.
double ay_nct_getcurvature (ay_nurbcurve_object *c, double t)
 Calculate curvature at parameter value t.
int ay_nct_curvplottcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Create curvature plot curve.
int ay_nct_intersect (ay_nurbcurve_object *cu, ay_nurbcurve_object *cv, double *intersection)
 Unfinished.
int ay_nct_intersectca (ay_object *cu, ay_object *cv, double *intersections)
 Unfinished.
int ay_nct_makecompatible (ay_object *curves)
 Make a number of curves compatible.
int ay_nct_shiftcbs (ay_nurbcurve_object *curve)
 Shift control points.
int ay_nct_shiftcbstcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Shift control points.
int ay_nct_toxy (ay_object *c)
 Rotate curve to XY plane.
int ay_nct_toxytcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Rotate curve to XY plane.
int ay_nct_makecomptcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Make a number of curves compatible.
void ay_nct_findufrompoint (ay_nurbcurve_object *curve, double *point, double guess, int max_try, double e1, double e2, double *u)
 Unused.
int ay_nct_israt (ay_nurbcurve_object *curve)
 Check whether any weight is != 1.0.
int ay_nct_center (int mode, ay_nurbcurve_object *curve)
 Center NURBS curve.
int ay_nct_centertcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Center NURBS curve.
int ay_nct_coarsen (ay_nurbcurve_object *curve)
 Coarsen NURBS curve.
int ay_nct_coarsentcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl interface for NURBS curve coarsen tool.
int ay_nct_removekntcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl interface for NURBS curve knot removal tool.
int ay_nct_trimtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl interface for NURBS curve trimming tool.
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 interface for NURBS curve length estimation tool.
int ay_nct_reparamtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl interface for NURBS curve reparameterisation tool.
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.
int ay_npt_destroy (ay_nurbpatch_object *patch)
 Destroy NURBS patch object.
int ay_npt_createnpatchobject (ay_object **result)
 Create Ayam object for 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[])
 Revert NURBS patch 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[])
 Revert NURBS patch 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 (struct Togl *togl, ay_object *o, GLUnurbsObj *no)
 Draw trim curves using GLU.
int ay_npt_wribtrimcurves (ay_object *o)
 Export trim curves to RIB.
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_crtnspheretcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Create standard NURBS sphere (revolved half circle).
int ay_npt_crtnsphere2tcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Create multi patch Cobbs NURBS sphere.
int ay_npt_splittocurvesu (ay_object *o, int apply_trafo, ay_object **curves, ay_object ***last)
 Split NURBS patch to curves along U.
int ay_npt_splittocurvesv (ay_object *o, int apply_trafo, ay_object **curves, ay_object ***last)
 Split NURBS patch to curves along V.
int ay_npt_splittocurvestcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Split NURBS patch to curves.
int ay_npt_buildfromcurves (ay_list_object *curves, int ncurves, int type, 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[])
 Build NURBS patch from curves.
int ay_npt_concat (ay_object *o, int type, int knot_type, int fillet_type, 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, int has_start_cap, ay_object **start_cap, int has_end_cap, ay_object **end_cap)
 Create swept surface.
int ay_npt_closedsweep (ay_object *o1, ay_object *o2, ay_object *o3, int sections, int rotate, ay_nurbpatch_object **closedsweep)
 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, int has_start_cap, ay_object **start_cap, int has_end_cap, ay_object **end_cap)
 Create 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, int has_start_cap, ay_object **start_cap, int has_end_cap, ay_object **end_cap)
 Create birailed surface from four curves.
int ay_npt_interpolateu (ay_nurbpatch_object *np, int order)
 Interpolate NURBS patch in U direction.
int ay_npt_interpolatev (ay_nurbpatch_object *np, int order)
 Interpolate NURBS patch in V direction.
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_getnormalfromcontrol3D (int ctype, int n, int p, int stride, double *P, int a, double *N)
 Calculate 3D normal from control points.
int ay_npt_bevel (int type, double radius, int align, ay_object *o, ay_nurbpatch_object **bevel)
 Create bevel surface.
int ay_npt_createcap (double z, ay_nurbcurve_object *curve, double *ominx, double *omaxx, double *ominy, double *omaxy, double *oangle, 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)
 Elevate U order of NURBS patch.
int ay_npt_elevateutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Elevate U order of NURBS patch.
int ay_npt_elevatev (ay_nurbpatch_object *patch, int t)
 Elevate V order of NURBS patch.
int ay_npt_elevatevtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Elevate V order of NURBS patch.
int ay_npt_swapuvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Swap U and V of NURBS patch.
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_gordonmodw (ay_object *o1, ay_object *o2)
 Helper for gordonwc().
int ay_npt_gordoncc (ay_object *o1, ay_object *o2, int stride, double *p1, double *p2, double *pp1, double *pp2, double *m1, double *m2)
 Helper for gordonwc().
int ay_npt_gordonwc (ay_object *g)
 Watch and correct Gordon surface children.
int ay_npt_extractboundary (ay_object *o, int apply_trafo, ay_nurbcurve_object **result)
 Extract boundary curve from NURBS patch.
int ay_npt_extractmiddlepoint (double *cv, int width, int height, int stride, int index, int side, double *result)
 Extract middle point.
int ay_npt_extractnc (ay_object *npatch, int side, double param, int relative, int apply_trafo, ay_nurbcurve_object **result)
 Extract curve from patch.
int ay_npt_israt (ay_nurbpatch_object *np)
 Check whether any weight 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)
 Close NURBS patch in U direction.
int ay_npt_closeutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Close NURBS patch in U direction.
int ay_npt_closev (ay_nurbpatch_object *np)
 Close NURBS patch in V direction.
int ay_npt_closevtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Close NURBS patch in V direction.
void ay_npt_clearmp (ay_nurbpatch_object *np)
 Remove multiple points from patch np.
int 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_copytptag (ay_object *src, ay_object *dst)
 Copy tesselation parameter tag.
int ay_npt_clampu (ay_nurbpatch_object *np, int side)
 Clamp surface in U dimension.
int ay_npt_clamputcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to clamp a surface in U dimension.
int ay_npt_clampv (ay_nurbpatch_object *np, int side)
 Clamp surface in V dimension.
int ay_npt_clampvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to clamp asurface in V dimension.
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 the knot vectors of a surface.
int ay_npt_insertknutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to insert a knot in a surface into U dimension.
int ay_npt_insertknvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to insert a knot in a surface into V dimension.
int ay_npt_splitu (ay_object *src, double u, ay_object **result)
 Split a surface along U.
int ay_npt_splitutcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to split a surface along V.
int ay_npt_splitv (ay_object *src, double v, ay_object **result)
 Split a surface along V.
int ay_npt_splitvtcmd (ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 Tcl command to split a surface along V.
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.
void ay_npt_gnd (char dir, ay_nurbpatch_object *np, int ind, double *p, double **dp)
 Get next different control point.
int ay_npt_offset (ay_object *o, int mode, double offset, ay_nurbpatch_object **np)
 Calculate offset surface.
int ay_npt_isclosednp (ay_nurbpatch_object *np, int *closedu, int *closedv)
 Check NURBS surface closedness.
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_pmt_tonpatch (ay_pamesh_object *pamesh, ay_object **result)
 Convert patchmesh to NURBS patch.
int ay_pmt_valid (ay_pamesh_object *pamesh, int *detail)
 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.
int ay_pmt_revertu (ay_pamesh_object *pm)
 Revert patchmesh in U direction.
int ay_pmt_revertv (ay_pamesh_object *pm)
 Revert patchmesh in V direction.
int ay_stess_destroy (ay_nurbpatch_object *np)
int ay_stess_GetQF (double gst)
int ay_stess_CurvePoints2D (int n, int p, double *U, double *Pw, int is_rat, int qf, int *Clen, double **C)
int ay_stess_CurvePoints3D (int n, int p, double *U, double *Pw, int is_rat, int qf, int *Clen, double **C)
int ay_stess_SurfacePoints3D (int n, int m, int p, int q, double *U, double *V, double *P, int qf, int *Cn, int *Cm, double **C)
int ay_stess_SurfacePoints4D (int n, int m, int p, int q, double *U, double *V, double *P, int qf, int *Cn, int *Cm, double **C)
int ay_stess_DrawTrimmedSurface (ay_object *o)
int ay_stess_ShadeTrimmedSurface (ay_object *o)
int ay_stess_TessNP (ay_object *o, int qf)
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, 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 NURBS patch (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, ay_pomesh_object **trpomesh)
 Tesselate a polymesh with GLU.

Detailed Description

Ayam NURBS API.

Generated on Thu Oct 28 19:51:38 2010 for Ayam by  doxygen 1.6.3