[Brlcad-commits] CVS: brlcad/src/librt nurb_trim.c,14.10.2.2,14.10.2.3
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: jason o. <jl...@us...> - 2006-04-20 13:27:50
|
Update of /cvsroot/brlcad/brlcad/src/librt In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20090/src/librt Modified Files: Tag: trimnurbs-branch nurb_trim.c Log Message: modified rt_nurb_uv_trimmed to support a list of trims instead of a surface (to support the preprocessing) Index: nurb_trim.c =================================================================== RCS file: /cvsroot/brlcad/brlcad/src/librt/nurb_trim.c,v retrieving revision 14.10.2.2 retrieving revision 14.10.2.3 diff -w -u -r14.10.2.2 -r14.10.2.3 --- nurb_trim.c 7 Apr 2006 18:31:12 -0000 14.10.2.2 +++ nurb_trim.c 20 Apr 2006 13:27:46 -0000 14.10.2.3 @@ -85,19 +85,17 @@ * surface, or has been trimmed by a trimming contour. */ int -rt_nurb_uv_trimmed(struct face_g_snurb* srf, fastf_t u, fastf_t v) +rt_nurb_uv_trimmed(struct bu_list* trims, fastf_t u, fastf_t v) { int crossings = 0; /* return false if there are no trimming contours */ - if (!srf->trims_count) { + if (BU_LIST_IS_EMPTY(trims)) { return 0; } else { - struct trim_contour* contour = NULL; - for (BU_LIST_FOR(contour, trim_contour, &(srf->trims_hd.l))) { struct edge_g_cnurb* curve = NULL; /* adapted from nmg_uv_in_lu() */ - for (BU_LIST_FOR(curve, edge_g_cnurb, &(contour->curve_hd.l))) { + for (BU_LIST_FOR(curve, edge_g_cnurb, trims)) { if (curve->order <= 0) { /* the curve is a line */ fastf_t slope, intercept, u_on_curve; @@ -125,12 +123,11 @@ if (u_on_curve > u) crossings++; } else { - /* the curve is a bspline, delegate to function */ + /* the curve is a bezier, delegate to function */ crossings += rt_uv_in_trim(curve, u, v); } } } - } /* Even: the uv point was inside a trim * Odd: the uv point was outside a trim @@ -339,8 +336,10 @@ if( nurb_crv_is_bezier( trim ) ) rt_clip_cnurb(&plist, trim, u, v); - else + else { + bu_log("WARNING: shouldn't be called!"); nurb_c_to_bezier( &plist, trim ); + } while( BU_LIST_WHILE( clip, edge_g_cnurb, &plist ) ) { |