Thread: [brlcad-commits] SF.net SVN: brlcad:[32127] brlcad/trunk/src/librt/primitives
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <pac...@us...> - 2008-07-30 06:21:45
|
Revision: 32127 http://brlcad.svn.sourceforge.net/brlcad/?rev=32127&view=rev Author: pacman87 Date: 2008-07-30 06:21:54 +0000 (Wed, 30 Jul 2008) Log Message: ----------- change revolve to use a union instead of an xor when the -X and +X sides of a revolve overlap (ie, angle > 180). also, modify norm() to give the proper vector direction when the start/end surface is hit on a point with a -X coordinate. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/revolve/revolve.c brlcad/trunk/src/librt/primitives/sketch/sketch.c Modified: brlcad/trunk/src/librt/primitives/revolve/revolve.c =================================================================== --- brlcad/trunk/src/librt/primitives/revolve/revolve.c 2008-07-30 05:31:09 UTC (rev 32126) +++ brlcad/trunk/src/librt/primitives/revolve/revolve.c 2008-07-30 06:21:54 UTC (rev 32127) @@ -231,7 +231,7 @@ vect_t dir; point_t hit1, hit2; - point2d_t pt, pt2; + point2d_t pt, pt2, dist; fastf_t a, b, c, disc, k1, k2, t1, t2, x, y; fastf_t xmin, xmax, ymin, ymax; long *lng; @@ -256,8 +256,6 @@ VMOVE( ur, vr ); VUNITIZE( ur ); - - if ( rev->ang < 2*M_PI ) { VREVERSE( normS, rev->yUnit ); /* start normal */ start = ( VDOT( normS, rev->v3d ) - VDOT( normS, rp->r_pt ) ) / VDOT( normS, rp->r_dir ); @@ -276,12 +274,18 @@ } if ( rt_sketch_contains( rev->sk, pt ) ) { - if ( nhits >= MAX_HITS ) return -1; /* too many hits */ - hitp = hits[nhits++]; - hitp->hit_magic = RT_HIT_MAGIC; - hitp->hit_dist = start; - hitp->hit_surfno = START_FACE; - VJOIN1( hitp->hit_vpriv, pr, hitp->hit_dist, vr ); + pt[X] = -pt[X]; + if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt ) ) { + /* skip it */ + } else { + if ( nhits >= MAX_HITS ) return -1; /* too many hits */ + hitp = hits[nhits++]; + hitp->hit_magic = RT_HIT_MAGIC; + hitp->hit_dist = start; + hitp->hit_surfno = (pt[X]>0) ? -START_FACE : START_FACE; + VJOIN1( hitp->hit_vpriv, pr, hitp->hit_dist, vr ); + } } VJOIN1( hit1, pr, end, vr ); @@ -295,16 +299,23 @@ } if ( rt_sketch_contains( rev->sk, pt ) ) { - if ( nhits >= MAX_HITS ) return -1; /* too many hits */ - hitp = hits[nhits++]; - hitp->hit_magic = RT_HIT_MAGIC; - hitp->hit_dist = end; - hitp->hit_surfno = END_FACE; - VJOIN1( hitp->hit_vpriv, pr, hitp->hit_dist, vr ); + pt[X] = -pt[X]; + if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt ) ) { + /* skip it */ + } else { + if ( nhits >= MAX_HITS ) return -1; /* too many hits */ + hitp = hits[nhits++]; + hitp->hit_magic = RT_HIT_MAGIC; + hitp->hit_dist = end; + hitp->hit_surfno = (pt[X]>0) ? -END_FACE : END_FACE; + VJOIN1( hitp->hit_vpriv, pr, hitp->hit_dist, vr ); + } } } /* calculate hyperbola parameters */ + /* [ (x*x) / aa^2 ] - [ (y-h)^2 / bb^2 ] = 1 */ VREVERSE( dp, pr); VSET( norm, ur[X], ur[Y], 0 ); @@ -319,6 +330,7 @@ V2MOVE( pt, rev->sk->verts[rev->ends[i]] ); pt2[Y] = pt[Y]; pt2[X] = aa*sqrt( (pt2[Y]-h)*(pt2[Y]-h)/(bb*bb) + 1 ); + if ( pt[X] < 0 ) pt2[X] = -fabs(pt2[X]); if ( fabs( pt2[X] ) < fabs( pt[X] ) ) { /* valid hit */ if ( nhits >= MAX_HITS ) return -1; /* too many hits */ hitp = hits[nhits++]; @@ -326,6 +338,9 @@ hitp->hit_dist = (pt2[Y] - pr[Z]) / vr[Z]; hitp->hit_surfno = LINE_SEG; VJOIN1( hitp->hit_vpriv, pr, hitp->hit_dist, vr ); + hitp->hit_point[X] = pt2[X]; + hitp->hit_point[Y] = pt2[Y]; + hitp->hit_point[Z] = 0; angle = atan2( hitp->hit_vpriv[Y], hitp->hit_vpriv[X] ); if ( pt[X] < 0 ) { @@ -333,9 +348,14 @@ } else if ( angle < 0 ) { angle += 2*M_PI; } + pt2[X] = -pt2[X]; if ( angle > rev->ang ) nhits--; - - hitp->hit_vpriv[Z] = MAX_FASTF; /* slope = 0, so 1/slope => inf */ + else if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt2 ) + && pt2[X] > 0 ) { + nhits--; + } + hitp->hit_vpriv[Z] = MAX_FASTF; /* slope = 0, so 1/slope = inf */ } } @@ -374,13 +394,22 @@ } else if ( angle < 0 ) { angle += 2*M_PI; } + pt2[X] = -pt2[X]; if ( angle < rev->ang ) { - hitp = hits[nhits++]; - VMOVE( hitp->hit_vpriv, hit1 ); - hitp->hit_vpriv[Z] = (pt2[X]<0) ? 1.0/m : -1.0/m; - hitp->hit_magic = RT_HIT_MAGIC; - hitp->hit_dist = k1; - hitp->hit_surfno = LINE_SEG; + if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt2 ) ) { + /* overlap, so ignore it */ + } else { + hitp = hits[nhits++]; + hitp->hit_point[X] = -pt2[X]; + hitp->hit_point[Y] = pt2[Y]; + hitp->hit_point[Z] = 0; + VMOVE( hitp->hit_vpriv, hit1 ); + hitp->hit_vpriv[Z] = (pt2[X]>0) ? 1.0/m : -1.0/m; + hitp->hit_magic = RT_HIT_MAGIC; + hitp->hit_dist = k1; + hitp->hit_surfno = LINE_SEG; + } } } if ( t2 > 0 && t2 < 1 ) { @@ -393,13 +422,22 @@ } else if ( angle < 0 ) { angle += 2*M_PI; } + pt2[X] = -pt2[X]; if ( angle < rev->ang ) { - hitp = hits[nhits++]; - VMOVE( hitp->hit_vpriv, hit2 ); - hitp->hit_vpriv[Z] = (pt2[X]<0) ? 1.0/m : -1.0/m; - hitp->hit_magic = RT_HIT_MAGIC; - hitp->hit_dist = k2; - hitp->hit_surfno = LINE_SEG; + if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt2 ) ) { + /* overlap, so ignore it */ + } else { + hitp = hits[nhits++]; + hitp->hit_point[X] = -pt2[X]; + hitp->hit_point[Y] = pt2[Y]; + hitp->hit_point[Z] = 0; + VMOVE( hitp->hit_vpriv, hit2 ); + hitp->hit_vpriv[Z] = (pt2[X]>0) ? 1.0/m : -1.0/m; + hitp->hit_magic = RT_HIT_MAGIC; + hitp->hit_dist = k2; + hitp->hit_surfno = LINE_SEG; + } } } } @@ -417,13 +455,22 @@ } else if ( angle < 0 ) { angle += 2*M_PI; } + pt2[X] = -pt2[X]; if ( angle < rev->ang ) { - hitp = hits[nhits++]; - VMOVE( hitp->hit_vpriv, hit1 ); - hitp->hit_vpriv[Z] = (pt2[X]<0) ? 1.0/m : -1.0/m; - hitp->hit_magic = RT_HIT_MAGIC; - hitp->hit_dist = k1; - hitp->hit_surfno = LINE_SEG; + if ( ( angle + M_PI < rev->ang || angle - M_PI > 0 ) + && rt_sketch_contains( rev->sk, pt2 ) ) { + /* overlap, so ignore it */ + } else { + hitp = hits[nhits++]; + hitp->hit_point[X] = -pt2[X]; + hitp->hit_point[Y] = pt2[Y]; + hitp->hit_point[Z] = 0; + VMOVE( hitp->hit_vpriv, hit1 ); + hitp->hit_vpriv[Z] = (pt2[X]>0) ? 1.0/m : -1.0/m;; + hitp->hit_magic = RT_HIT_MAGIC; + hitp->hit_dist = k1; + hitp->hit_surfno = LINE_SEG; + } } } } @@ -450,7 +497,8 @@ } else if ( angle < 0 ) { angle += 2*M_PI; } - bu_log("\tangle:\t%5.2f\n", angle*RAD2DEG); + bu_log("\tangle:\t%5.2f\t ( %6.2f, %6.2f )\t%6.2f\t%2d\n", angle*RAD2DEG, + hits[i]->hit_point[X], hits[i]->hit_point[Y], hits[i]->hit_dist, hits[i]->hit_surfno ); } return -1; } @@ -492,7 +540,6 @@ hits[out] = NULL; BU_LIST_INSERT( &(seghead->l), &(segp->l) ); } -/* if ( nhits ) bu_log( "nhits: %d\n", nhits ); */ return nhits; } @@ -533,12 +580,16 @@ case START_FACE: VREVERSE( hitp->hit_normal, rev->yUnit ); break; + case -START_FACE: + VMOVE( hitp->hit_normal, rev->yUnit ); + break; case END_FACE: VCROSS( hitp->hit_normal, rev->zUnit, rev->rEnd ); VUNITIZE( hitp->hit_normal ); break; - case -1: - VREVERSE( hitp->hit_normal, rp->r_dir ); + case -END_FACE: + VCROSS( hitp->hit_normal, rev->rEnd, rev->zUnit ); + VUNITIZE( hitp->hit_normal ); break; default: VSET( n, hitp->hit_vpriv[X], hitp->hit_vpriv[Y], 0 ); @@ -634,7 +685,7 @@ vect_t ell[16], cir[16], ucir[16], height, xdir, ydir, ux, uy, uz, rEnd, xEnd, yEnd; fastf_t cos22_5 = 0.9238795325112867385, - cos67_5 = 0.3826834323650898373; + cos67_5 = 0.3826834323650898373; int *endcount; point_t add, add2, add3; Modified: brlcad/trunk/src/librt/primitives/sketch/sketch.c =================================================================== --- brlcad/trunk/src/librt/primitives/sketch/sketch.c 2008-07-30 05:31:09 UTC (rev 32126) +++ brlcad/trunk/src/librt/primitives/sketch/sketch.c 2008-07-30 06:21:54 UTC (rev 32127) @@ -283,7 +283,7 @@ lsg = (struct line_seg *)lng; V2MOVE( pt1, sk->verts[lsg->start] ); V2MOVE( pt2, sk->verts[lsg->end] ); - if ( pt[Y] > FMAX( pt1[Y], pt2[Y] ) || pt[Y] <= FMIN( pt1[Y], pt2[Y] ) ) { + if ( pt[Y] > FMAX( pt1[Y], pt2[Y] ) || pt[Y] < FMIN( pt1[Y], pt2[Y] ) ) { continue; } isec[X] = pt1[X] + (isec[Y] - pt1[Y]) * ( (pt1[X] - pt2[X]) / (pt1[Y] - pt2[Y]) ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-04-28 15:38:23
|
Revision: 34340 http://brlcad.svn.sourceforge.net/brlcad/?rev=34340&view=rev Author: brlcad Date: 2009-04-28 15:38:21 +0000 (Tue, 28 Apr 2009) Log Message: ----------- more struct resource parameters missing, should be all of them now Modified Paths: -------------- brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/librt/primitives/arbn/arbn.c brlcad/trunk/src/librt/primitives/ars/ars.c brlcad/trunk/src/librt/primitives/bot/bot.c brlcad/trunk/src/librt/primitives/brep/brep.cpp brlcad/trunk/src/librt/primitives/bspline/bspline.c brlcad/trunk/src/librt/primitives/cline/cline.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ell/ell.c brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/eto/eto.c Modified: brlcad/trunk/src/librt/primitives/arb8/arb8.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -120,7 +120,6 @@ { "4378", {7, 6, 2, 3} } }; -BU_EXTERN(void rt_arb_ifree, (struct rt_db_internal *) ); const struct bu_structparse rt_arb_parse[] = { { "%f", 3, "V1", bu_offsetof(struct rt_arb_internal, pt[0][X]), BU_STRUCTPARSE_FUNC_NULL }, @@ -1398,9 +1397,10 @@ * solid. */ void -rt_arb_ifree(struct rt_db_internal *ip) +rt_arb_ifree(struct rt_db_internal *ip, struct resource *resp) { RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; bu_free( ip->idb_ptr, "arb ifree" ); ip->idb_ptr = (genptr_t)NULL; } Modified: brlcad/trunk/src/librt/primitives/arbn/arbn.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -44,8 +44,8 @@ BU_EXTERN(void rt_arbn_print, (const struct soltab *stp) ); -BU_EXTERN(void rt_arbn_ifree, (struct rt_db_internal *ip) ); + /** * R T _ A R B N _ P R E P * @@ -1045,11 +1045,12 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_arbn_ifree(struct rt_db_internal *ip) +rt_arbn_ifree(struct rt_db_internal *ip, struct resource *resp) { struct rt_arbn_internal *aip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; aip = (struct rt_arbn_internal *)ip->idb_ptr; RT_ARBN_CK_MAGIC(aip); Modified: brlcad/trunk/src/librt/primitives/ars/ars.c =================================================================== --- brlcad/trunk/src/librt/primitives/ars/ars.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/ars/ars.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -51,7 +51,6 @@ /* from g_bot.c */ extern int rt_bot_prep( struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip ); -extern void rt_bot_ifree( struct rt_db_internal *ip ); int rt_ars_tess( struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol ); @@ -419,12 +418,13 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_ars_ifree(struct rt_db_internal *ip) +rt_ars_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_ars_internal *arip; register int i; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; arip = (struct rt_ars_internal *)ip->idb_ptr; RT_ARS_CK_MAGIC(arip); Modified: brlcad/trunk/src/librt/primitives/bot/bot.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/bot/bot.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1188,11 +1188,13 @@ * solid. */ void -rt_bot_ifree(struct rt_db_internal *ip) +rt_bot_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_bot_internal *bot_ip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + bot_ip = (struct rt_bot_internal *)ip->idb_ptr; RT_BOT_CK_MAGIC(bot_ip); bot_ip->magic = 0; /* sanity */ Modified: brlcad/trunk/src/librt/primitives/brep/brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-04-28 15:38:21 UTC (rev 34340) @@ -76,7 +76,7 @@ int rt_brep_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip); void -rt_brep_ifree(struct rt_db_internal *ip); +rt_brep_ifree(struct rt_db_internal *ip, struct resource *resp); int rt_brep_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local); int @@ -1738,11 +1738,14 @@ * R T _ B R E P _ I F R E E */ void -rt_brep_ifree(struct rt_db_internal *ip) +rt_brep_ifree(struct rt_db_internal *ip, struct resource *resp) { - TRACE1("rt_brep_ifree"); struct rt_brep_internal* bi; + if (!resp) resp = &rt_uniresource; RT_CK_DB_INTERNAL(ip); + + TRACE1("rt_brep_ifree"); + bi = (struct rt_brep_internal*)ip->idb_ptr; RT_BREP_CK_MAGIC(bi); if (bi->brep != NULL) Modified: brlcad/trunk/src/librt/primitives/bspline/bspline.c =================================================================== --- brlcad/trunk/src/librt/primitives/bspline/bspline.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/bspline/bspline.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1096,12 +1096,14 @@ * R T _ N U R B _ I F R E E */ void -rt_nurb_ifree(struct rt_db_internal *ip) +rt_nurb_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_nurb_internal *sip; register int i; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + sip = (struct rt_nurb_internal *) ip->idb_ptr; RT_NURB_CK_MAGIC(sip); Modified: brlcad/trunk/src/librt/primitives/cline/cline.c =================================================================== --- brlcad/trunk/src/librt/primitives/cline/cline.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/cline/cline.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1011,11 +1011,13 @@ * solid. */ void -rt_cline_ifree(struct rt_db_internal *ip) +rt_cline_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_cline_internal *cline_ip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); cline_ip->magic = 0; /* sanity */ Modified: brlcad/trunk/src/librt/primitives/ehy/ehy.c =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1656,11 +1656,13 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_ehy_ifree(struct rt_db_internal *ip) +rt_ehy_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_ehy_internal *xip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + xip = (struct rt_ehy_internal *)ip->idb_ptr; RT_EHY_CK_MAGIC(xip); xip->ehy_magic = 0; /* sanity */ Modified: brlcad/trunk/src/librt/primitives/ell/ell.c =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/ell/ell.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1315,9 +1315,11 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_ell_ifree(struct rt_db_internal *ip) +rt_ell_ifree(struct rt_db_internal *ip, struct resource *resp) { RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + bu_free( ip->idb_ptr, "ell ifree" ); ip->idb_ptr = GENPTR_NULL; } Modified: brlcad/trunk/src/librt/primitives/epa/epa.c =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/epa/epa.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1697,11 +1697,13 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_epa_ifree(struct rt_db_internal *ip) +rt_epa_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_epa_internal *xip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + xip = (struct rt_epa_internal *)ip->idb_ptr; RT_EPA_CK_MAGIC(xip); xip->epa_magic = 0; /* sanity */ Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-04-28 15:26:24 UTC (rev 34339) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-04-28 15:38:21 UTC (rev 34340) @@ -1425,11 +1425,13 @@ * Free the storage associated with the rt_db_internal version of this solid. */ void -rt_eto_ifree(struct rt_db_internal *ip) +rt_eto_ifree(struct rt_db_internal *ip, struct resource *resp) { register struct rt_eto_internal *tip; RT_CK_DB_INTERNAL(ip); + if (!resp) resp = &rt_uniresource; + tip = (struct rt_eto_internal *)ip->idb_ptr; RT_ETO_CK_MAGIC(tip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sta...@us...> - 2009-09-08 18:45:35
|
Revision: 35860 http://brlcad.svn.sourceforge.net/brlcad/?rev=35860&view=rev Author: starseeker Date: 2009-09-08 18:45:27 +0000 (Tue, 08 Sep 2009) Log Message: ----------- Get some of the 'easy' csg-brep added - these primitives will just convert to nmg and use that routine. ars has some longer term interesting possibilities, but for replicating existing surfaces this should do OK. ebm, which fundamentally uses pixels and has square edges (however small) should also be a fairly clean if fairly massive workable nmg conversion. Added Paths: ----------- brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp Added: brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp (rev 0) +++ brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp 2009-09-08 18:45:27 UTC (rev 35860) @@ -0,0 +1,73 @@ +/* B O T _ B R E P . C P P + * BRL-CAD + * + * Copyright (c) 2008-2009 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file bot_brep.cpp + * + * Convert a BOT primitive to b-rep form + * + */ + +#include "common.h" + +#include "raytrace.h" +#include "rtgeom.h" +#include "nmg.h" +#include "brep.h" + +extern "C" { +extern void rt_bot_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol,const struct bn_tol *tol); +extern void rt_nmg_brep(ON_Brep **bi, struct rt_db_internal *ip, const struct bn_tol *tol); +} + +/** + * R T _ B O T _ B R E P + */ +extern "C" void +rt_bot_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +{ + struct rt_db_internal *tmp_internal = (struct rt_db_internal *) bu_malloc(sizeof(struct rt_db_internal), "allocate structure"); + RT_INIT_DB_INTERNAL(tmp_internal); + struct rt_tess_tol ttmptol; + ttmptol.abs = 0; + ttmptol.rel = 0.01; + ttmptol.norm = 0; + const struct rt_tess_tol *ttol = &ttmptol; + + *b = NULL; + *b = ON_Brep::New(); + + struct model *botm = nmg_mm(); + struct nmgregion *botr; + tmp_internal->idb_ptr = (genptr_t)ip->idb_ptr; + rt_bot_tess(&botr, botm, tmp_internal, ttol, tol); + tmp_internal->idb_ptr = (genptr_t)botm; + rt_nmg_brep(b, tmp_internal, tol); + FREE_MODEL(botm); + bu_free(tmp_internal, "free temporary rt_db_internal"); +} + +// Local Variables: +// tab-width: 8 +// mode: C++ +// c-basic-offset: 4 +// indent-tabs-mode: t +// c-file-style: "stroustrup" +// End: +// ex: shiftwidth=4 tabstop=8 + Property changes on: brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp (rev 0) +++ brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp 2009-09-08 18:45:27 UTC (rev 35860) @@ -0,0 +1,73 @@ +/* E B M _ B R E P . C P P + * BRL-CAD + * + * Copyright (c) 2008-2009 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file ebm_brep.cpp + * + * Convert an Extruded Bitmap to b-rep form + * + */ + +#include "common.h" + +#include "raytrace.h" +#include "rtgeom.h" +#include "nmg.h" +#include "brep.h" + +extern "C" { +extern void rt_ebm_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol,const struct bn_tol *tol); +extern void rt_nmg_brep(ON_Brep **bi, struct rt_db_internal *ip, const struct bn_tol *tol); +} + +/** + * R T _ E B M _ B R E P + */ +extern "C" void +rt_ebm_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +{ + struct rt_db_internal *tmp_internal = (struct rt_db_internal *) bu_malloc(sizeof(struct rt_db_internal), "allocate structure"); + RT_INIT_DB_INTERNAL(tmp_internal); + struct rt_tess_tol ttmptol; + ttmptol.abs = 0; + ttmptol.rel = 0.01; + ttmptol.norm = 0; + const struct rt_tess_tol *ttol = &ttmptol; + + *b = NULL; + *b = ON_Brep::New(); + + struct model *ebmm = nmg_mm(); + struct nmgregion *ebmr; + tmp_internal->idb_ptr = (genptr_t)ip->idb_ptr; + rt_ebm_tess(&ebmr, ebmm, tmp_internal, ttol, tol); + tmp_internal->idb_ptr = (genptr_t)ebmm; + rt_nmg_brep(b, tmp_internal, tol); + FREE_MODEL(ebmm); + bu_free(tmp_internal, "free temporary rt_db_internal"); +} + +// Local Variables: +// tab-width: 8 +// mode: C++ +// c-basic-offset: 4 +// indent-tabs-mode: t +// c-file-style: "stroustrup" +// End: +// ex: shiftwidth=4 tabstop=8 + Property changes on: brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp (rev 0) +++ brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp 2009-09-08 18:45:27 UTC (rev 35860) @@ -0,0 +1,73 @@ +/* P O L Y _ B R E P . C P P + * BRL-CAD + * + * Copyright (c) 2008-2009 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file poly_brep.cpp + * + * Convert a poly to an nmg, and thus to b-rep form + * + */ + +#include "common.h" + +#include "raytrace.h" +#include "rtgeom.h" +#include "nmg.h" +#include "brep.h" + +extern "C" { +extern void rt_pg_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol,const struct bn_tol *tol); +extern void rt_nmg_brep(ON_Brep **bi, struct rt_db_internal *ip, const struct bn_tol *tol); +} + +/** + * R T _ P G _ B R E P + */ +extern "C" void +rt_pg_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +{ + struct rt_db_internal *tmp_internal = (struct rt_db_internal *) bu_malloc(sizeof(struct rt_db_internal), "allocate structure"); + RT_INIT_DB_INTERNAL(tmp_internal); + struct rt_tess_tol ttmptol; + ttmptol.abs = 0; + ttmptol.rel = 0.01; + ttmptol.norm = 0; + const struct rt_tess_tol *ttol = &ttmptol; + + *b = NULL; + *b = ON_Brep::New(); + + struct model *polym = nmg_mm(); + struct nmgregion *polyr; + tmp_internal->idb_ptr = (genptr_t)ip->idb_ptr; + rt_pg_tess(&polyr, polym, tmp_internal, ttol, tol); + tmp_internal->idb_ptr = (genptr_t)polym; + rt_nmg_brep(b, tmp_internal, tol); + FREE_MODEL(polym); + bu_free(tmp_internal, "free temporary rt_db_internal"); +} + +// Local Variables: +// tab-width: 8 +// mode: C++ +// c-basic-offset: 4 +// indent-tabs-mode: t +// c-file-style: "stroustrup" +// End: +// ex: shiftwidth=4 tabstop=8 + Property changes on: brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-10-01 00:45:17
|
Revision: 36120 http://brlcad.svn.sourceforge.net/brlcad/?rev=36120&view=rev Author: brlcad Date: 2009-10-01 00:45:09 +0000 (Thu, 01 Oct 2009) Log Message: ----------- more static factory allocation via New() instead of new Modified Paths: -------------- brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp Modified: brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) +++ brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-10-01 00:45:09 UTC (rev 36120) @@ -161,7 +161,7 @@ bezpoints1->Append(*ctrlpt); } ON_BezierCurve *s1_bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints1); - ON_NurbsCurve* s1_beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* s1_beznurb3d = ON_NurbsCurve::New(); s1_bez3d->GetNurbForm(*s1_beznurb3d); s1_beznurb3d->SetDomain(0.0,1.0); boundary.Append(s1_beznurb3d); @@ -204,7 +204,7 @@ bezpoints2->Append(*ctrlpt); } ON_BezierCurve *s2_bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints2); - ON_NurbsCurve* s2_beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* s2_beznurb3d = ON_NurbsCurve::New(); s2_bez3d->GetNurbForm(*s2_beznurb3d); s2_beznurb3d->SetDomain(0.0,1.0); boundary.Append(s2_beznurb3d); @@ -248,7 +248,7 @@ bezpoints3->Append(*ctrlpt); } ON_BezierCurve *s3_bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints3); - ON_NurbsCurve* s3_beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* s3_beznurb3d = ON_NurbsCurve::New(); s3_bez3d->GetNurbForm(*s3_beznurb3d); s3_beznurb3d->SetDomain(0.0,1.0); boundary.Append(s3_beznurb3d); @@ -291,7 +291,7 @@ bezpoints4->Append(*ctrlpt); } ON_BezierCurve *s4_bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints4); - ON_NurbsCurve* s4_beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* s4_beznurb3d = ON_NurbsCurve::New(); s4_bez3d->GetNurbForm(*s4_beznurb3d); s4_beznurb3d->SetDomain(0.0,1.0); boundary.Append(s4_beznurb3d); Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp 2009-10-01 00:45:09 UTC (rev 36120) @@ -36,7 +36,7 @@ */ static ON_Surface* sideSurface(const ON_3dPoint& SW, const ON_3dPoint& SE, const ON_3dPoint& NE, const ON_3dPoint& NW) { - ON_NurbsSurface *surf = new ON_NurbsSurface(3,FALSE, 2, 2, 2, 2); + ON_NurbsSurface *surf = ON_NurbsSurface::New(3,FALSE, 2, 2, 2, 2); surf->SetCV(0,0,SW); surf->SetCV(1,0,SE); surf->SetCV(1,1,NE); Modified: brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) +++ brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp 2009-10-01 00:45:09 UTC (rev 36120) @@ -245,7 +245,7 @@ bezpoints->Append((*b)->m_V[bsg->ctl_points[i]].Point()); } ON_BezierCurve* bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints); - ON_NurbsCurve* beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* beznurb3d = ON_NurbsCurve::New(); bez3d->GetNurbForm(*beznurb3d); beznurb3d->SetDomain(0.0,1.0); (*b)->m_C3.Append(beznurb3d); Modified: brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) +++ brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp 2009-10-01 00:45:09 UTC (rev 36120) @@ -222,7 +222,7 @@ bezpoints->Append((*b)->m_V[bsg->ctl_points[i]].Point()); } ON_BezierCurve* bez3d = new ON_BezierCurve((const ON_3dPointArray)*bezpoints); - ON_NurbsCurve* beznurb3d = new ON_NurbsCurve(); + ON_NurbsCurve* beznurb3d = ON_NurbsCurve::New(); bez3d->GetNurbForm(*beznurb3d); beznurb3d->SetDomain(0.0,1.0); (*b)->m_C3.Append(beznurb3d); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-10-01 00:50:27
|
Revision: 36119 http://brlcad.svn.sourceforge.net/brlcad/?rev=36119&view=rev Author: brlcad Date: 2009-10-01 00:17:10 +0000 (Thu, 01 Oct 2009) Log Message: ----------- opennurbs provides a static factory allocator so that objects are instantiated within the DLL on Windows. be a good citizen and call that instead of calling new directly. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/brep/brep.cpp brlcad/trunk/src/librt/primitives/bspline/nurb_brep.cpp brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp brlcad/trunk/src/librt/primitives/pipe/pipe_brep.cpp brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp brlcad/trunk/src/librt/primitives/rpc/rpc_brep.cpp brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp brlcad/trunk/src/librt/primitives/tgc/tgc_brep.cpp Modified: brlcad/trunk/src/librt/primitives/brep/brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -2861,7 +2861,7 @@ ONX_Model_Object mo = model.m_object_table[0]; // XXX does openNURBS force us to copy? it seems the answer is // YES due to the const-ness - bi->brep = new ON_Brep(*ON_Brep::Cast(mo.m_object)); + bi->brep = ON_Brep::New(*ON_Brep::Cast(mo.m_object)); return 0; } else { return -1; Modified: brlcad/trunk/src/librt/primitives/bspline/nurb_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/bspline/nurb_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/bspline/nurb_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -42,7 +42,8 @@ RT_CK_DB_INTERNAL(ip); nip = (struct rt_nurb_internal *)ip->idb_ptr; RT_NURB_CK_MAGIC(nip); - + +#if 0 for (i = 0; i < nip->nsrf; i++) { point_t min_bound, max_bound; NMG_CK_SNURB(nip->srfs[i]); @@ -59,6 +60,16 @@ ON_Sphere sph(center, DIST_PT_PT(min_pt, max_pt) * 0.5); *b = ON_BrepSphere(sph); + +#else + + *b = ON_Brep::New(); + + for (i = 0; i < nip->nsrf; i++) { + + } + +#endif } Modified: brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,13 +37,9 @@ extern "C" void rt_dsp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - - struct rt_dsp_internal *dsp_ip; - struct bu_mapped_file *mf; + struct rt_dsp_internal *dsp_ip; + struct bu_mapped_file *mf; - - *b = NULL; - RT_CK_DB_INTERNAL(ip); dsp_ip = (struct rt_dsp_internal *)ip->idb_ptr; RT_DSP_CK_MAGIC(dsp_ip); @@ -57,9 +53,8 @@ bu_cv_w_cookie(mf->apbuf, out_cookie, mf->apbuflen, mf->buf, in_cookie, count); dsp_ip->dsp_buf = (short unsigned int*)mf->apbuf; - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,18 +37,14 @@ extern "C" void rt_ehy_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - - struct rt_ehy_internal *eip; + struct rt_ehy_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_ehy_internal *)ip->idb_ptr; RT_EHY_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -41,7 +41,7 @@ eip = (struct rt_ell_internal *)ip->idb_ptr; RT_ELL_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); point_t origin; VSET(origin, 0,0,0); Modified: brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,18 +37,14 @@ extern "C" void rt_epa_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - - struct rt_epa_internal *eip; + struct rt_epa_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_epa_internal *)ip->idb_ptr; RT_EPA_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,15 +37,14 @@ extern "C" void rt_hyp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - struct rt_hyp_internal *eip; + struct rt_hyp_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_hyp_internal *)ip->idb_ptr; RT_HYP_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); + ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -68,7 +68,8 @@ brepi = static_cast<long*>(bu_malloc(m->maxindex * sizeof(long), "rt_nmg_brep: brepi[]")); for (int i = 0; i < m->maxindex; i++) brepi[i] = -INT_MAX; - *b = new ON_Brep(); + *b = ON_Brep::New(); + for (BU_LIST_FOR(r, nmgregion, &m->r_hd)) { for (BU_LIST_FOR(s, shell, &r->s_hd)) { for (BU_LIST_FOR(fu, faceuse, &s->fu_hd)) { Modified: brlcad/trunk/src/librt/primitives/pipe/pipe_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/pipe/pipe_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/pipe/pipe_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -136,8 +136,6 @@ ON_Plane *endplane; ON_BrepLoop *bloop; - *b = NULL; - RT_CK_DB_INTERNAL(ip); pip = (struct rt_pipe_internal *)ip->idb_ptr; RT_PIPE_CK_MAGIC(pip); @@ -150,8 +148,7 @@ VMOVE(current_point, prevp->pp_coord); - *b = new ON_Brep(); - + *b = ON_Brep::New(); VSUB2(pipe_dir, prevp->pp_coord, curp->pp_coord); bn_vec_ortho(x_dir, pipe_dir); Modified: brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -168,16 +168,14 @@ RT_INIT_DB_INTERNAL(tmp_internal); struct rt_revolve_internal *rip; struct rt_sketch_internal *eip; + rip = (struct rt_revolve_internal *)ip->idb_ptr; RT_REVOLVE_CK_MAGIC(rip); eip = rip->sk; RT_SKETCH_CK_MAGIC(eip); - *b = NULL; + *b = ON_Brep::New(); -*b = new ON_Brep(); - - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,18 +37,14 @@ extern "C" void rt_rhc_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - - struct rt_rhc_internal *eip; + struct rt_rhc_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_rhc_internal *)ip->idb_ptr; RT_RHC_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/rpc/rpc_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/rpc/rpc_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/rpc/rpc_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,18 +37,14 @@ extern "C" void rt_rpc_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - - struct rt_rpc_internal *eip; + struct rt_rpc_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_rpc_internal *)ip->idb_ptr; RT_RPC_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; Modified: brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -147,25 +147,20 @@ extern "C" void rt_sketch_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { + struct rt_sketch_internal *eip; - struct rt_sketch_internal *eip; - - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_sketch_internal *)ip->idb_ptr; RT_SKETCH_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; ON_3dPoint plane_origin; ON_3dVector plane_x_dir, plane_y_dir; - // Find plane in 3 space corresponding to the sketch. plane_origin = ON_3dPoint(eip->V); Modified: brlcad/trunk/src/librt/primitives/tgc/tgc_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/tgc/tgc_brep.cpp 2009-09-30 22:46:35 UTC (rev 36118) +++ brlcad/trunk/src/librt/primitives/tgc/tgc_brep.cpp 2009-10-01 00:17:10 UTC (rev 36119) @@ -37,15 +37,14 @@ extern "C" void rt_tgc_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) { - struct rt_tgc_internal *eip; + struct rt_tgc_internal *eip; - *b = NULL; - RT_CK_DB_INTERNAL(ip); eip = (struct rt_tgc_internal *)ip->idb_ptr; RT_TGC_CK_MAGIC(eip); - *b = new ON_Brep(); + *b = ON_Brep::New(); + point_t p1_origin, p2_origin; ON_3dPoint plane1_origin, plane2_origin; ON_3dVector plane1_x_dir, plane1_y_dir, plane2_x_dir, plane2_y_dir; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-11-30 07:57:21
|
Revision: 36724 http://brlcad.svn.sourceforge.net/brlcad/?rev=36724&view=rev Author: brlcad Date: 2009-11-30 07:57:12 +0000 (Mon, 30 Nov 2009) Log Message: ----------- ws style indent comment consistency update Modified Paths: -------------- brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/librt/primitives/arb8/arb8_brep.cpp brlcad/trunk/src/librt/primitives/arbn/arbn.c brlcad/trunk/src/librt/primitives/arbn/arbn_brep.cpp brlcad/trunk/src/librt/primitives/ars/ars.c brlcad/trunk/src/librt/primitives/bot/bot.c brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp brlcad/trunk/src/librt/primitives/bot/g_bot_include.c brlcad/trunk/src/librt/primitives/brep/brep.cpp brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp brlcad/trunk/src/librt/primitives/brep/brep_debug.h Modified: brlcad/trunk/src/librt/primitives/arb8/arb8.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-11-30 01:10:18 UTC (rev 36723) +++ brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-11-30 07:57:12 UTC (rev 36724) @@ -63,57 +63,57 @@ #include "nurb.h" -#define RT_SLOPPY_DOT_TOL 0.0087 /* inspired by RT_DOT_TOL, but less tight (.5 deg) */ +#define RT_SLOPPY_DOT_TOL 0.0087 /* inspired by RT_DOT_TOL, but less tight (.5 deg) */ /* Optionally, one of these for each face. (Lazy evaluation) */ struct oface { - fastf_t arb_UVorig[3]; /* origin of UV coord system */ - fastf_t arb_U[3]; /* unit U vector (along B-A) */ - fastf_t arb_V[3]; /* unit V vector (perp to N and U) */ - fastf_t arb_Ulen; /* length of U basis (for du) */ - fastf_t arb_Vlen; /* length of V basis (for dv) */ + fastf_t arb_UVorig[3]; /* origin of UV coord system */ + fastf_t arb_U[3]; /* unit U vector (along B-A) */ + fastf_t arb_V[3]; /* unit V vector (perp to N and U) */ + fastf_t arb_Ulen; /* length of U basis (for du) */ + fastf_t arb_Vlen; /* length of V basis (for dv) */ }; /* One of these for each face */ struct aface { - fastf_t A[3]; /* "A" point */ - plane_t peqn; /* Plane equation, unit normal */ + fastf_t A[3]; /* "A" point */ + plane_t peqn; /* Plane equation, unit normal */ }; /* One of these for each ARB, custom allocated to size */ struct arb_specific { - int arb_nmfaces; /* number of faces */ - struct oface *arb_opt; /* pointer to optional info */ - struct aface arb_face[4]; /* May really be up to [6] faces */ + int arb_nmfaces; /* number of faces */ + struct oface *arb_opt; /* pointer to optional info */ + struct aface arb_face[4]; /* May really be up to [6] faces */ }; /* These hold temp values for the face being prep'ed */ struct prep_arb { - vect_t pa_center; /* center point */ - int pa_faces; /* Number of faces done so far */ - int pa_npts[6]; /* # of points on face's plane */ - int pa_pindex[4][6]; /* subscr in arbi_pt[] */ - int pa_clockwise[6]; /* face normal was flipped */ - struct aface pa_face[6]; /* required face info work area */ - struct oface pa_opt[6]; /* optional face info work area */ + vect_t pa_center; /* center point */ + int pa_faces; /* Number of faces done so far */ + int pa_npts[6]; /* # of points on face's plane */ + int pa_pindex[4][6]; /* subscr in arbi_pt[] */ + int pa_clockwise[6]; /* face normal was flipped */ + struct aface pa_face[6]; /* required face info work area */ + struct oface pa_opt[6]; /* optional face info work area */ /* These elements must be initialized before using */ - fastf_t pa_tol_sq; /* points-are-equal tol sq */ - int pa_doopt; /* compute pa_opt[] stuff */ + fastf_t pa_tol_sq; /* points-are-equal tol sq */ + int pa_doopt; /* compute pa_opt[] stuff */ }; /* - * Layout of arb in input record. - * Points are listed in "clockwise" order, - * to make proper outward-pointing face normals. - * (Although the cross product wants counter-clockwise order) + * Layout of arb in input record. + * Points are listed in "clockwise" order, + * to make proper outward-pointing face normals. + * (Although the cross product wants counter-clockwise order) */ struct arb_info { - char *ai_title; - int ai_sub[4]; + char *ai_title; + int ai_sub[4]; }; static const struct arb_info rt_arb_info[6] = { - { "1234", {3, 2, 1, 0} }, /* "bottom" face */ - { "8765", {4, 5, 6, 7} }, /* "top" face */ + { "1234", {3, 2, 1, 0} }, /* "bottom" face */ + { "8765", {4, 5, 6, 7} }, /* "top" face */ { "1485", {4, 7, 3, 0} }, { "2673", {2, 6, 5, 1} }, { "1562", {1, 5, 4, 0} }, @@ -133,11 +133,12 @@ { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } }; -/* rt_arb_get_cgtype(), rt_arb_std_type(), and rt_arb_centroid() - * stolen from mged/arbs.c */ -#define NO 0 -#define YES 1 +/* rt_arb_get_cgtype(), rt_arb_std_type(), and rt_arb_centroid() + * stolen from mged/arbs.c */ +#define NO 0 +#define YES 1 + /** * R T _ A R B _ G E T _ C G T Y P E * @@ -145,30 +146,27 @@ * * Inputs - * - * Returns - - * # Number of distinct edge vectors - * (Number of entries in uvec array) + * Returns number of distinct edge vectors (number of entries in uvec array) * * Implicit returns - - * *cgtype - Comgeom type (number range 4..8; ARB4 .. ARB8). - * uvec[8] - indices of unique vertices (return value is the number of valid entries) - * svec[11] - Entries [0] and [1] are special (they are the counts of duplicates) - * entries 2-10 are 2 lists of duplicate vertices - * entry[0] gives length of first list (starts at entry[2]) - * entry[1] gives length of second list (starts at entry[2+entry[0]]) - * + * *cgtype - Comgeom type (number range 4..8; ARB4 .. ARB8). + * uvec[8] - indices of unique vertices (return value is the number of valid entries) + * svec[11] - Entries [0] and [1] are special (they are the counts of duplicates) + * entries 2-10 are 2 lists of duplicate vertices + * entry[0] gives length of first list (starts at entry[2]) + * entry[1] gives length of second list (starts at entry[2+entry[0]]) */ int rt_arb_get_cgtype( - int *cgtype, - struct rt_arb_internal *arb, - const struct bn_tol *tol, + int *cgtype, + struct rt_arb_internal *arb, + const struct bn_tol *tol, register int *uvec, /* array of unique points */ register int *svec) /* array of like points */ { - register int i,j; - int numuvec, unique, done; - int si; + register int i, j; + int numuvec, unique, done; + int si; RT_ARB_CK_MAGIC(arb); BN_CK_TOL(tol); @@ -187,38 +185,38 @@ int tmp; vect_t vtmp; - VSUB2( vtmp, arb->pt[i], arb->pt[j] ); + VSUB2(vtmp, arb->pt[i], arb->pt[j]); - if ( fabs(vtmp[0]) > tol->dist) tmp = 0; - else if ( fabs(vtmp[1]) > tol->dist) tmp = 0; - else if ( fabs(vtmp[2]) > tol->dist) tmp = 0; + if (fabs(vtmp[0]) > tol->dist) tmp = 0; + else if (fabs(vtmp[1]) > tol->dist) tmp = 0; + else if (fabs(vtmp[2]) > tol->dist) tmp = 0; else tmp = 1; - if ( tmp ) { - if ( done == NO ) + if (tmp) { + if (done == NO) svec[++si] = j; unique = NO; } } - if ( unique == NO ) { + if (unique == NO) { /* point i not unique */ - if ( si > 2 && si < 6 ) { + if (si > 2 && si < 6) { svec[0] = si - 1; if (si == 5 && svec[5] >= 6) done = YES; si = 6; } - if ( si > 6 ) { + if (si > 6) { svec[1] = si - 5; done = YES; } } } - if ( si > 2 && si < 6 ) { + if (si > 2 && si < 6) { svec[0] = si - 1; } - if ( si > 6 ) { + if (si > 6) { svec[1] = si - 5; } for (i=1; i<=svec[1]; i++) { @@ -233,18 +231,18 @@ for (j=0; j<8; j++) { unique = YES; for (i=2; i<svec[0]+svec[1]+2; i++) { - if ( j == svec[i] ) { + if (j == svec[i]) { unique = NO; break; } } - if ( unique == YES ) { + if (unique == YES) { uvec[numuvec++] = j; } } /* Figure out what kind of ARB this is */ - switch ( numuvec ) { + switch (numuvec) { case 8: *cgtype = ARB8; /* ARB8 */ @@ -266,8 +264,8 @@ break; default: - bu_log( "rt_arb_get_cgtype: bad number of unique vectors (%d)\n", - numuvec); + bu_log("rt_arb_get_cgtype: bad number of unique vectors (%d)\n", + numuvec); return(0); } @@ -275,12 +273,13 @@ bu_log("uvec: "); for (j=0; j<8; j++) bu_log("%d, ", uvec[j]); bu_log("\nsvec: "); - for (j=0; j<11; j++ ) bu_log("%d, ", svec[j]); + for (j=0; j<11; j++) bu_log("%d, ", svec[j]); bu_log("\n"); #endif - return( numuvec ); + return(numuvec); } + /** * R T _ A R B _ S T D _ T Y P E * @@ -289,35 +288,35 @@ * Set tol.dist = 0.0001 to obtain past behavior. * * Returns - - * 0 Error in input ARB - * 4 ARB4 - * 5 ARB5 - * 6 ARB6 - * 7 ARB7 - * 8 ARB8 + * 0 Error in input ARB + * 4 ARB4 + * 5 ARB5 + * 6 ARB6 + * 7 ARB7 + * 8 ARB8 * * Implicit return - - * rt_arb_internal pt[] array reorganized into GIFT "standard" order. + * rt_arb_internal pt[] array reorganized into GIFT "standard" order. */ int -rt_arb_std_type( const struct rt_db_internal *ip, const struct bn_tol *tol ) +rt_arb_std_type(const struct rt_db_internal *ip, const struct bn_tol *tol) { - struct rt_arb_internal *arb; + struct rt_arb_internal *arb; int uvec[8], svec[11]; - int cgtype = 0; + int cgtype = 0; RT_CK_DB_INTERNAL(ip); BN_CK_TOL(tol); - if ( ip->idb_type != ID_ARB8 ) bu_bomb("rt_arb_std_type: not ARB!\n"); + if (ip->idb_type != ID_ARB8) bu_bomb("rt_arb_std_type: not ARB!\n"); arb = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(arb); - if ( rt_arb_get_cgtype( &cgtype, arb, tol, uvec, svec ) == 0 ) + if (rt_arb_get_cgtype(&cgtype, arb, tol, uvec, svec) == 0) return(0); - return( cgtype ); + return(cgtype); } @@ -328,23 +327,24 @@ * with the given number of verticies. Return the point in center_pt. */ void -rt_arb_centroid( point_t center_pt, const struct rt_arb_internal *arb, int npoints ) +rt_arb_centroid(point_t center_pt, const struct rt_arb_internal *arb, int npoints) { - register int j; - fastf_t div; - point_t sum; + register int j; + fastf_t div; + point_t sum; RT_ARB_CK_MAGIC(arb); VSETALL(sum, 0); - for ( j=0; j < npoints; j++ ) { - VADD2( sum, sum, arb->pt[j] ); + for (j=0; j < npoints; j++) { + VADD2(sum, sum, arb->pt[j]); } div = 1.0 / npoints; - VSCALE( center_pt, sum, div ); + VSCALE(center_pt, sum, div); } + /** * R T _ A R B _ A D D _ P T * @@ -354,8 +354,8 @@ * checked for validity. * * Returns - - * 0 point was accepted - * -1 point was rejected + * 0 point was accepted + * -1 point was rejected */ HIDDEN int rt_arb_add_pt(register pointp_t point, const char *title, struct prep_arb *pap, int ptno, const char *name) @@ -364,122 +364,122 @@ /* current point # on face */ { - vect_t work; - vect_t P_A; /* new point minus A */ - fastf_t f; - register struct aface *afp; - register struct oface *ofp; + vect_t work; + vect_t P_A; /* new point minus A */ + fastf_t f; + register struct aface *afp; + register struct oface *ofp; afp = &pap->pa_face[pap->pa_faces]; ofp = &pap->pa_opt[pap->pa_faces]; /* The first 3 points are treated differently */ - switch ( ptno ) { + switch (ptno) { case 0: - VMOVE( afp->A, point ); - if ( pap->pa_doopt ) { - VMOVE( ofp->arb_UVorig, point ); + VMOVE(afp->A, point); + if (pap->pa_doopt) { + VMOVE(ofp->arb_UVorig, point); } return(0); /* OK */ case 1: - VSUB2( ofp->arb_U, point, afp->A ); /* B-A */ - f = MAGNITUDE( ofp->arb_U ); - if ( NEAR_ZERO( f, SQRT_SMALL_FASTF ) ) { + VSUB2(ofp->arb_U, point, afp->A); /* B-A */ + f = MAGNITUDE(ofp->arb_U); + if (NEAR_ZERO(f, SQRT_SMALL_FASTF)) { return(-1); /* BAD */ } ofp->arb_Ulen = f; f = 1/f; - VSCALE( ofp->arb_U, ofp->arb_U, f ); + VSCALE(ofp->arb_U, ofp->arb_U, f); /* Note that arb_U is used to build N, below */ return(0); /* OK */ case 2: - VSUB2( P_A, point, afp->A ); /* C-A */ + VSUB2(P_A, point, afp->A); /* C-A */ /* Pts are given clockwise, so reverse terms of cross prod. */ /* peqn = (C-A)x(B-A), which points inwards */ - VCROSS( afp->peqn, P_A, ofp->arb_U ); + VCROSS(afp->peqn, P_A, ofp->arb_U); /* Check for co-linear, ie, |(B-A)x(C-A)| ~= 0 */ - f = MAGNITUDE( afp->peqn ); - if ( NEAR_ZERO(f,RT_SLOPPY_DOT_TOL) ) { + f = MAGNITUDE(afp->peqn); + if (NEAR_ZERO(f, RT_SLOPPY_DOT_TOL)) { return(-1); /* BAD */ } f = 1/f; - VSCALE( afp->peqn, afp->peqn, f ); + VSCALE(afp->peqn, afp->peqn, f); - if ( pap->pa_doopt ) { + if (pap->pa_doopt) { /* * Get vector perp. to AB in face of plane ABC. * Scale by projection of AC, make this V. */ - VCROSS( work, afp->peqn, ofp->arb_U ); - VUNITIZE( work ); - f = VDOT( work, P_A ); - VSCALE( ofp->arb_V, work, f ); - f = MAGNITUDE( ofp->arb_V ); + VCROSS(work, afp->peqn, ofp->arb_U); + VUNITIZE(work); + f = VDOT(work, P_A); + VSCALE(ofp->arb_V, work, f); + f = MAGNITUDE(ofp->arb_V); ofp->arb_Vlen = f; f = 1/f; - VSCALE( ofp->arb_V, ofp->arb_V, f ); + VSCALE(ofp->arb_V, ofp->arb_V, f); /* Check for new Ulen */ - VSUB2( P_A, point, ofp->arb_UVorig ); - f = VDOT( P_A, ofp->arb_U ); - if ( f > ofp->arb_Ulen ) { + VSUB2(P_A, point, ofp->arb_UVorig); + f = VDOT(P_A, ofp->arb_U); + if (f > ofp->arb_Ulen) { ofp->arb_Ulen = f; - } else if ( f < 0.0 ) { - VJOIN1( ofp->arb_UVorig, ofp->arb_UVorig, f, - ofp->arb_U ); + } else if (f < 0.0) { + VJOIN1(ofp->arb_UVorig, ofp->arb_UVorig, f, + ofp->arb_U); ofp->arb_Ulen += (-f); } } /* - * If C-A is clockwise from B-A, then the normal - * points inwards, so we need to fix it here. - * Build a vector from the centroid to vertex A. - * If the surface normal points in the same direction, - * then the vertcies were given in CCW order; - * otherwise, vertices were given in CW order, and - * the normal needs to be flipped. + * If C-A is clockwise from B-A, then the normal + * points inwards, so we need to fix it here. + * Build a vector from the centroid to vertex A. + * If the surface normal points in the same direction, + * then the vertcies were given in CCW order; + * otherwise, vertices were given in CW order, and + * the normal needs to be flipped. */ - VSUB2( work, afp->A, pap->pa_center ); - f = VDOT( work, afp->peqn ); - if ( f < 0.0 ) { + VSUB2(work, afp->A, pap->pa_center); + f = VDOT(work, afp->peqn); + if (f < 0.0) { VREVERSE(afp->peqn, afp->peqn); /* "fix" normal */ pap->pa_clockwise[pap->pa_faces] = 1; } else { pap->pa_clockwise[pap->pa_faces] = 0; } - afp->peqn[W] = VDOT( afp->peqn, afp->A ); + afp->peqn[W] = VDOT(afp->peqn, afp->A); return(0); /* OK */ default: /* Merely validate 4th and subsequent points */ - if ( pap->pa_doopt ) { - VSUB2( P_A, point, ofp->arb_UVorig ); + if (pap->pa_doopt) { + VSUB2(P_A, point, ofp->arb_UVorig); /* Check for new Ulen, Vlen */ - f = VDOT( P_A, ofp->arb_U ); - if ( f > ofp->arb_Ulen ) { + f = VDOT(P_A, ofp->arb_U); + if (f > ofp->arb_Ulen) { ofp->arb_Ulen = f; - } else if ( f < 0.0 ) { - VJOIN1( ofp->arb_UVorig, ofp->arb_UVorig, f, - ofp->arb_U ); + } else if (f < 0.0) { + VJOIN1(ofp->arb_UVorig, ofp->arb_UVorig, f, + ofp->arb_U); ofp->arb_Ulen += (-f); } - f = VDOT( P_A, ofp->arb_V ); - if ( f > ofp->arb_Vlen ) { + f = VDOT(P_A, ofp->arb_V); + if (f > ofp->arb_Vlen) { ofp->arb_Vlen = f; - } else if ( f < 0.0 ) { - VJOIN1( ofp->arb_UVorig, ofp->arb_UVorig, f, - ofp->arb_V ); + } else if (f < 0.0) { + VJOIN1(ofp->arb_UVorig, ofp->arb_UVorig, f, + ofp->arb_V); ofp->arb_Vlen += (-f); } } - VSUB2( P_A, point, afp->A ); - VUNITIZE( P_A ); /* Checking direction only */ - f = VDOT( afp->peqn, P_A ); - if ( ! NEAR_ZERO(f,RT_SLOPPY_DOT_TOL) ) { + VSUB2(P_A, point, afp->A); + VUNITIZE(P_A); /* Checking direction only */ + f = VDOT(afp->peqn, P_A); + if (! NEAR_ZERO(f, RT_SLOPPY_DOT_TOL)) { /* Non-planar face */ bu_log("arb(%s): face %s[%d] non-planar, dot=%g\n", - name, title, ptno, f ); + name, title, ptno, f); #ifdef CONSERVATIVE return(-1); /* BAD */ #endif @@ -489,6 +489,7 @@ /* NOTREACHED */ } + /** * R T _ A R B _ M K _ P L A N E S * @@ -496,17 +497,17 @@ * face information. * * Returns - - * 0 OK - * <0 failure + * 0 OK + * <0 failure */ HIDDEN int rt_arb_mk_planes(register struct prep_arb *pap, struct rt_arb_internal *aip, const char *name) { - vect_t sum; /* Sum of all endpoints */ - register int i; - register int j; - register int k; - int equiv_pts[8]; + vect_t sum; /* Sum of all endpoints */ + register int i; + register int j; + register int k; + int equiv_pts[8]; /* * Determine a point which is guaranteed to be within the solid. @@ -517,11 +518,11 @@ * non-axis aligned, so this dual-strategy is required. (What a * bug hunt!). */ - VSETALL( sum, 0 ); - for ( i=0; i<8; i++ ) { - VADD2( sum, sum, aip->pt[i] ); + VSETALL(sum, 0); + for (i=0; i<8; i++) { + VADD2(sum, sum, aip->pt[i]); } - VSCALE( pap->pa_center, sum, 0.125 ); /* sum/8 */ + VSCALE(pap->pa_center, sum, 0.125); /* sum/8 */ /* * Find all points that are equivalent, within the specified tol. @@ -530,13 +531,13 @@ * its own vertex number, if non-equivalent). */ equiv_pts[0] = 0; - for ( i=1; i<8; i++ ) { - for ( j = i-1; j >= 0; j-- ) { + for (i=1; i<8; i++) { + for (j = i-1; j >= 0; j--) { /* Compare vertices I and J */ - vect_t work; + vect_t work; - VSUB2( work, aip->pt[i], aip->pt[j] ); - if ( MAGSQ( work ) < pap->pa_tol_sq ) { + VSUB2(work, aip->pt[i], aip->pt[j]); + if (MAGSQ(work) < pap->pa_tol_sq) { /* Points I and J are the same, J is lower */ equiv_pts[i] = equiv_pts[j]; goto next_point; @@ -545,7 +546,7 @@ equiv_pts[i] = i; next_point: ; } - if ( RT_G_DEBUG & DEBUG_ARB8 ) { + if (RT_G_DEBUG & DEBUG_ARB8) { bu_log("arb(%s) equiv_pts[] = %d %d %d %d %d %d %d %d\n", name, equiv_pts[0], equiv_pts[1], equiv_pts[2], equiv_pts[3], @@ -553,32 +554,32 @@ } pap->pa_faces = 0; - for ( i=0; i<6; i++ ) { - int npts; + for (i=0; i<6; i++) { + int npts; npts = 0; - for ( j=0; j<4; j++ ) { - int pt_index; + for (j=0; j<4; j++) { + int pt_index; pt_index = rt_arb_info[i].ai_sub[j]; - if ( RT_G_DEBUG & DEBUG_ARB8 ) { + if (RT_G_DEBUG & DEBUG_ARB8) { bu_log("face %d, j=%d, npts=%d, orig_vert=%d, vert=%d\n", i, j, npts, - pt_index, equiv_pts[pt_index] ); + pt_index, equiv_pts[pt_index]); } pt_index = equiv_pts[pt_index]; /* Verify that this point is not the same as an earlier * point, by checking point indices */ - for ( k = npts-1; k >= 0; k-- ) { - if ( pap->pa_pindex[k][pap->pa_faces] == pt_index ) { + for (k = npts-1; k >= 0; k--) { + if (pap->pa_pindex[k][pap->pa_faces] == pt_index) { /* Point is the same -- skip it */ goto skip_pt; } } - if ( rt_arb_add_pt( aip->pt[pt_index], - rt_arb_info[i].ai_title, pap, npts, name ) == 0 ) { + if (rt_arb_add_pt(aip->pt[pt_index], + rt_arb_info[i].ai_title, pap, npts, name) == 0) { /* Point was accepted */ pap->pa_pindex[npts][pap->pa_faces] = pt_index; npts++; @@ -587,13 +588,13 @@ skip_pt: ; } - if ( npts < 3 ) { + if (npts < 3) { /* This face is BAD */ continue; } - if ( pap->pa_doopt ) { - register struct oface *ofp; + if (pap->pa_doopt) { + register struct oface *ofp; ofp = &pap->pa_opt[pap->pa_faces]; /* Scale U and V basis vectors by @@ -601,14 +602,14 @@ */ ofp->arb_Ulen = 1.0 / ofp->arb_Ulen; ofp->arb_Vlen = 1.0 / ofp->arb_Vlen; - VSCALE( ofp->arb_U, ofp->arb_U, ofp->arb_Ulen ); - VSCALE( ofp->arb_V, ofp->arb_V, ofp->arb_Vlen ); + VSCALE(ofp->arb_U, ofp->arb_U, ofp->arb_Ulen); + VSCALE(ofp->arb_V, ofp->arb_V, ofp->arb_Vlen); } pap->pa_npts[pap->pa_faces] = npts; pap->pa_faces++; } - if ( pap->pa_faces < 4 || pap->pa_faces > 6 ) { + if (pap->pa_faces < 4 || pap->pa_faces > 6) { bu_log("arb(%s): only %d faces present\n", name, pap->pa_faces); return(-1); /* Error */ @@ -616,6 +617,7 @@ return(0); /* OK */ } + /** * R T _ A R B _ S E T U P * @@ -623,45 +625,45 @@ * called "on the fly" from the UV mapper. * * Returns - - * 0 OK - * !0 failure + * 0 OK + * !0 failure */ HIDDEN int rt_arb_setup(struct soltab *stp, struct rt_arb_internal *aip, struct rt_i *rtip, int uv_wanted) { - register int i; - struct prep_arb pa; + register int i; + struct prep_arb pa; RT_ARB_CK_MAGIC(aip); pa.pa_doopt = uv_wanted; pa.pa_tol_sq = rtip->rti_tol.dist_sq; - if ( rt_arb_mk_planes( &pa, aip, stp->st_dp->d_namep ) < 0 ) { + if (rt_arb_mk_planes(&pa, aip, stp->st_dp->d_namep) < 0) { return(-2); /* Error */ } /* - * Allocate a private copy of the accumulated parameters - * of exactly the right size. - * The size to malloc is chosen based upon the - * exact number of faces. + * Allocate a private copy of the accumulated parameters + * of exactly the right size. + * The size to malloc is chosen based upon the + * exact number of faces. */ { - register struct arb_specific *arbp; - if ( (arbp = (struct arb_specific *)stp->st_specific) == 0 ) { + register struct arb_specific *arbp; + if ((arbp = (struct arb_specific *)stp->st_specific) == 0) { arbp = (struct arb_specific *)bu_malloc( sizeof(struct arb_specific) + sizeof(struct aface) * (pa.pa_faces - 4), - "arb_specific" ); + "arb_specific"); stp->st_specific = (genptr_t)arbp; } arbp->arb_nmfaces = pa.pa_faces; - memcpy( (char *)arbp->arb_face, (char *)pa.pa_face, - pa.pa_faces * sizeof(struct aface) ); + memcpy((char *)arbp->arb_face, (char *)pa.pa_face, + pa.pa_faces * sizeof(struct aface)); - if ( uv_wanted ) { - register struct oface *ofp; + if (uv_wanted) { + register struct oface *ofp; /* * To avoid a multi-processor race here, @@ -670,8 +672,8 @@ */ ofp = (struct oface *)bu_malloc( pa.pa_faces * sizeof(struct oface), "arb_opt"); - memcpy( (char *)ofp, (char *)pa.pa_opt, - pa.pa_faces * sizeof(struct oface) ); + memcpy((char *)ofp, (char *)pa.pa_opt, + pa.pa_faces * sizeof(struct oface)); arbp->arb_opt = ofp; } else { arbp->arb_opt = (struct oface *)0; @@ -685,44 +687,46 @@ * to be contained within the solid! */ { - vect_t work; - register fastf_t f; + vect_t work; + register fastf_t f; - for ( i=0; i< 8; i++ ) { - VMINMAX( stp->st_min, stp->st_max, aip->pt[i] ); + for (i=0; i< 8; i++) { + VMINMAX(stp->st_min, stp->st_max, aip->pt[i]); } - VADD2SCALE( stp->st_center, stp->st_min, stp->st_max, 0.5 ); - VSUB2SCALE( work, stp->st_max, stp->st_min, 0.5 ); + VADD2SCALE(stp->st_center, stp->st_min, stp->st_max, 0.5); + VSUB2SCALE(work, stp->st_max, stp->st_min, 0.5); f = work[X]; - if ( work[Y] > f ) f = work[Y]; - if ( work[Z] > f ) f = work[Z]; + if (work[Y] > f) f = work[Y]; + if (work[Z] > f) f = work[Z]; stp->st_aradius = f; stp->st_bradius = MAGNITUDE(work); } return(0); /* OK */ } + /** * R T _ A R B _ P R E P * * This is the actual LIBRT "prep" interface. * * Returns - - * 0 OK - * !0 failure + * 0 OK + * !0 failure */ int rt_arb_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { - struct rt_arb_internal *aip; + struct rt_arb_internal *aip; aip = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(aip); - return( rt_arb_setup( stp, aip, rtip, 0 ) ); + return(rt_arb_setup(stp, aip, rtip, 0)); } + /** * R T _ A R B _ P R I N T */ @@ -731,35 +735,36 @@ { register struct arb_specific *arbp = (struct arb_specific *)stp->st_specific; - register struct aface *afp; + register struct aface *afp; register int i; - if ( arbp == (struct arb_specific *)0 ) { + if (arbp == (struct arb_specific *)0) { bu_log("arb(%s): no faces\n", stp->st_name); return; } bu_log("%d faces:\n", arbp->arb_nmfaces); - for ( i=0; i < arbp->arb_nmfaces; i++ ) { + for (i=0; i < arbp->arb_nmfaces; i++) { afp = &(arbp->arb_face[i]); - VPRINT( "A", afp->A ); - HPRINT( "Peqn", afp->peqn ); - if ( arbp->arb_opt ) { - register struct oface *op; + VPRINT("A", afp->A); + HPRINT("Peqn", afp->peqn); + if (arbp->arb_opt) { + register struct oface *op; op = &(arbp->arb_opt[i]); - VPRINT( "UVorig", op->arb_UVorig ); - VPRINT( "U", op->arb_U ); - VPRINT( "V", op->arb_V ); - bu_log( "Ulen = %g, Vlen = %g\n", - op->arb_Ulen, op->arb_Vlen); + VPRINT("UVorig", op->arb_UVorig); + VPRINT("U", op->arb_U); + VPRINT("V", op->arb_V); + bu_log("Ulen = %g, Vlen = %g\n", + op->arb_Ulen, op->arb_Vlen); } } } + /** * R T _ A R B _ S H O T * * Function - - * Shoot a ray at an ARB8. + * Shoot a ray at an ARB8. * * Algorithm - * The intersection distance is computed for each face. The largest @@ -767,17 +772,17 @@ * exit points. * * Returns - - * 0 MISS - * >0 HIT + * 0 MISS + * >0 HIT */ int rt_arb_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) { struct arb_specific *arbp = (struct arb_specific *)stp->st_specific; - int iplane, oplane; - fastf_t in, out; /* ray in/out distances */ - register struct aface *afp; - register int j; + int iplane, oplane; + fastf_t in, out; /* ray in/out distances */ + register struct aface *afp; + register int j; in = -INFINITY; out = INFINITY; @@ -790,71 +795,72 @@ } /* consider each face */ - for ( afp = &arbp->arb_face[j=arbp->arb_nmfaces-1]; j >= 0; j--, afp-- ) { - fastf_t dn; /* Direction dot Normal */ - fastf_t dxbdn; - fastf_t s; + for (afp = &arbp->arb_face[j=arbp->arb_nmfaces-1]; j >= 0; j--, afp--) { + fastf_t dn; /* Direction dot Normal */ + fastf_t dxbdn; + fastf_t s; /* XXX some of this math should be prep work * (including computing dxbdn/dn ?) *$*/ - dxbdn = VDOT( afp->peqn, rp->r_pt ) - afp->peqn[W]; - dn = -VDOT( afp->peqn, rp->r_dir ); + dxbdn = VDOT(afp->peqn, rp->r_pt) - afp->peqn[W]; + dn = -VDOT(afp->peqn, rp->r_dir); if (RT_G_DEBUG & DEBUG_ARB8) { HPRINT("arb: Plane Equation", afp->peqn); bu_log("arb: dn=%g dxbdn=%g s=%g\n", dn, dxbdn, dxbdn/dn); } - if ( dn < -SQRT_SMALL_FASTF ) { - /* exit point, when dir.N < 0. out = min(out,s) */ - if ( out > (s = dxbdn/dn) ) { + if (dn < -SQRT_SMALL_FASTF) { + /* exit point, when dir.N < 0. out = min(out, s) */ + if (out > (s = dxbdn/dn)) { out = s; oplane = j; } - } else if ( dn > SQRT_SMALL_FASTF ) { - /* entry point, when dir.N > 0. in = max(in,s) */ - if ( in < (s = dxbdn/dn) ) { + } else if (dn > SQRT_SMALL_FASTF) { + /* entry point, when dir.N > 0. in = max(in, s) */ + if (in < (s = dxbdn/dn)) { in = s; iplane = j; } - } else { + } else { /* ray is parallel to plane when dir.N == 0. * If it is outside the solid, stop now. * Allow very small amount of slop, to catch * rays that lie very nearly in the plane of a face. */ - if ( dxbdn > SQRT_SMALL_FASTF ) - return( 0 ); /* MISS */ + if (dxbdn > SQRT_SMALL_FASTF) + return(0); /* MISS */ } - if ( in > out ) - return( 0 ); /* MISS */ + if (in > out) + return(0); /* MISS */ } /* Validate */ - if ( iplane == -1 || oplane == -1 ) { + if (iplane == -1 || oplane == -1) { bu_log("rt_arb_shoot(%s): 1 hit => MISS\n", stp->st_name); - return( 0 ); /* MISS */ + return(0); /* MISS */ } - if ( in >= out || out >= INFINITY ) - return( 0 ); /* MISS */ + if (in >= out || out >= INFINITY) + return(0); /* MISS */ { register struct seg *segp; - RT_GET_SEG( segp, ap->a_resource ); + RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in.hit_dist = in; segp->seg_in.hit_surfno = iplane; segp->seg_out.hit_dist = out; segp->seg_out.hit_surfno = oplane; - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); } return(2); /* HIT */ } #define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; + /** * R T _ A R B _ V S H O T * @@ -868,11 +874,11 @@ /* Number of ray/object pairs */ { - register int j, i; + register int j, i; register struct arb_specific *arbp; - fastf_t dn; /* Direction dot Normal */ - fastf_t dxbdn; - fastf_t s; + fastf_t dn; /* Direction dot Normal */ + fastf_t dxbdn; + fastf_t s; /* Intialize return values */ for (i = 0; i < n; i++) { @@ -881,38 +887,38 @@ segp[i].seg_in.hit_surfno = -1; /* used as iplane */ segp[i].seg_out.hit_dist = INFINITY; /* used as out */ segp[i].seg_out.hit_surfno = -1; /* used as oplane */ -/* segp[i].seg_next = SEG_NULL;*/ +/* segp[i].seg_next = SEG_NULL;*/ } /* consider each face */ - for (j = 0; j < 6; j++) { + for (j = 0; j < 6; j++) { /* for each ray/arb_face pair */ - for (i = 0; i < n; i++) { + for (i = 0; i < n; i++) { if (stp[i] == 0) continue; /* skip this ray */ - if ( segp[i].seg_stp == 0 ) continue; /* miss */ + if (segp[i].seg_stp == 0) continue; /* miss */ arbp= (struct arb_specific *) stp[i]->st_specific; - if ( arbp->arb_nmfaces <= j ) + if (arbp->arb_nmfaces <= j) continue; /* faces of this ARB are done */ - dxbdn = VDOT( arbp->arb_face[j].peqn, rp[i]->r_pt ) - + dxbdn = VDOT(arbp->arb_face[j].peqn, rp[i]->r_pt) - arbp->arb_face[j].peqn[W]; - if ( (dn = -VDOT( arbp->arb_face[j].peqn, rp[i]->r_dir )) < -SQRT_SMALL_FASTF ) { - /* exit point, when dir.N < 0. out = min(out,s) */ - if ( segp[i].seg_out.hit_dist > (s = dxbdn/dn) ) { + if ((dn = -VDOT(arbp->arb_face[j].peqn, rp[i]->r_dir)) < -SQRT_SMALL_FASTF) { + /* exit point, when dir.N < 0. out = min(out, s) */ + if (segp[i].seg_out.hit_dist > (s = dxbdn/dn)) { segp[i].seg_out.hit_dist = s; segp[i].seg_out.hit_surfno = j; } - } else if ( dn > SQRT_SMALL_FASTF ) { - /* entry point, when dir.N > 0. in = max(in,s) */ - if ( segp[i].seg_in.hit_dist < (s = dxbdn/dn) ) { + } else if (dn > SQRT_SMALL_FASTF) { + /* entry point, when dir.N > 0. in = max(in, s) */ + if (segp[i].seg_in.hit_dist < (s = dxbdn/dn)) { segp[i].seg_in.hit_dist = s; segp[i].seg_in.hit_surfno = j; } - } else { + } else { /* ray is parallel to plane when dir.N == 0. * If it is outside the solid, stop now */ - if ( dxbdn > SQRT_SMALL_FASTF ) { + if (dxbdn > SQRT_SMALL_FASTF) { SEG_MISS(segp[i]); /* MISS */ } } @@ -923,25 +929,25 @@ } /* for each arb_face */ /* - * Validate for each ray/arb_face pair - * Segment was initialized as "good" (seg_stp set valid); - * that is revoked here on misses. + * Validate for each ray/arb_face pair + * Segment was initialized as "good" (seg_stp set valid); + * that is revoked here on misses. */ for (i = 0; i < n; i++) { if (stp[i] == 0) continue; /* skip this ray */ - if ( segp[i].seg_stp == 0 ) continue; /* missed */ + if (segp[i].seg_stp == 0) continue; /* missed */ - if ( segp[i].seg_in.hit_surfno == -1 || - segp[i].seg_out.hit_surfno == -1 ) { + if (segp[i].seg_in.hit_surfno == -1 || + segp[i].seg_out.hit_surfno == -1) { SEG_MISS(segp[i]); /* MISS */ - } - else if (segp[i].seg_in.hit_dist >= segp[i].seg_out.hit_dist || - segp[i].seg_out.hit_dist >= INFINITY ) { + } else if (segp[i].seg_in.hit_dist >= segp[i].seg_out.hit_dist || + segp[i].seg_out.hit_dist >= INFINITY) { SEG_MISS(segp[i]); /* MISS */ } } } + /** * R T _ A R B _ N O R M * @@ -952,13 +958,14 @@ { register struct arb_specific *arbp = (struct arb_specific *)stp->st_specific; - register int h; + register int h; - VJOIN1( hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir ); + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); h = hitp->hit_surfno; - VMOVE( hitp->hit_normal, arbp->arb_face[h].peqn ); + VMOVE(hitp->hit_normal, arbp->arb_face[h].peqn); } + /** * R T _ A R B _ C U R V E * @@ -969,15 +976,16 @@ rt_arb_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { - bn_vec_ortho( cvp->crv_pdir, hitp->hit_normal ); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; } + /** * R T _ A R B _ U V * - * For a hit on a face of an ARB, return the (u,v) coordinates of the - * hit point. 0 <= u,v <= 1. + * For a hit on a face of an ARB, return the (u, v) coordinates of the + * hit point. 0 <= u, v <= 1. * * u extends along the arb_U direction defined by B-A, * v extends along the arb_V direction defined by Nx(B-A). @@ -987,26 +995,26 @@ { register struct arb_specific *arbp = (struct arb_specific *)stp->st_specific; - struct oface *ofp; - vect_t P_A; - fastf_t r; - vect_t rev_dir; - fastf_t dot_N; - vect_t UV_dir; - fastf_t *norm; - fastf_t min_r_U, min_r_V; + struct oface *ofp; + vect_t P_A; + fastf_t r; + vect_t rev_dir; + fastf_t dot_N; + vect_t UV_dir; + fastf_t *norm; + fastf_t min_r_U, min_r_V; - if ( arbp->arb_opt == (struct oface *)0 ) { - register int ret = 0; - struct rt_db_internal intern; - struct rt_arb_internal *aip; + if (arbp->arb_opt == (struct oface *)0) { + register int ret = 0; + struct rt_db_internal intern; + struct rt_arb_internal *aip; - if ( rt_db_get_internal( &intern, stp->st_dp, ap->a_rt_i->rti_dbip, stp->st_matp, ap->a_resource ) < 0 ) { + if (rt_db_get_internal(&intern, stp->st_dp, ap->a_rt_i->rti_dbip, stp->st_matp, ap->a_resource) < 0) { bu_log("rt_arb_uv(%s) rt_db_get_internal failure\n", stp->st_name); return; } - RT_CK_DB_INTERNAL( &intern ); + RT_CK_DB_INTERNAL(&intern); aip = (struct rt_arb_internal *)intern.idb_ptr; RT_ARB_CK_MAGIC(aip); @@ -1015,55 +1023,56 @@ * another processor did the UV setup while this processor was * waiting in bu_semaphore_acquire(). */ - bu_semaphore_acquire( RT_SEM_MODEL ); - if ( arbp->arb_opt == (struct oface *)0 ) { - ret = rt_arb_setup(stp, aip, ap->a_rt_i, 1 ); + bu_semaphore_acquire(RT_SEM_MODEL); + if (arbp->arb_opt == (struct oface *)0) { + ret = rt_arb_setup(stp, aip, ap->a_rt_i, 1); } - bu_semaphore_release( RT_SEM_MODEL ); + bu_semaphore_release(RT_SEM_MODEL); - rt_db_free_internal( &intern, ap->a_resource ); + rt_db_free_internal(&intern, ap->a_resource); - if ( ret != 0 || arbp->arb_opt == (struct oface *)0 ) { + if (ret != 0 || arbp->arb_opt == (struct oface *)0) { bu_log("rt_arb_uv(%s) dyanmic setup failure st_specific=x%x, optp=x%x\n", stp->st_name, - stp->st_specific, arbp->arb_opt ); + stp->st_specific, arbp->arb_opt); return; } - if (RT_G_DEBUG&DEBUG_SOLIDS) rt_pr_soltab( stp ); + if (RT_G_DEBUG&DEBUG_SOLIDS) rt_pr_soltab(stp); } ofp = &arbp->arb_opt[hitp->hit_surfno]; - VSUB2( P_A, hitp->hit_point, ofp->arb_UVorig ); + VSUB2(P_A, hitp->hit_point, ofp->arb_UVorig); /* Flipping v is an artifact of how the faces are built */ - uvp->uv_u = VDOT( P_A, ofp->arb_U ); - uvp->uv_v = 1.0 - VDOT( P_A, ofp->arb_V ); - if ( uvp->uv_u < 0 || uvp->uv_v < 0 || uvp->uv_u > 1 || uvp->uv_v > 1 ) { - bu_log("arb_uv: bad uv=%g,%g\n", uvp->uv_u, uvp->uv_v); + uvp->uv_u = VDOT(P_A, ofp->arb_U); + uvp->uv_v = 1.0 - VDOT(P_A, ofp->arb_V); + if (uvp->uv_u < 0 || uvp->uv_v < 0 || uvp->uv_u > 1 || uvp->uv_v > 1) { + bu_log("arb_uv: bad uv=%g, %g\n", uvp->uv_u, uvp->uv_v); /* Fix it up */ - if ( uvp->uv_u < 0 ) uvp->uv_u = (-uvp->uv_u); - if ( uvp->uv_v < 0 ) uvp->uv_v = (-uvp->uv_v); + if (uvp->uv_u < 0) uvp->uv_u = (-uvp->uv_u); + if (uvp->uv_v < 0) uvp->uv_v = (-uvp->uv_v); } r = ap->a_rbeam + ap->a_diverge * hitp->hit_dist; min_r_U = r * ofp->arb_Ulen; min_r_V = r * ofp->arb_Vlen; - VREVERSE( rev_dir, ap->a_ray.r_dir ) + VREVERSE(rev_dir, ap->a_ray.r_dir) norm = &arbp->arb_face[hitp->hit_surfno].peqn[0]; - dot_N = VDOT( rev_dir, norm ); - VJOIN1( UV_dir, rev_dir, -dot_N, norm ) - VUNITIZE( UV_dir ) - uvp->uv_du = r * VDOT( UV_dir, ofp->arb_U ) / dot_N; - uvp->uv_dv = r * VDOT( UV_dir, ofp->arb_V ) / dot_N; - if ( uvp->uv_du < 0.0 ) + dot_N = VDOT(rev_dir, norm); + VJOIN1(UV_dir, rev_dir, -dot_N, norm) + VUNITIZE(UV_dir) + uvp->uv_du = r * VDOT(UV_dir, ofp->arb_U) / dot_N; + uvp->uv_dv = r * VDOT(UV_dir, ofp->arb_V) / dot_N; + if (uvp->uv_du < 0.0) uvp->uv_du = -uvp->uv_du; - if ( uvp->uv_du < min_r_U ) + if (uvp->uv_du < min_r_U) uvp->uv_du = min_r_U; - if ( uvp->uv_dv < 0.0 ) + if (uvp->uv_dv < 0.0) uvp->uv_dv = -uvp->uv_dv; - if ( uvp->uv_dv < min_r_V ) + if (uvp->uv_dv < min_r_V) uvp->uv_dv = min_r_V; } + /** * R T _ A R B _ F R E E */ @@ -1073,17 +1082,18 @@ register struct arb_specific *arbp = (struct arb_specific *)stp->st_specific; - if ( arbp->arb_opt ) - bu_free( (char *)arbp->arb_opt, "arb_opt" ); - bu_free( (char *)arbp, "arb_specific" ); + if (arbp->arb_opt) + bu_free((char *)arbp->arb_opt, "arb_opt"); + bu_free((char *)arbp, "arb_specific"); } -#define ARB_FACE( valp, a, b, c, d ) \ - RT_ADD_VLIST( vhead, valp[a], BN_VLIST_LINE_MOVE ); \ - RT_ADD_VLIST( vhead, valp[b], BN_VLIST_LINE_DRAW ); \ - RT_ADD_VLIST( vhead, valp[c], BN_VLIST_LINE_DRAW ); \ - RT_ADD_VLIST( vhead, valp[d], BN_VLIST_LINE_DRAW ); +#define ARB_FACE(valp, a, b, c, d) \ + RT_ADD_VLIST(vhead, valp[a], BN_VLIST_LINE_MOVE); \ + RT_ADD_VLIST(vhead, valp[b], BN_VLIST_LINE_DRAW); \ + RT_ADD_VLIST(vhead, valp[c], BN_VLIST_LINE_DRAW); \ + RT_ADD_VLIST(vhead, valp[d], BN_VLIST_LINE_DRAW); + /** * R T _ A R B _ P L O T * @@ -1096,19 +1106,20 @@ int rt_arb_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct rt_arb_internal *aip; + struct rt_arb_internal *aip; RT_CK_DB_INTERNAL(ip); aip = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(aip); - ARB_FACE( aip->pt, 0, 1, 2, 3 ); - ARB_FACE( aip->pt, 4, 0, 3, 7 ); - ARB_FACE( aip->pt, 5, 4, 7, 6 ); - ARB_FACE( aip->pt, 1, 5, 6, 2 ); + ARB_FACE(aip->pt, 0, 1, 2, 3); + ARB_FACE(aip->pt, 4, 0, 3, 7); + ARB_FACE(aip->pt, 5, 4, 7, 6); + ARB_FACE(aip->pt, 1, 5, 6, 2); return(0); } + /** * R T _ A R B _ C L A S S */ @@ -1119,14 +1130,14 @@ (struct arb_specific *)stp->st_specific; register int i; - if ( arbp == (struct arb_specific *)0 ) { + if (arbp == (struct arb_specific *)0) { bu_log("arb(%s): no faces\n", stp->st_name); return RT_CLASSIFY_UNIMPLEMENTED; } - for ( i=0; i<arbp->arb_nmfaces; i++ ) { - if ( bn_hlf_class( arbp->arb_face[i].peqn, min, max, tol ) == - BN_CLASSIFY_OUTSIDE ) + for (i=0; i<arbp->arb_nmfaces; i++) { + if (bn_hlf_class(arbp->arb_face[i].peqn, min, max, tol) == + BN_CLASSIFY_OUTSIDE) return RT_CLASSIFY_OUTSIDE; } @@ -1135,6 +1146,7 @@ return RT_CLASSIFY_UNIMPLEMENTED; /* let the caller assume the worst */ } + /** * R T _ A R B _ I M P O R T * @@ -1151,76 +1163,78 @@ int rt_arb_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { - struct rt_arb_internal *aip; - union record *rp; - register int i; - vect_t work; - fastf_t vec[3*8]; + struct rt_arb_internal *aip; + union record *rp; + register int i; + vect_t work; + fastf_t vec[3*8]; - BU_CK_EXTERNAL( ep ); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ - if ( rp->u_id != ID_SOLID ) { + if (rp->u_id != ID_SOLID) { bu_log("rt_arb_import4: defective record, id=x%x\n", rp->u_id); return(-1); } - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_ARB8; ip->idb_meth = &rt_functab[ID_ARB8]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_arb_internal), "rt_arb_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_arb_internal), "rt_arb_internal"); aip = (struct rt_arb_internal *)ip->idb_ptr; aip->magic = RT_ARB_INTERNAL_MAGIC; /* Convert from database to internal format */ - rt_fastf_float( vec, rp->s.s_values, 8 ); + rt_fastf_float(vec, rp->s.s_values, 8); /* * Convert from vector notation (in database) to point notation. */ if (mat == NULL) mat = bn_mat_identity; - MAT4X3PNT( aip->pt[0], mat, &vec[0] ); + MAT4X3PNT(aip->pt[0], mat, &vec[0]); - for ( i=1; i<8; i++ ) { - VADD2( work, &vec[0*3], &vec[i*3] ); - MAT4X3PNT( aip->pt[i], mat, work ); + for (i=1; i<8; i++) { + VADD2(work, &vec[0*3], &vec[i*3]); + MAT4X3PNT(aip->pt[i], mat, work); } return(0); /* OK */ } + /** * R T _ A R B _ E X P O R T */ int rt_arb_export4(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_arb_internal *aip; - union record *rec; - register int i; + struct rt_arb_internal *aip; + union record *rec; + register int i; RT_CK_DB_INTERNAL(ip); - if ( ip->idb_type != ID_ARB8 ) return(-1); + if (ip->idb_type != ID_ARB8) return(-1); aip = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(aip); BU_CK_EXTERNAL(ep); ep->ext_nbytes = sizeof(union record); - ep->ext_buf = (genptr_t)bu_calloc( 1, ep->ext_nbytes, "arb external"); + ep->ext_buf = (genptr_t)bu_calloc(1, ep->ext_nbytes, "arb external"); rec = (union record *)ep->ext_buf; rec->s.s_id = ID_SOLID; rec->s.s_type = GENARB8; /* NOTE: This also converts to dbfloat_t */ - VSCALE( &rec->s.s_values[3*0], aip->pt[0], local2mm ); - for ( i=1; i < 8; i++ ) { - VSUB2SCALE( &rec->s.s_values[3*i], - aip->pt[i], aip->pt[0], local2mm ); + VSCALE(&rec->s.s_values[3*0], aip->pt[0], local2mm); + for (i=1; i < 8; i++) { + VSUB2SCALE(&rec->s.s_values[3*i], + aip->pt[i], aip->pt[0], local2mm); } return(0); } + /** * R T _ A R B _ I M P O R T 5 * @@ -1232,38 +1246,39 @@ rt_arb_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { struct rt_arb_internal *aip; - register int i; - fastf_t vec[3*8]; + register int i; + fastf_t vec[3*8]; - BU_CK_EXTERNAL( ep ); - BU_ASSERT_LONG( ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 3*8); - RT_CK_DB_INTERNAL( ip ); + BU_CK_EXTERNAL(ep); + BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 3*8); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_ARB8; ip->idb_meth = &rt_functab[ID_ARB8]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_arb_internal), "rt_arb_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_arb_internal), "rt_arb_internal"); aip = (struct rt_arb_internal *)ip->idb_ptr; aip->magic = RT_ARB_INTERNAL_MAGIC; /* Convert from database (network) to internal (host) format */ - ntohd( (unsigned char *)vec, ep->ext_buf, 8*3); + ntohd((unsigned char *)vec, ep->ext_buf, 8*3); if (mat == NULL) mat = bn_mat_identity; for (i=0; i<8; i++) { - MAT4X3PNT( aip->pt[i], mat, &vec[i*3]); + MAT4X3PNT(aip->pt[i], mat, &vec[i*3]); } return 0; /* OK */ } + /** * R T _ A R B _ E X P O R T 5 */ int rt_arb_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_arb_internal *aip; - fastf_t vec[3*8]; - register int i; + struct rt_arb_internal *aip; + fastf_t vec[3*8]; + register int i; RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ARB8) return -1; @@ -1272,14 +1287,15 @@ BU_CK_EXTERNAL(ep); ep->ext_nbytes = SIZEOF_NETWORK_DOUBLE * 8 * 3; - ep->ext_buf = (genptr_t)bu_malloc( ep->ext_nbytes, "arb external"); + ep->ext_buf = (genptr_t)bu_malloc(ep->ext_nbytes, "arb external"); for (i=0; i<8; i++) { - VSCALE( &vec[i*3], aip->pt[i], local2mm ); + VSCALE(&vec[i*3], aip->pt[i], local2mm); } - htond( ep->ext_buf, (unsigned char *)vec, 8*3); + htond(ep->ext_buf, (unsigned char *)vec, 8*3); return 0; } + /** * R T _ A R B _ D E S C R I B E * @@ -1292,8 +1308,8 @@ { register struct rt_arb_internal *aip = (struct rt_arb_internal *)ip->idb_ptr; char buf[256]; - int i; - int arb_type; + int i; + int arb_type; struct bn_tol tmp_tol; /* temporay tolerance */ RT_ARB_CK_MAGIC(aip); @@ -1304,92 +1320,93 @@ tmp_tol.perp = 1e-5; tmp_tol.para = 1 - tmp_tol.perp; - arb_type = rt_arb_std_type( ip, &tmp_tol ); + arb_type = rt_arb_std_type(ip, &tmp_tol); - if ( !arb_type ) { + if (!arb_type) { - bu_vls_strcat( str, "ARB8\n"); + bu_vls_strcat(str, "ARB8\n"); /* Use 1-based numbering, to match vertex labels in MGED */ - sprintf( buf, "\t1 (%g, %g, %g)\n", - INTCLAMP(aip->pt[0][X] * mm2local), - INTCLAMP(aip->pt[0][Y] * mm2local), - INTCLAMP(aip->pt[0][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + sprintf(buf, "\t1 (%g, %g, %g)\n", + INTCLAMP(aip->pt[0][X] * mm2local), + INTCLAMP(aip->pt[0][Y] * mm2local), + INTCLAMP(aip->pt[0][Z] * mm2local)); + bu_vls_strcat(str, buf); - if ( !verbose ) return(0); + if (!verbose) return(0); - for ( i=1; i < 8; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=1; i < 8; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } } else { - sprintf( buf, "ARB%d\n", arb_type ); - bu_vls_strcat( str, buf ); - switch ( arb_type ) { + sprintf(buf, "ARB%d\n", arb_type); + bu_vls_strcat(str, buf); + switch (arb_type) { case ARB8: - for ( i=0; i<8; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=0; i<8; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } break; case ARB7: - for ( i=0; i<7; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=0; i<7; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } break; case ARB6: - for ( i=0; i<5; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=0; i<5; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } - sprintf( buf, "\t6 (%g, %g, %g)\n", - INTCLAMP(aip->pt[6][X] * mm2local), - INTCLAMP(aip->pt[6][Y] * mm2local), - INTCLAMP(aip->pt[6][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + sprintf(buf, "\t6 (%g, %g, %g)\n", + INTCLAMP(aip->pt[6][X] * mm2local), + INTCLAMP(aip->pt[6][Y] * mm2local), + INTCLAMP(aip->pt[6][Z] * mm2local)); + bu_vls_strcat(str, buf); break; case ARB5: - for ( i=0; i<5; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=0; i<5; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } break; case ARB4: - for ( i=0; i<3; i++ ) { - sprintf( buf, "\t%d (%g, %g, %g)\n", i+1, - INTCLAMP(aip->pt[i][X] * mm2local), - INTCLAMP(aip->pt[i][Y] * mm2local), - INTCLAMP(aip->pt[i][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + for (i=0; i<3; i++) { + sprintf(buf, "\t%d (%g, %g, %g)\n", i+1, + INTCLAMP(aip->pt[i][X] * mm2local), + INTCLAMP(aip->pt[i][Y] * mm2local), + INTCLAMP(aip->pt[i][Z] * mm2local)); + bu_vls_strcat(str, buf); } - sprintf( buf, "\t4 (%g, %g, %g)\n", - INTCLAMP(aip->pt[4][X] * mm2local), - INTCLAMP(aip->pt[4][Y] * mm2local), - INTCLAMP(aip->pt[4][Z] * mm2local) ); - bu_vls_strcat( str, buf ); + sprintf(buf, "\t4 (%g, %g, %g)\n", + INTCLAMP(aip->pt[4][X] * mm2local), + INTCLAMP(aip->pt[4][Y] * mm2local), + INTCLAMP(aip->pt[4][Z] * mm2local)); + bu_vls_strcat(str, buf); break; } } return(0); } + /** * R T _ A R B _ I F R E E * @@ -1401,10 +1418,11 @@ { RT_CK_DB_INTERNAL(ip); if (!resp) resp = &rt_uniresource; - bu_free( ip->idb_ptr, "arb ifree" ); + bu_free(ip->idb_ptr, "arb ifree"); ip->idb_ptr = (genptr_t)NULL; } + /** * R T _ A R B _ T E S S * @@ -1412,19 +1430,19 @@ * mechanical transformation of one faceted object into another. * * Returns - - * -1 failure - * 0 OK. *r points to nmgregion that holds this tessellation. + * -1 failure + * 0 OK. *r points to nmgregion that holds this tessellation. */ int rt_arb_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct rt_arb_internal *aip; - struct shell *s; - struct prep_arb pa; - register int i; - struct faceuse *fu[6]; - struct vertex *verts[8]; - struct vertex **vertp[4]; + struct rt_arb_internal *aip; + struct shell *s; + struct prep_arb pa; + register int i; + struct faceuse *fu[6]; + struct vertex *verts[8]; + struct vertex **vertp[4]; RT_CK_DB_INTERNAL(ip); aip = (struct rt_arb_internal *)ip->idb_ptr; @@ -1433,69 +1451,69 @@ memset((char *)&pa, 0, sizeof(pa)); pa.pa_doopt = 0; /* no UV stuff */ pa.pa_tol_sq = tol->dist_sq; - if ( rt_arb_mk_planes( &pa, aip, "(tess)" ) < 0 ) return(-2); + if (rt_arb_mk_planes(&pa, aip, "(tess)") < 0) return(-2); - for ( i=0; i<8; i++ ) verts[i] = (struct vertex *)0; + for (i=0; i<8; i++) verts[i] = (struct vertex *)0; - *r = nmg_mrsv( m ); /* Make region, empty shell, vertex */ + *r = nmg_mrsv(m); /* Make region, empty shell, vertex */ s = BU_LIST_FIRST(shell, &(*r)->s_hd); /* Process each face */ - for ( i=0; i < pa.pa_faces; i++ ) { - if ( pa.pa_clockwise[i] != 0 ) { + for (i=0; i < pa.pa_faces; i++) { + if (pa.pa_clockwise[i] != 0) { /* Counter-Clockwise orientation (CCW) */ vertp[0] = &verts[pa.pa_pindex[0][i]]; vertp[1] = &verts[pa.pa_pindex[1][i]]; vertp[2] = &verts[pa.pa_pindex[2][i]]; - if ( pa.pa_npts[i] > 3 ) { + if (pa.pa_npts[i] > 3) { vertp[3] = &verts[pa.pa_pindex[3][i]]; } } else { - register struct vertex ***vertpp = vertp; + register struct vertex ***vertpp = vertp; /* Clockwise orientation (CW) */ - if ( pa.pa_npts[i] > 3 ) { + if (pa.pa_npts[i] > 3) { *vertpp++ = &verts[pa.pa_pindex[3][i]]; } *vertpp++ = &verts[pa.pa_pindex[2][i]]; *vertpp++ = &verts[pa.pa_pindex[1][i]]; *vertpp++ = &verts[pa.pa_pindex[0][i]]; } - if ( RT_G_DEBUG & DEBUG_ARB8 ) { + if (RT_G_DEBUG & DEBUG_ARB8) { bu_log("face %d, npts=%d, verts %d %d %d %d\n", i, pa.pa_npts[i], pa.pa_pindex[0][i], pa.pa_pindex[1][i], - pa.pa_pindex[2][i], pa.pa_pindex[3][i] ); + pa.pa_pindex[2][i], pa.pa_pindex[3][i]); } - if ( (fu[i] = nmg_cmface( s, vertp, pa.pa_npts[i] )) == 0 ) { + if ((fu[i] = nmg_cmface(s, vertp, pa.pa_npts[i])) == 0) { bu_log("rt_arb_tess(%s): nmg_cmface() fail on face %d\n", i); continue; } } /* Associate vertex geometry */ - for ( i=0; i<8; i++ ) + for (i=0; i<8; i++) if (verts[i]) nmg_vertex_gv(verts[i], aip->pt[i]); /* Associate face geometry */ - for ( i=0; i < pa.pa_faces; i++ ) { + for (i=0; i < pa.pa_faces; i++) { #if 1 /* We already know the plane equations, this is fast */ - nmg_face_g( fu[i], pa.pa_face[i].peqn ); + nmg_face_g(fu[i], pa.pa_face[i].peqn); #else /* For the cautious, ensure topology and geometry match */ - if ( nmg_fu_planeeqn( fu[i], tol ) < 0 ) + if (nmg_fu_planeeqn(fu[i], tol) < 0) return -1; /* FAIL */ #endif } /* Mark edges as real */ - (void)nmg_mark_edges_real( &s->l.magic ); + (void)nmg_mark_edges_real(&s->l.magic); /* Compute "geometry" for region and shell */ - nmg_region_a( *r, tol ); + nmg_region_a(*r, tol); /* Some arbs may not be within tolerance, so triangulate faces where needed */ - nmg_make_faces_within_tol( s, tol ); + nmg_make_faces_within_tol(s, tol); return(0); } @@ -1521,21 +1539,21 @@ * here, other than uniformity of the conversion for all solids. * * Returns - - * -1 failure - * 0 OK. *r points to nmgregion that holds this tessellation. + * -1 failure + * 0 OK. *r points to nmgregion that holds this tessellation. */ int rt_arb_tnurb(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol) { - struct rt_arb_internal *aip; - struct shell *s; - struct prep_arb pa; - register int i; - struct faceuse *fu[6]; - struct vertex *verts[8]; - struct vertex **vertp[4]; - struct edgeuse *eu; - struct loopuse *lu; + struct rt_arb_internal *aip; + struct shell *s; + struct prep_arb pa; + register int i; + struct faceuse *fu[6]; + struct vertex *verts[8]; + struct vertex **vertp[4]; + struct edgeuse *eu; + struct loopuse *lu; RT_CK_DB_INTERNAL(ip); aip = (struct rt_arb_internal *)ip->idb_ptr; @@ -1544,88 +1562,88 @@ memset((char *)&pa, 0, sizeof(pa)); pa.pa_doopt = 0; /* no UV stuff */ pa.pa_tol_sq = tol->dist_sq; - if ( rt_arb_mk_planes( &pa, aip, "(tnurb)" ) < 0 ) return(-2); + if (rt_arb_mk_planes(&pa, aip, "(tnurb)") < 0) return(-2); - for ( i=0; i<8; i++ ) verts[i] = (struct vertex *)0; + for (i=0; i<8; i++) verts[i] = (struct vertex *)0; - *r = nmg_mrsv( m ); /* Make region, empty shell, vertex */ + *r = nmg_mrsv(m); /* Make region, empty shell, vertex */ s = BU_LIST_FIRST(shell, &(*r)->s_hd); /* Process each face */ - for ( i=0; i < pa.pa_faces; i++ ) { - if ( pa.pa_clockwise[i] != 0 ) { + for (i=0; i < pa.pa_faces; i++) { + if (pa.pa_clockwise[i] != 0) { /* Counter-Clockwise orientation (CCW) */ vertp[0] = &verts[pa.pa_pindex[0][i]]; vertp[1] = &verts[pa.pa_pindex[1][i]]; vertp[2] = &verts[pa.pa_pindex[2][i]]; - if ( pa.pa_npts[i] > 3 ) { + if (pa.pa_npts[i] > 3) { vertp[3] = &verts[pa.pa_pindex[3][i]]; } } else { - register struct vertex ***vertpp = vertp; + register struct vertex ***vertpp = vertp; /* Clockwise orientation (CW) */ - if ( pa.pa_npts[i] > 3 ) { + if (pa.pa_npts[i] > 3) { *vertpp++ = &verts[pa.pa_pindex[3][i]]; } *vertpp++ = &verts[pa.pa_pindex[2][i]]; *vertpp++ = &verts[pa.pa_pindex[1][i]]; *vertpp++ = &verts[pa.pa_pindex[0][i]]; } - if ( RT_G_DEBUG & DEBUG_ARB8 ) { + if (RT_G_DEBUG & DEBUG_ARB8) { bu_log("face %d, npts=%d, verts %d %d %d %d\n", i, pa.pa_npts[i], pa.pa_pindex[0][i], pa.pa_pindex[1][i], - pa.pa_pindex[2][i], pa.pa_pindex[3][i] ); + pa.pa_pindex[2][i], pa.pa_pindex[3][i]); } /* The edges created will be linear, in parameter space..., * but need to have edge_g_cnurb geometry. */ - if ( (fu[i] = nmg_cmface( s, vertp, pa.pa_npts[i] )) == 0 ) { + if ((fu[i] = nmg_cmface(s, vertp, pa.pa_npts[i])) == 0) { bu_log("rt_arb_tnurb(%s): nmg_cmface() fail on face %d\n", i); continue; } /* March around the fu's loop assigning uv parameter values */ - lu = BU_LIST_FIRST( loopuse, &fu[i]->lu_hd ); + lu = BU_LIST_FIRST(loopuse, &fu[i]->lu_hd); NMG_CK_LOOPUSE(lu); - eu = BU_LIST_FIRST( edgeuse, &lu->down_hd ); + eu = BU_LIST_FIRST(edgeuse, &lu->down_hd); NMG_CK_EDGEUSE(eu); /* Loop always has Counter-Clockwise orientation (CCW) */ - nmg_vertexuse_a_cnurb( eu->vu_p, &rt_arb_uvw[0*3] ); - nmg_vertexuse_a_cnurb( eu->eumate_p->vu_p, &rt_arb_uvw[1*3] ); - eu = BU_LIST_NEXT( edgeuse, &eu->l ); + nmg_vertexuse_a_cnurb(eu->vu_p, &rt_arb_uvw[0*3]); + nmg_vertexuse_a_cnurb(eu->eumate_p->vu_p, &rt_arb_uvw[1*3]); + eu = BU_LIST_NEXT(edgeuse, &eu->l); - nmg_vertexuse_a_cnurb( eu->vu_p, &rt_arb_uvw[1*3] ); - nmg_vertexuse_a_cnurb( eu->eumate_p->vu_p, &rt_arb_uvw[2*3] ); - eu = BU_LIST_NEXT( edgeuse, &eu->l ); + nmg_vertexuse_a_cnurb(eu->vu_p, &rt_arb_uvw[1*3]); + nmg_vertexuse_a_cnurb(eu->eumate_p->vu_p, &rt_arb_uvw[2*3]); + eu = BU_LIST_NEXT(edgeuse, &eu->l); - nmg_vertexuse_a_cnurb( eu->vu_p, &rt_arb_uvw[2*3] ); - if ( pa.pa_npts[i] > 3 ) { - nmg_vertexuse_a_cnurb( eu->eumate_p->vu_p, &rt_arb_uvw[3*3] ); + nmg_vertexuse_a_cnurb(eu->vu_p, &rt_arb_uvw[2*3]); + if (pa.pa_npts[i] > 3) { + nmg_vertexuse_a_cnurb(eu->eumate_p->vu_p, &rt_arb_uvw[3*3]); - eu = BU_LIST_NEXT( edgeuse, &eu->l ); - nmg_vertexuse_a_cnurb( eu->vu_p, &rt_arb_uvw[3*3] ); + eu = BU_LIST_NEXT(edgeuse, &eu->l); + nmg_vertexuse_a_cnurb(eu->vu_p, &rt_arb_uvw[3*3]); } /* Final eu must end back at the beginning */ - nmg_vertexuse_a_cnurb( eu->eumate_p->vu_p, &rt_arb_uvw[0*3] ); + nmg_vertexuse_a_cnurb(eu->eumate_p->vu_p, &rt_arb_uvw[0*3]); } /* Associate vertex geometry */ - for ( i=0; i<8; i++ ) + for (i=0; i<8; i++) if (verts[i]) nmg_vertex_gv(verts[i], aip->pt[i]); /* Associate face geometry */ - for ( i=0; i < pa.pa_faces; i++ ) { - struct face_g_snurb *fg; - int j; + for (i=0; i < pa.pa_faces; i++) { + struct face_g_snurb *fg; + int j; /* Let the library allocate all the storage */ - nmg_face_g_snurb( fu[i], - 2, 2, /* u,v order */ - 4, 4, /* Number of knots, u,v */ - NULL, NULL, /* initial u,v knot vectors */ - 2, 2, /* n_rows, n_cols */ - RT_NURB_MAKE_PT_TYPE( 3, RT_NURB_PT_XYZ, RT_NURB_PT_NONRAT ), - NULL ); /* initial mesh */ + nmg_face_g_snurb(fu[i], + 2, 2, /* u, v order */ + 4, 4, /* Number of knots, u, v */ + NULL, NULL, /* initial u, v knot vectors */ + 2, 2, /* n_rows, n_cols */ + RT_NURB_MAKE_PT_TYPE(3, RT_NURB_PT_XYZ, RT_NURB_PT_NONRAT), + NULL); /* initial mesh */ fg = fu[i]->f_p->g.snurb... [truncated message content] |
From: <br...@us...> - 2009-11-30 22:03:24
|
Revision: 36734 http://brlcad.svn.sourceforge.net/brlcad/?rev=36734&view=rev Author: brlcad Date: 2009-11-30 22:03:11 +0000 (Mon, 30 Nov 2009) Log Message: ----------- WHOOOSH! massive ws style indent comment consistency update. also includes dead code elimination and much static->HIDDEN on funcs. should be no logic changes. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/librt/primitives/arb8/arb8_brep.cpp brlcad/trunk/src/librt/primitives/arb8/arb8_mirror.c brlcad/trunk/src/librt/primitives/arbn/arbn.c brlcad/trunk/src/librt/primitives/arbn/arbn_brep.cpp brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c brlcad/trunk/src/librt/primitives/ars/ars.c brlcad/trunk/src/librt/primitives/ars/ars_mirror.c brlcad/trunk/src/librt/primitives/bot/bot.c brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp brlcad/trunk/src/librt/primitives/bot/bot_mirror.c brlcad/trunk/src/librt/primitives/bot/g_bot_include.c brlcad/trunk/src/librt/primitives/brep/brep.cpp brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp brlcad/trunk/src/librt/primitives/cline/cline.c brlcad/trunk/src/librt/primitives/dsp/dsp.c brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp brlcad/trunk/src/librt/primitives/dsp/dsp_mirror.c brlcad/trunk/src/librt/primitives/ebm/ebm.c brlcad/trunk/src/librt/primitives/ebm/ebm_brep.cpp brlcad/trunk/src/librt/primitives/ebm/ebm_mirror.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp brlcad/trunk/src/librt/primitives/ell/ell.c brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp brlcad/trunk/src/librt/primitives/ell/ell_mirror.c brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp brlcad/trunk/src/librt/primitives/epa/epa_mirror.c brlcad/trunk/src/librt/primitives/eto/eto.c brlcad/trunk/src/librt/primitives/eto/eto_brep.cpp brlcad/trunk/src/librt/primitives/eto/eto_mirror.c brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/extrude/extrude_brep.cpp brlcad/trunk/src/librt/primitives/fixpt.h brlcad/trunk/src/librt/primitives/grip/grip.c brlcad/trunk/src/librt/primitives/grip/grip_mirror.c brlcad/trunk/src/librt/primitives/half/half.c brlcad/trunk/src/librt/primitives/half/half_mirror.c brlcad/trunk/src/librt/primitives/hf/hf.c brlcad/trunk/src/librt/primitives/hyp/hyp.c brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp brlcad/trunk/src/librt/primitives/hyp/hyp_mirror.c brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/nmg/nmg.c brlcad/trunk/src/librt/primitives/nmg/nmg_bool.c brlcad/trunk/src/librt/primitives/nmg/nmg_brep.cpp brlcad/trunk/src/librt/primitives/nmg/nmg_ck.c brlcad/trunk/src/librt/primitives/nmg/nmg_class.c brlcad/trunk/src/librt/primitives/nmg/nmg_eval.c brlcad/trunk/src/librt/primitives/nmg/nmg_extrude.c brlcad/trunk/src/librt/primitives/nmg/nmg_fcut.c brlcad/trunk/src/librt/primitives/nmg/nmg_fuse.c brlcad/trunk/src/librt/primitives/nmg/nmg_index.c brlcad/trunk/src/librt/primitives/nmg/nmg_info.c brlcad/trunk/src/librt/primitives/nmg/nmg_inter.c brlcad/trunk/src/librt/primitives/nmg/nmg_junk.c brlcad/trunk/src/librt/primitives/nmg/nmg_manif.c brlcad/trunk/src/librt/primitives/nmg/nmg_mesh.c brlcad/trunk/src/librt/primitives/nmg/nmg_mirror.c brlcad/trunk/src/librt/primitives/nmg/nmg_misc.c brlcad/trunk/src/librt/primitives/nmg/nmg_mk.c brlcad/trunk/src/librt/primitives/nmg/nmg_mod.c brlcad/trunk/src/librt/primitives/nmg/nmg_plot.c brlcad/trunk/src/librt/primitives/nmg/nmg_pr.c brlcad/trunk/src/librt/primitives/nmg/nmg_pt_fu.c brlcad/trunk/src/librt/primitives/nmg/nmg_rt_isect.c brlcad/trunk/src/librt/primitives/nmg/nmg_rt_segs.c brlcad/trunk/src/librt/primitives/nmg/nmg_tri.c brlcad/trunk/src/librt/primitives/nmg/nmg_tri_mc.c brlcad/trunk/src/librt/primitives/nmg/nmg_visit.c Modified: brlcad/trunk/src/librt/primitives/arb8/arb8.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -74,12 +74,14 @@ fastf_t arb_Vlen; /* length of V basis (for dv) */ }; + /* One of these for each face */ struct aface { fastf_t A[3]; /* "A" point */ plane_t peqn; /* Plane equation, unit normal */ }; + /* One of these for each ARB, custom allocated to size */ struct arb_specific { int arb_nmfaces; /* number of faces */ @@ -87,6 +89,7 @@ struct aface arb_face[4]; /* May really be up to [6] faces */ }; + /* These hold temp values for the face being prep'ed */ struct prep_arb { vect_t pa_center; /* center point */ @@ -101,6 +104,7 @@ int pa_doopt; /* compute pa_opt[] stuff */ }; + /* * Layout of arb in input record. * Points are listed in "clockwise" order, @@ -111,6 +115,8 @@ char *ai_title; int ai_sub[4]; }; + + static const struct arb_info rt_arb_info[6] = { { "1234", {3, 2, 1, 0} }, /* "bottom" face */ { "8765", {4, 5, 6, 7} }, /* "top" face */ @@ -133,6 +139,7 @@ { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } }; + /* rt_arb_get_cgtype(), rt_arb_std_type(), and rt_arb_centroid() * stolen from mged/arbs.c */ #define NO 0 @@ -858,6 +865,7 @@ return(2); /* HIT */ } + #define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; @@ -1087,6 +1095,7 @@ bu_free((char *)arbp, "arb_specific"); } + #define ARB_FACE(valp, a, b, c, d) \ RT_ADD_VLIST(vhead, valp[a], BN_VLIST_LINE_MOVE); \ RT_ADD_VLIST(vhead, valp[b], BN_VLIST_LINE_DRAW); \ @@ -1518,6 +1527,7 @@ return(0); } + static const fastf_t rt_arb_uvw[5*3] = { 0, 0, 0, 1, 0, 0, @@ -1525,6 +1535,8 @@ 0, 1, 0, 0, 0, 0 }; + + static const int rt_arb_vert_index_scramble[4] = { 0, 1, 3, 2 }; @@ -1693,6 +1705,7 @@ return(0); } + /* --- General ARB8 utility routines --- */ /** @@ -1729,6 +1742,7 @@ return 0; /* success */ } + /* planes to define ARB vertices */ static const int rt_arb_planes[5][24] = { {0, 1, 3, 0, 1, 2, 0, 2, 3, 0, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}, /* ARB4 */ @@ -1738,6 +1752,7 @@ {0, 2, 4, 0, 3, 4, 0, 3, 5, 0, 2, 5, 1, 2, 4, 1, 3, 4, 1, 3, 5, 1, 2, 5}, /* ARB8 */ }; + /** * R T _ A R B _ 3 F A C E _ I N T E R S E C T * @@ -2129,6 +2144,7 @@ return(0); /* OK */ } + /** @} */ /* Modified: brlcad/trunk/src/librt/primitives/arb8/arb8_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8_brep.cpp 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arb8/arb8_brep.cpp 2009-11-30 22:03:11 UTC (rev 36734) @@ -35,6 +35,7 @@ extern void rt_nmg_brep(ON_Brep **bi, struct rt_db_internal *ip, const struct bn_tol *tol); } + /** * R T _ A R B 8 _ B R E P */ @@ -62,6 +63,7 @@ bu_free(tmp_internal, "free temporary rt_db_internal"); } + // Local Variables: // tab-width: 8 // mode: C++ Modified: brlcad/trunk/src/librt/primitives/arb8/arb8_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8_mirror.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arb8/arb8_mirror.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -93,6 +93,7 @@ return 0; } + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/librt/primitives/arbn/arbn.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -431,11 +431,14 @@ int plane_no[3]; /* which planes intersect here */ struct vertex **vp; /* pointer to vertex struct pointer for NMG's */ }; + + struct arbn_edges { int v1_no, v2_no; /* index into arbn_pts for endpoints of edge */ }; + #define LOC(i, j) i*(aip->neqn)+j static void @@ -1214,6 +1217,7 @@ return(0); /* OK */ } + /** @} */ /* * Local Variables: Modified: brlcad/trunk/src/librt/primitives/arbn/arbn_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn_brep.cpp 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arbn/arbn_brep.cpp 2009-11-30 22:03:11 UTC (rev 36734) @@ -64,6 +64,7 @@ bu_free(tmp_internal, "free temporary rt_db_internal"); } + // Local Variables: // tab-width: 8 // mode: C++ Modified: brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -110,6 +110,7 @@ return 0; } + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/librt/primitives/ars/ars.c =================================================================== --- brlcad/trunk/src/librt/primitives/ars/ars.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/ars/ars.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -70,6 +70,8 @@ { bu_bomb("rt_ars_free s/b rt_bot_free\n"); } + + int rt_ars_class(const struct soltab *stp, const vect_t min, @@ -1374,6 +1376,7 @@ return(0); /* OK */ } + /** @} */ /* * Local Variables: Modified: brlcad/trunk/src/librt/primitives/ars/ars_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/ars/ars_mirror.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/ars/ars_mirror.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -115,6 +115,7 @@ return 0; } + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/librt/primitives/bot/bot.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/bot/bot.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -66,6 +66,7 @@ } \ } + /* forward declarations needed for the included routines below */ HIDDEN int rt_bot_makesegs( @@ -147,6 +148,7 @@ } } + int rt_botface(struct soltab *stp, struct bot_specific *bot, @@ -353,6 +355,7 @@ (void)rt_bot_makesegs(psp->htab.hits, psp->htab.end, psp->stp, &ap->a_ray, ap, seghead, psp); } + #define RT_BOT_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL @@ -1252,12 +1255,14 @@ ip->idb_ptr = GENPTR_NULL; /* sanity */ } + int rt_bot_tnurb(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol) { return(1); } + int rt_bot_xform(struct rt_db_internal *op, const fastf_t *mat, struct rt_db_internal *ip, const int free, struct db_i *dbip) { @@ -1334,6 +1339,7 @@ return(0); } + int rt_bot_find_v_nearest_pt2( const struct rt_bot_internal *bot, @@ -1364,6 +1370,7 @@ return(closest); } + int rt_bot_edge_in_list(const int v1, const int v2, const int edge_list[], const int edge_count) { @@ -1504,6 +1511,7 @@ return(0); } + static char *modes[]={ "ERROR: Unrecognized mode", "surf", @@ -1512,6 +1520,7 @@ "plate_nocos" }; + static char *orientation[]={ "ERROR: Unrecognized orientation", "no", @@ -1519,6 +1528,7 @@ "lh" }; + static char *los[]={ "center", "append" @@ -2321,6 +2331,7 @@ return BRLCAD_OK; } + int bot_check_vertex_indices(struct bu_vls *log, struct rt_bot_internal *bot) { @@ -2408,6 +2419,7 @@ return(count); } + int rt_bot_same_orientation(const int *a, const int *b) { @@ -2428,6 +2440,7 @@ return(0); } + int rt_bot_face_fuse(struct rt_bot_internal *bot) { @@ -2965,12 +2978,14 @@ return(0); } + struct bot_edge { int v; int use_count; struct bot_edge *next; }; + HIDDEN void delete_edge(int v1, int v2, struct bot_edge **edges) { @@ -3632,6 +3647,7 @@ return 1; } + int rt_bot_smooth(struct rt_bot_internal *bot, char *bot_name, struct db_i *dbip, fastf_t norm_tol_angle) { @@ -3836,6 +3852,7 @@ return 0; } + struct tri_edges { struct bu_list l; int edge_1[2]; Modified: brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/bot/bot_brep.cpp 2009-11-30 22:03:11 UTC (rev 36734) @@ -35,6 +35,7 @@ extern void rt_nmg_brep(ON_Brep **bi, struct rt_db_internal *ip, const struct bn_tol *tol); } + /** * R T _ B O T _ B R E P */ @@ -62,6 +63,7 @@ bu_free(tmp_internal, "free temporary rt_db_internal"); } + // Local Variables: // tab-width: 8 // mode: C++ Modified: brlcad/trunk/src/librt/primitives/bot/bot_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot_mirror.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/bot/bot_mirror.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -118,6 +118,7 @@ return 0; } + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/librt/primitives/bot/g_bot_include.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/g_bot_include.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/bot/g_bot_include.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -110,6 +110,7 @@ return(3); /* OK */ } + /* * Do the prep to support pieces for a BOT/ARS */ @@ -214,6 +215,7 @@ } + /** * R T _ B O T _ P R E P * @@ -380,6 +382,7 @@ return 0; } + static int XGLUE(rt_bot_plate_segs_, TRI_TYPE)(struct hit *hits, int nhits, @@ -456,6 +459,7 @@ } + static int XGLUE(rt_bot_unoriented_segs_, TRI_TYPE)(struct hit *hits, int nhits, @@ -935,6 +939,7 @@ return(nhits); /* HIT */ } + /** * R T _ B O T _ S H O T * @@ -1037,6 +1042,7 @@ return rt_bot_makesegs(hits, nhits, stp, rp, ap, seghead, NULL); } + /** * R T _ B O T _ P I E C E _ S H O T * @@ -1198,6 +1204,7 @@ return psp->htab.end - starting_hits; } + /** * R T _ B O T _ N O R M * @@ -1265,6 +1272,7 @@ } } + /** * R T _ B O T _ F R E E */ @@ -1302,6 +1310,7 @@ bu_free((char *)bot, "bot_specific"); } + /** @} */ /* Modified: brlcad/trunk/src/librt/primitives/brep/brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-11-30 22:03:11 UTC (rev 36734) @@ -738,9 +738,12 @@ BREP_INTERSECT_OOB = -1, BREP_INTERSECT_TRIMMED = 0, BREP_INTERSECT_FOUND = 1 -} brep_intersect_reason_t; +} +brep_intersect_reason_t; + + HIDDEN const char* BREP_INTERSECT_REASON(brep_intersect_reason_t index) { @@ -1476,6 +1479,8 @@ uv[0] = sbv->m_u.Max(); } } + + #endif Modified: brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp 2009-11-30 22:03:11 UTC (rev 36734) @@ -76,7 +76,7 @@ static int pcount = 0; static FILE* plot = NULL; -static FILE* +HIDDEN FILE* plot_file() { if (plot == NULL) { @@ -90,7 +90,7 @@ } -static FILE* +HIDDEN FILE* plot_file(const char *pname) { if (plot != NULL) { @@ -179,7 +179,8 @@ ARB_FACE(pt, 1, 5, 6, 2); \ } -void plotsurfaceleafs(SurfaceTree* surf) { +void +plotsurfaceleafs(SurfaceTree* surf) { double min[3], max[3]; list<BBNode*> leaves; surf->getLeaves(leaves); @@ -220,7 +221,9 @@ } -void plotsurfaceleafs(SurfaceTree* surf, struct bn_vlblock *vbp, bool dim3d) { +void +plotsurfaceleafs(SurfaceTree* surf, struct bn_vlblock *vbp, bool dim3d) +{ register struct bu_list *vhead; double min[3], max[3]; list<BBNode*> leaves; @@ -255,7 +258,9 @@ } -void plottrimleafs(SurfaceTree* st, struct bn_vlblock *vbp, bool dim3d) { +void +plottrimleafs(SurfaceTree* st, struct bn_vlblock *vbp, bool dim3d) +{ register struct bu_list *vhead; double min[3], max[3]; list<BRNode*> leaves; @@ -291,7 +296,9 @@ } -void plotleaf3d(BBNode* bb) { +void +plotleaf3d(BBNode* bb) +{ double min[3], max[3]; double u, v; ON_2dPoint uv[2]; @@ -349,7 +356,9 @@ } -void plotleafuv(BBNode* bb) { +void +plotleafuv(BBNode* bb) +{ double min[3], max[3]; if (bb->m_trimmed) { @@ -372,7 +381,9 @@ } -void plottrim(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres, bool dim3d) { +void +plottrim(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres, bool dim3d) +{ register struct bu_list *vhead; const ON_Surface* surf = face.SurfaceOf(); double umin, umax; @@ -411,7 +422,9 @@ } -void plottrim2d(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) { +void +plottrim2d(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) +{ register struct bu_list *vhead; const ON_Surface* surf = face.SurfaceOf(); double umin, umax; @@ -448,7 +461,9 @@ } -void plotUVDomain2d(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) { +void +plotUVDomain2d(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) +{ register struct bu_list *vhead; const ON_Surface* surf = face.SurfaceOf(); double umin, umax, urange; @@ -494,7 +509,9 @@ } -void plottrim(ON_BrepTrim& trim, struct bn_vlblock *vbp, int plotres, bool dim3d) { +void +plottrim(ON_BrepTrim& trim, struct bn_vlblock *vbp, int plotres, bool dim3d) +{ register struct bu_list *vhead; ON_BrepFace *face= trim.Face(); const ON_Surface* surf = face->SurfaceOf(); @@ -529,7 +546,9 @@ } -void plottrimdirection(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) { +void +plottrimdirection(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) +{ register struct bu_list *vhead; const ON_Surface* surf = face.SurfaceOf(); double umin, umax; @@ -586,7 +605,9 @@ } -void plotsurface(ON_Surface &surf, struct bn_vlblock *vbp, int isocurveres, int gridres) { +void +plotsurface(ON_Surface &surf, struct bn_vlblock *vbp, int isocurveres, int gridres) +{ register struct bu_list *vhead; double umin, umax; double vmin, vmax; @@ -623,7 +644,9 @@ } -void plotsurfacenormals(ON_Surface &surf, struct bn_vlblock *vbp, int gridres) { +void +plotsurfacenormals(ON_Surface &surf, struct bn_vlblock *vbp, int gridres) +{ register struct bu_list *vhead; double umin, umax; double vmin, vmax; @@ -651,7 +674,9 @@ } -void plotcurve(ON_Curve &curve, struct bn_vlblock *vbp, int plotres) { +void +plotcurve(ON_Curve &curve, struct bn_vlblock *vbp, int plotres) +{ register struct bu_list *vhead; double umin, umax; double pt1[3], pt2[3]; @@ -698,7 +723,9 @@ } -void plottrim(const ON_Curve &curve, double from, double to) { +void +plottrim(const ON_Curve &curve, double from, double to) +{ point_t pt1, pt2; // XXX todo: dynamically sample the curve for (int i = 0; i <= 10000; i++) { @@ -712,7 +739,9 @@ } -void plottrim(ON_Curve &curve) { +void +plottrim(ON_Curve &curve) +{ point_t pt1, pt2; // XXX todo: dynamically sample the curve ON_Interval dom = curve.Domain(); @@ -781,7 +810,8 @@ } -int brep_face_info(struct brep_specific* bs, struct bu_vls *vls, int fi) +int +brep_face_info(struct brep_specific* bs, struct bu_vls *vls, int fi) { ON_wString s; ON_TextLog dump(s); Modified: brlcad/trunk/src/librt/primitives/cline/cline.c =================================================================== --- brlcad/trunk/src/librt/primitives/cline/cline.c 2009-11-30 17:01:28 UTC (rev 36733) +++ brlcad/trunk/src/librt/primitives/cline/cline.c 2009-11-30 22:03:11 UTC (rev 36734) @@ -24,7 +24,7 @@ * Intersect a ray with a FASTGEN4 CLINE element. * * Authors - - * John Anderson + * John Anderson * */ @@ -53,13 +53,14 @@ vect_t h; /* unitized height */ }; -#define RT_CLINE_O(m) bu_offsetof( struct rt_cline_internal, m ) +#define RT_CLINE_O(m) bu_offsetof(struct rt_cline_internal, m) + const struct bu_structparse rt_cline_parse[] = { - { "%f", 3, "V", RT_CLINE_O( v ), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", RT_CLINE_O( h ), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r", RT_CLINE_O( radius ), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "t", RT_CLINE_O( thickness ), BU_STRUCTPARSE_FUNC_NULL }, + { "%f", 3, "V", RT_CLINE_O(v), BU_STRUCTPARSE_FUNC_NULL }, + { "%f", 3, "H", RT_CLINE_O(h), BU_STRUCTPARSE_FUNC_NULL }, + { "%f", 1, "r", RT_CLINE_O(radius), BU_STRUCTPARSE_FUNC_NULL }, + { "%f", 1, "t", RT_CLINE_O(thickness), BU_STRUCTPARSE_FUNC_NULL }, { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } }; @@ -72,61 +73,62 @@ * formula. * * Returns - - * 0 cline is OK - * !0 Error in description + * 0 cline is OK + * !0 Error in description * * Implicit return - - * A struct cline_specific is created, and it's address is stored - * in stp->st_specific for use by rt_cline_shot(). + * A struct cline_specific is created, and it's address is stored + * in stp->st_specific for use by rt_cline_shot(). */ int rt_cline_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { - struct rt_cline_internal *cline_ip; - register struct cline_specific *cline; - vect_t work; - vect_t rad; - point_t top; - fastf_t tmp; - fastf_t max_tr; + struct rt_cline_internal *cline_ip; + register struct cline_specific *cline; + vect_t work; + vect_t rad; + point_t top; + fastf_t tmp; + fastf_t max_tr; RT_CK_DB_INTERNAL(ip); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); - BU_GETSTRUCT( cline, cline_specific ); + BU_GETSTRUCT(cline, cline_specific); cline->thickness = cline_ip->thickness; cline->radius = cline_ip->radius; - VMOVE( cline->V, cline_ip->v ); - VMOVE( cline->height, cline_ip->h ); - VMOVE( cline->h, cline_ip->h ); - VUNITIZE( cline->h ); + VMOVE(cline->V, cline_ip->v); + VMOVE(cline->height, cline_ip->h); + VMOVE(cline->h, cline_ip->h); + VUNITIZE(cline->h); stp->st_specific = (genptr_t)cline; - if ( rt_cline_radius > 0.0 ) + if (rt_cline_radius > 0.0) max_tr = rt_cline_radius; else max_tr = 0.0; - tmp = MAGNITUDE( cline_ip->h ) * 0.5; - stp->st_aradius = sqrt( tmp*tmp + cline_ip->radius*cline_ip->radius ); + tmp = MAGNITUDE(cline_ip->h) * 0.5; + stp->st_aradius = sqrt(tmp*tmp + cline_ip->radius*cline_ip->radius); stp->st_bradius = stp->st_aradius + max_tr; - VSETALL( stp->st_min, MAX_FASTF ); - VREVERSE( stp->st_max, stp->st_min ); + VSETALL(stp->st_min, MAX_FASTF); + VREVERSE(stp->st_max, stp->st_min); - VSETALL( rad, cline_ip->radius + max_tr ); - VADD2( work, cline_ip->v, rad ); - VMINMAX( stp->st_min, stp->st_max, work ); - VSUB2( work, cline_ip->v, rad ); - VMINMAX( stp->st_min, stp->st_max, work ); - VADD2( top, cline_ip->v, cline_ip->h ); - VADD2( work, top, rad ); - VMINMAX( stp->st_min, stp->st_max, work ); - VSUB2( work, top, rad ); - VMINMAX( stp->st_min, stp->st_max, work ); + VSETALL(rad, cline_ip->radius + max_tr); + VADD2(work, cline_ip->v, rad); + VMINMAX(stp->st_min, stp->st_max, work); + VSUB2(work, cline_ip->v, rad); + VMINMAX(stp->st_min, stp->st_max, work); + VADD2(top, cline_ip->v, cline_ip->h); + VADD2(work, top, rad); + VMINMAX(stp->st_min, stp->st_max, work); + VSUB2(work, top, rad); + VMINMAX(stp->st_min, stp->st_max, work); - return( 0 ); + return(0); } + /** * R T _ C L I N E _ P R I N T */ @@ -136,16 +138,17 @@ register const struct cline_specific *cline = (struct cline_specific *)stp->st_specific; - VPRINT( "V", cline->V ); - VPRINT( "Height", cline->height ); - VPRINT( "Unit Height", cline->h ); - bu_log( "Radius: %g\n", cline->radius ); - if ( cline->thickness > 0.0 ) - bu_log( "Plate Mode Thickness: %g\n", cline->thickness ); + VPRINT("V", cline->V); + VPRINT("Height", cline->height); + VPRINT("Unit Height", cline->h); + bu_log("Radius: %g\n", cline->radius); + if (cline->thickness > 0.0) + bu_log("Plate Mode Thickness: %g\n", cline->thickness); else - bu_log( "Volume mode\n" ); + bu_log("Volume mode\n"); } + /** * R T _ C L I N E _ S H O T * @@ -153,16 +156,16 @@ * occurs, at least one struct seg will be acquired and filled in. * * Returns - - * 0 MISS - * >0 HIT + * 0 MISS + * >0 HIT */ int rt_cline_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) { register struct cline_specific *cline = (struct cline_specific *)stp->st_specific; - struct seg ref_seghead; - register struct seg *segp; + struct seg ref_seghead; + register struct seg *segp; fastf_t reff; fastf_t dist[3]; fastf_t cosa, sina; @@ -173,32 +176,28 @@ fastf_t distmin, distmax; fastf_t add_radius; - BU_LIST_INIT( &ref_seghead.l ); + BU_LIST_INIT(&ref_seghead.l); /* This is a CLINE FASTGEN element */ - if ( rt_cline_radius > 0.0 ) - { + if (rt_cline_radius > 0.0) { add_radius = rt_cline_radius; reff = cline->radius + add_radius; - } - else - { + } else { add_radius = 0.0; reff = cline->radius; } - cosa = VDOT( rp->r_dir, cline->h ); + cosa = VDOT(rp->r_dir, cline->h); - if ( cosa > 0.0 ) + if (cosa > 0.0) tmp = cosa - 1.0; else tmp = cosa + 1.0; - (void)bn_distsq_line3_line3( dist, cline->V, cline->height, - rp->r_pt, rp->r_dir, pt1, pt2 ); + (void)bn_distsq_line3_line3(dist, cline->V, cline->height, + rp->r_pt, rp->r_dir, pt1, pt2); - if ( NEAR_ZERO( tmp, RT_DOT_TOL ) ) - { + if (NEAR_ZERO(tmp, RT_DOT_TOL)) { /* ray is parallel to CLINE */ #if 1 /* FASTGEN developers claim they report hits on volume mode @@ -206,19 +205,18 @@ * this case from consideration before their intersection code * is even called (see SUBROUTINE BULK) */ - return( 0 ); + return(0); #else - if ( cline->thickness > 0.0 ) - return( 0 ); /* No end-on hits for plate mode cline */ + if (cline->thickness > 0.0) + return(0); /* No end-on hits for plate mode cline */ - if ( dist[2] > reff*reff ) - return( 0 ); /* missed */ + if (dist[2] > reff*reff) + return(0); /* missed */ - VJOIN2( diff, cline->V, 1.0, cline->height, -1.0, rp->r_pt ); - dist[0] = VDOT( diff, rp->r_dir ); - if ( dist[1] < dist[0] ) - { + VJOIN2(diff, cline->V, 1.0, cline->height, -1.0, rp->r_pt); + dist[0] = VDOT(diff, rp->r_dir); + if (dist[1] < dist[0]) { dist[2] = dist[0]; dist[0] = dist[1]; dist[1] = dist[2]; @@ -226,49 +224,48 @@ /* vloume mode */ - RT_GET_SEG( segp, ap->a_resource); + RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in.hit_dist = dist[0]; segp->seg_in.hit_surfno = 1; - if ( cosa > 0.0 ) - VREVERSE( segp->seg_in.hit_normal, cline->h ) - else - VMOVE( segp->seg_in.hit_normal, cline->h ); + if (cosa > 0.0) + VREVERSE(segp->seg_in.hit_normal, cline->h); + else + VMOVE(segp->seg_in.hit_normal, cline->h); segp->seg_out.hit_dist = dist[1]; segp->seg_out.hit_surfno = -1; - if ( cosa < 0.0 ) - VREVERSE( segp->seg_out.hit_normal, cline->h ) - else - VMOVE( segp->seg_out.hit_normal, cline->h ); - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); - return( 1 ); + if (cosa < 0.0) + VREVERSE(segp->seg_out.hit_normal, cline->h); + else + VMOVE(segp->seg_out.hit_normal, cline->h); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); + return(1); #endif } - if ( dist[2] > reff*reff ) - return( 0 ); /* missed */ + if (dist[2] > reff*reff) + return(0); /* missed */ /* Exactly ==0 and ==1 are hits, not misses */ - if ( dist[0] < 0.0 || dist[0] > 1.0 ) - return( 0 ); /* missed */ + if (dist[0] < 0.0 || dist[0] > 1.0) + return(0); /* missed */ - sina = sqrt( 1.0 - cosa*cosa); - tmp = sqrt( dist[2] ) - add_radius; - if ( dist[2] > add_radius * add_radius ) - half_los = sqrt( cline->radius*cline->radius - tmp*tmp) / sina; + sina = sqrt(1.0 - cosa*cosa); + tmp = sqrt(dist[2]) - add_radius; + if (dist[2] > add_radius * add_radius) + half_los = sqrt(cline->radius*cline->radius - tmp*tmp) / sina; else half_los = cline->radius / sina; - VSUB2( diff, cline->V, rp->r_pt ); - distmin = VDOT( rp->r_dir, diff ); - VADD2( diff, cline->V, cline->height ); - VSUB2( diff, diff, rp->r_pt ); - distmax = VDOT( rp->r_dir, diff ); + VSUB2(diff, cline->V, rp->r_pt); + distmin = VDOT(rp->r_dir, diff); + VADD2(diff, cline->V, cline->height); + VSUB2(diff, diff, rp->r_pt); + distmax = VDOT(rp->r_dir, diff); - if ( distmin > distmax ) - { + if (distmin > distmax) { tmp = distmin; distmin = distmax; distmax = tmp; @@ -277,62 +274,60 @@ distmin -= cline->radius; distmax += cline->radius; - if ( cline->thickness <= 0.0 ) - { + if (cline->thickness <= 0.0) { /* volume mode */ - RT_GET_SEG( segp, ap->a_resource); + RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in.hit_surfno = 2; segp->seg_in.hit_dist = dist[1] - half_los; - if ( segp->seg_in.hit_dist < distmin ) + if (segp->seg_in.hit_dist < distmin) segp->seg_in.hit_dist = distmin; - VMOVE( segp->seg_in.hit_vpriv, cline->h ); + VMOVE(segp->seg_in.hit_vpriv, cline->h); segp->seg_out.hit_surfno = -2; segp->seg_out.hit_dist = dist[1] + half_los; - if ( segp->seg_out.hit_dist > distmax ) + if (segp->seg_out.hit_dist > distmax) segp->seg_out.hit_dist = distmax; - VMOVE( segp->seg_out.hit_vpriv, cline->h ); - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + VMOVE(segp->seg_out.hit_vpriv, cline->h); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); - return( 1 ); - } - else - { + return(1); + } else { /* plate mode */ - RT_GET_SEG( segp, ap->a_resource); + RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in.hit_surfno = 2; segp->seg_in.hit_dist = dist[1] - half_los; - if ( segp->seg_in.hit_dist < distmin ) + if (segp->seg_in.hit_dist < distmin) segp->seg_in.hit_dist = distmin; - VMOVE( segp->seg_in.hit_vpriv, cline->h ); + VMOVE(segp->seg_in.hit_vpriv, cline->h); segp->seg_out.hit_surfno = -2; segp->seg_out.hit_dist = segp->seg_in.hit_dist + cline->thickness; - VMOVE( segp->seg_out.hit_vpriv, cline->h ); - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + VMOVE(segp->seg_out.hit_vpriv, cline->h); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); - RT_GET_SEG( segp, ap->a_resource); + RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in.hit_surfno = 2; segp->seg_in.hit_dist = dist[1] + half_los; - if ( segp->seg_in.hit_dist > distmax ) + if (segp->seg_in.hit_dist > distmax) segp->seg_in.hit_dist = distmax; segp->seg_in.hit_dist -= cline->thickness; - VMOVE( segp->seg_in.hit_vpriv, cline->h ); + VMOVE(segp->seg_in.hit_vpriv, cline->h); segp->seg_out.hit_surfno = -2; segp->seg_out.hit_dist = segp->seg_in.hit_dist + cline->thickness; - VMOVE( segp->seg_out.hit_vpriv, cline->h ); - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + VMOVE(segp->seg_out.hit_vpriv, cline->h); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); - return( 2 ); + return(2); } } + #define RT_CLINE_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL /** @@ -348,9 +343,10 @@ /* Number of ray/object pairs */ { - rt_vstub( stp, rp, segp, n, ap ); + rt_vstub(stp, rp, segp, n, ap); } + /** * R T _ C L I N E _ N O R M * @@ -362,29 +358,30 @@ vect_t tmp; fastf_t dot; - if ( hitp->hit_surfno == 1 || hitp->hit_surfno == -1 ) + if (hitp->hit_surfno == 1 || hitp->hit_surfno == -1) return; /* only need to do some calculations for surfno 2 or -2 */ /* this is wrong, but agrees with FASTGEN */ - VCROSS( tmp, rp->r_dir, hitp->hit_vpriv ); - VCROSS( hitp->hit_normal, tmp, hitp->hit_vpriv ); - VUNITIZE( hitp->hit_normal ); - dot = VDOT( hitp->hit_normal, rp->r_dir ); - if ( dot < 0.0 && hitp->hit_surfno < 0 ) - VREVERSE( hitp->hit_normal, hitp->hit_normal ) - else if ( dot > 0.0 && hitp->hit_surfno > 0 ) - VREVERSE( hitp->hit_normal, hitp->hit_normal ) + VCROSS(tmp, rp->r_dir, hitp->hit_vpriv); + VCROSS(hitp->hit_normal, tmp, hitp->hit_vpriv); + VUNITIZE(hitp->hit_normal); + dot = VDOT(hitp->hit_normal, rp->r_dir); + if (dot < 0.0 && hitp->hit_surfno < 0) + VREVERSE(hitp->hit_normal, hitp->hit_normal); + else if (dot > 0.0 && hitp->hit_surfno > 0) + VREVERSE(hitp->hit_normal, hitp->hit_normal); - if ( MAGNITUDE( hitp->hit_normal ) < 0.9 ) { - bu_log( "BAD normal for solid %s for ray -p %g %g %g -d %g %g %g\n", - stp->st_name, V3ARGS( rp->r_pt ), V3ARGS( rp->r_dir ) ); - bu_bomb( "BAD normal\n" ); - } - VJOIN1( hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir ); + if (MAGNITUDE(hitp->hit_normal) < 0.9) { + bu_log("BAD normal for solid %s for ray -p %g %g %g -d %g %g %g\n", + stp->st_name, V3ARGS(rp->r_pt), V3ARGS(rp->r_dir)); + bu_bomb("BAD normal\n"); + } + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); } + /** * R T _ C L I N E _ C U R V E * @@ -398,9 +395,10 @@ cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ - bn_vec_ortho( cvp->crv_pdir, hitp->hit_normal ); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); } + /** * R T _ C L I N E_ U V * @@ -416,6 +414,7 @@ uvp->uv_dv = 0.0; } + /** * R T _ C L I N E _ F R E E */ @@ -425,9 +424,10 @@ register struct cline_specific *cline = (struct cline_specific *)stp->st_specific; - bu_free( (char *)cline, "cline_specific" ); + bu_free((char *)cline, "cline_specific"); } + /** * R T _ C L I N E _ C L A S S */ @@ -435,18 +435,19 @@ rt_cline_class(const struct soltab *stp, const fastf_t *min, const fastf_t *max, const struct bn_tol *tol) { - return( 0 ); + return(0); } + /** * R T _ C L I N E _ P L O T */ int rt_cline_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct rt_cline_internal *cline_ip; - fastf_t top[16*3]; - fastf_t bottom[16*3]; + struct rt_cline_internal *cline_ip; + fastf_t top[16*3]; + fastf_t bottom[16*3]; point_t top_pt; vect_t unit_a, unit_b; vect_t a, b; @@ -457,62 +458,61 @@ cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); - VADD2( top_pt, cline_ip->v, cline_ip->h ); - bn_vec_ortho( unit_a, cline_ip->h ); - VCROSS( unit_b, unit_a, cline_ip->h ); - VUNITIZE( unit_b ); - VSCALE( a, unit_a, cline_ip->radius ); - VSCALE( b, unit_b, cline_ip->radius ); + VADD2(top_pt, cline_ip->v, cline_ip->h); + bn_vec_ortho(unit_a, cline_ip->h); + VCROSS(unit_b, unit_a, cline_ip->h); + VUNITIZE(unit_b); + VSCALE(a, unit_a, cline_ip->radius); + VSCALE(b, unit_b, cline_ip->radius); - rt_ell_16pts( bottom, cline_ip->v, a, b ); - rt_ell_16pts( top, top_pt, a, b ); + rt_ell_16pts(bottom, cline_ip->v, a, b); + rt_ell_16pts(top, top_pt, a, b); /* Draw the top */ - RT_ADD_VLIST( vhead, &top[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &top[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw the bottom */ - RT_ADD_VLIST( vhead, &bottom[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &bottom[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw connections */ - for ( i=0; i<16; i += 4 ) { - RT_ADD_VLIST( vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + for (i=0; i<16; i += 4) { + RT_ADD_VLIST(vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { /* draw inner cylinder */ inner_radius = cline_ip->radius - cline_ip->thickness; - VSCALE( a, unit_a, inner_radius ); - VSCALE( b, unit_b, inner_radius ); + VSCALE(a, unit_a, inner_radius); + VSCALE(b, unit_b, inner_radius); - rt_ell_16pts( bottom, cline_ip->v, a, b ); - rt_ell_16pts( top, top_pt, a, b ); + rt_ell_16pts(bottom, cline_ip->v, a, b); + rt_ell_16pts(top, top_pt, a, b); /* Draw the top */ - RT_ADD_VLIST( vhead, &top[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &top[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw the bottom */ - RT_ADD_VLIST( vhead, &bottom[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &bottom[15*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw connections */ - for ( i=0; i<16; i += 4 ) { - RT_ADD_VLIST( vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + for (i=0; i<16; i += 4) { + RT_ADD_VLIST(vhead, &top[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, &bottom[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } } @@ -520,36 +520,38 @@ return(0); } + struct cline_vert { point_t pt; struct vertex *v; }; + /** * R T _ C L I N E _ T E S S * * Returns - - * -1 failure - * 0 OK. *r points to nmgregion that holds this tessellation. + * -1 failure + * 0 OK. *r points to nmgregion that holds this tessellation. */ int rt_cline_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct shell *s; - struct rt_cline_internal *cline_ip; - fastf_t ang_tol, abs_tol, norm_tol, rel_tol; - int nsegs, seg_no, i; - struct cline_vert *base_outer, *base_inner, *top_outer, *top_inner; - struct cline_vert base_center, top_center; - vect_t v1, v2; - point_t top; - struct bu_ptbl faces; + struct shell *s; + struct rt_cline_internal *cline_ip; + fastf_t ang_tol, abs_tol, norm_tol, rel_tol; + int nsegs, seg_no, i; + struct cline_vert *base_outer, *base_inner, *top_outer, *top_inner; + struct cline_vert base_center, top_center; + vect_t v1, v2; + point_t top; + struct bu_ptbl faces; RT_CK_DB_INTERNAL(ip); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); - *r = nmg_mrsv( m ); + *r = nmg_mrsv(m); s = BU_LIST_FIRST(shell, &(*r)->s_hd); ang_tol = bn_halfpi; @@ -557,31 +559,28 @@ rel_tol = bn_halfpi; norm_tol = bn_halfpi; - if ( ttol->abs <= 0.0 && ttol->rel <= 0.0 && ttol->norm <= 0.0 ) - { + if (ttol->abs <= 0.0 && ttol->rel <= 0.0 && ttol->norm <= 0.0) { /* no tolerances specified, use 10% relative tolerance */ - ang_tol = 2.0 * acos( 0.9 ); - } - else - { - if ( ttol->abs > 0.0 && ttol->abs < cline_ip->radius ) - abs_tol = 2.0 * acos( 1.0 - ttol->abs / cline_ip->radius ); - if ( ttol->rel > 0.0 && ttol->rel < 1.0 ) - rel_tol = 2.0 * acos( 1.0 - ttol->rel ); - if ( ttol->norm > 0.0 ) + ang_tol = 2.0 * acos(0.9); + } else { + if (ttol->abs > 0.0 && ttol->abs < cline_ip->radius) + abs_tol = 2.0 * acos(1.0 - ttol->abs / cline_ip->radius); + if (ttol->rel > 0.0 && ttol->rel < 1.0) + rel_tol = 2.0 * acos(1.0 - ttol->rel); + if (ttol->norm > 0.0) norm_tol = 2.0 * ttol->norm; } - if ( abs_tol < ang_tol ) + if (abs_tol < ang_tol) ang_tol = abs_tol; - if ( rel_tol < ang_tol ) + if (rel_tol < ang_tol) ang_tol = rel_tol; - if ( norm_tol < ang_tol ) + if (norm_tol < ang_tol) ang_tol = norm_tol; /* get number of segments per quadrant */ nsegs = (int)(bn_halfpi / ang_tol + 0.9999); - if ( nsegs < 2 ) + if (nsegs < 2) nsegs = 2; ang_tol = bn_halfpi / nsegs; @@ -590,34 +589,31 @@ nsegs *= 4; /* allocate memory for arrays of vertices */ - base_outer = (struct cline_vert *)bu_calloc( nsegs, sizeof( struct cline_vert ), "base outer vertices" ); - top_outer = (struct cline_vert *)bu_calloc( nsegs, sizeof( struct cline_vert ), "top outer vertices" ); + base_outer = (struct cline_vert *)bu_calloc(nsegs, sizeof(struct cline_vert), "base outer vertices"); + top_outer = (struct cline_vert *)bu_calloc(nsegs, sizeof(struct cline_vert), "top outer vertices"); - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { - base_inner = (struct cline_vert *)bu_calloc( nsegs, sizeof( struct cline_vert ), "base inner vertices" ); - top_inner = (struct cline_vert *)bu_calloc( nsegs, sizeof( struct cline_vert ), "top inner vertices" ); + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { + base_inner = (struct cline_vert *)bu_calloc(nsegs, sizeof(struct cline_vert), "base inner vertices"); + top_inner = (struct cline_vert *)bu_calloc(nsegs, sizeof(struct cline_vert), "top inner vertices"); } else { base_inner = NULL; top_inner = NULL; } /* calculate geometry for each vertex */ - bn_vec_ortho( v1, cline_ip->h ); - VCROSS( v2, cline_ip->h, v1 ); - VUNITIZE( v2 ); - VADD2( top, cline_ip->v, cline_ip->h ); - for ( seg_no = 0; seg_no < nsegs; seg_no++ ) - { + bn_vec_ortho(v1, cline_ip->h); + VCROSS(v2, cline_ip->h, v1); + VUNITIZE(v2); + VADD2(top, cline_ip->v, cline_ip->h); + for (seg_no = 0; seg_no < nsegs; seg_no++) { fastf_t a, b, c, d, angle; angle = ang_tol * seg_no; - a = cos( angle ); - b = sin( angle ); + a = cos(angle); + b = sin(angle); - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { c = a * (cline_ip->radius - cline_ip->thickness); d = b * (cline_ip->radius - cline_ip->thickness); } else { @@ -627,197 +623,180 @@ a *= cline_ip->radius; b *= cline_ip->radius; - VJOIN2( base_outer[seg_no].pt, cline_ip->v, a, v1, b, v2 ); - VADD2( top_outer[seg_no].pt, base_outer[seg_no].pt, cline_ip->h ); + VJOIN2(base_outer[seg_no].pt, cline_ip->v, a, v1, b, v2); + VADD2(top_outer[seg_no].pt, base_outer[seg_no].pt, cline_ip->h); - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { - VJOIN2( base_inner[seg_no].pt, cline_ip->v, c, v1, d, v2 ); - VADD2( top_inner[seg_no].pt, base_inner[seg_no].pt, cline_ip->h ); + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { + VJOIN2(base_inner[seg_no].pt, cline_ip->v, c, v1, d, v2); + VADD2(top_inner[seg_no].pt, base_inner[seg_no].pt, cline_ip->h); } } - bu_ptbl_init( &faces, 64, "faces"); + bu_ptbl_init(&faces, 64, "faces"); /* build outer faces */ - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { + for (seg_no=0; seg_no<nsegs; seg_no++) { int next_seg; struct vertex **verts[3]; struct faceuse *fu; next_seg = seg_no + 1; - if ( next_seg == nsegs ) + if (next_seg == nsegs) next_seg = 0; verts[2] = &top_outer[seg_no].v; verts[1] = &top_outer[next_seg].v; verts[0] = &base_outer[seg_no].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); verts[2] = &base_outer[seg_no].v; verts[1] = &top_outer[next_seg].v; verts[0] = &base_outer[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); } /* build inner faces */ - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { + for (seg_no=0; seg_no<nsegs; seg_no++) { int next_seg; struct vertex **verts[3]; struct faceuse *fu; next_seg = seg_no + 1; - if ( next_seg == nsegs ) + if (next_seg == nsegs) next_seg = 0; verts[0] = &top_inner[seg_no].v; verts[1] = &top_inner[next_seg].v; verts[2] = &base_inner[seg_no].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); verts[0] = &base_inner[seg_no].v; verts[1] = &top_inner[next_seg].v; verts[2] = &base_inner[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); } } /* build top faces */ top_center.v = (struct vertex *)NULL; - VMOVE( top_center.pt, top ); - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { + VMOVE(top_center.pt, top); + for (seg_no=0; seg_no<nsegs; seg_no++) { int next_seg; struct vertex **verts[3]; struct faceuse *fu; next_seg = seg_no + 1; - if ( next_seg == nsegs ) + if (next_seg == nsegs) next_seg = 0; - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { verts[2] = &top_outer[seg_no].v; verts[1] = &top_inner[seg_no].v; verts[0] = &top_inner[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); verts[2] = &top_inner[next_seg].v; verts[1] = &top_outer[next_seg].v; verts[0] = &top_outer[seg_no].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); - } - else - { + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); + } else { verts[2] = &top_outer[seg_no].v; verts[1] = &top_center.v; verts[0] = &top_outer[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); } } /* build base faces */ base_center.v = (struct vertex *)NULL; - VMOVE( base_center.pt, cline_ip->v ); - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { + VMOVE(base_center.pt, cline_ip->v); + for (seg_no=0; seg_no<nsegs; seg_no++) { int next_seg; struct vertex **verts[3]; struct faceuse *fu; next_seg = seg_no + 1; - if ( next_seg == nsegs ) + if (next_seg == nsegs) next_seg = 0; - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { verts[0] = &base_outer[seg_no].v; verts[1] = &base_inner[seg_no].v; verts[2] = &base_inner[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); verts[0] = &base_inner[next_seg].v; verts[1] = &base_outer[next_seg].v; verts[2] = &base_outer[seg_no].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); - } - else - { + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); + } else { verts[0] = &base_outer[seg_no].v; verts[1] = &base_center.v; verts[2] = &base_outer[next_seg].v; - fu = nmg_cmface( s, verts, 3 ); - bu_ptbl_ins( &faces, (long *)fu ); + fu = nmg_cmface(s, verts, 3); + bu_ptbl_ins(&faces, (long *)fu); } } /* assign vertex geometry */ - if ( top_center.v ) - nmg_vertex_gv( top_center.v, top_center.pt ); - if ( base_center.v ) - nmg_vertex_gv( base_center.v, base_center.pt ); + if (top_center.v) + nmg_vertex_gv(top_center.v, top_center.pt); + if (base_center.v) + nmg_vertex_gv(base_center.v, base_center.pt); - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { - nmg_vertex_gv( top_outer[seg_no].v, top_outer[seg_no].pt ); - nmg_vertex_gv( base_outer[seg_no].v, base_outer[seg_no].pt ); + for (seg_no=0; seg_no<nsegs; seg_no++) { + nmg_vertex_gv(top_outer[seg_no].v, top_outer[seg_no].pt); + nmg_vertex_gv(base_outer[seg_no].v, base_outer[seg_no].pt); } - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { - for ( seg_no=0; seg_no<nsegs; seg_no++ ) - { - nmg_vertex_gv( top_inner[seg_no].v, top_inner[seg_no].pt ); - nmg_vertex_gv( base_inner[seg_no].v, base_inner[seg_no].pt ); + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { + for (seg_no=0; seg_no<nsegs; seg_no++) { + nmg_vertex_gv(top_inner[seg_no].v, top_inner[seg_no].pt); + nmg_vertex_gv(base_inner[seg_no].v, base_inner[seg_no].pt); } } - bu_free( (char *)base_outer, "base outer vertices" ); - bu_free( (char *)top_outer, "top outer vertices" ); - if ( cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius ) - { - bu_free( (char *)base_inner, "base inner vertices" ); - bu_free( (char *)top_inner, "top inner vertices" ); + bu_free((char *)base_outer, "base outer vertices"); + bu_free((char *)top_outer, "top outer vertices"); + if (cline_ip->thickness > 0.0 && cline_ip->thickness < cline_ip->radius) { + bu_free((char *)base_inner, "base inner vertices"); + bu_free((char *)top_inner, "top inner vertices"); } /* Associate face plane equations */ - for ( i=0; i<BU_PTBL_END( &faces ); i++ ) - { + for (i=0; i<BU_PTBL_END(&faces); i++) { struct faceuse *fu; - fu = (struct faceuse *)BU_PTBL_GET( &faces, i ); - NMG_CK_FACEUSE( fu ); + fu = (struct faceuse *)BU_PTBL_GET(&faces, i); + NMG_CK_FACEUSE(fu); - if ( nmg_calc_face_g( fu ) ) - { - bu_log( "rt_tess_cline: failed to calculate plane equation\n" ); - nmg_pr_fu_briefly( fu, "" ); - return( -1 ); + if (nmg_calc_face_g(fu)) { + bu_log("rt_tess_cline: failed to calculate plane equation\n"); + nmg_pr_fu_briefly(fu, ""); + return(-1); } } - nmg_region_a( *r, tol ); - bu_ptbl_free( &faces ); + nmg_region_a(*r, tol); + bu_ptbl_free(&faces); return(0); } + /** * R T _ C L I N E _ I M P O R T * @@ -827,40 +806,41 @@ int rt_cline_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { - struct rt_cline_internal *cline_ip; - union record *rp; - point_t work; + struct rt_cline_internal *cline_ip; + union record *rp; + point_t work; - BU_CK_EXTERNAL( ep ); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ - if ( rp->u_id != DBID_CLINE ) { + if (rp->u_id != DBID_CLINE) { bu_log("rt_cline_import4: defective record\n"); return(-1); } - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_CLINE; ip->idb_meth = &rt_functab[ID_CLINE]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_cline_internal), "rt_cline_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_cline_internal), "rt_cline_internal"); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; cline_ip->magic = RT_CLINE_INTERNAL_MAGIC; if (mat == NULL) mat = bn_mat_identity; - ntohd( (unsigned char *)(&cline_ip->thickness), rp->cli.cli_thick, 1 ); + ntohd((unsigned char *)(&cline_ip->thickness), rp->cli.cli_thick, 1); cline_ip->thickness /= mat[15]; - ntohd( (unsigned char *)(&cline_ip->radius), rp->cli.cli_radius, 1 ); + ntohd((unsigned char *)(&cline_ip->radius), rp->cli.cli_radius, 1); cline_ip->radius /= mat[15]; - ntohd( (unsigned char *)(&work), rp->cli.cli_V, 3 ); - MAT4X3PNT( cline_ip->v, mat, work ); - ntohd( (unsigned char *)(&work), rp->cli.cli_h, 3 ); - MAT4X3VEC( cline_ip->h, mat, work ); + ntohd((unsigned char *)(&work), rp->cli.cli_V, 3); + MAT4X3PNT(cline_ip->v, mat, work); + ntohd((unsigned char *)(&work), rp->cli.cli_h, 3); + MAT4X3VEC(cline_ip->h, mat, work); return(0); /* OK */ } + /** * R T _ C L I N E _ E X P O R T * @@ -869,36 +849,37 @@ int rt_cline_export4(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_cline_internal *cline_ip; - union record *rec; - fastf_t tmp; - point_t work; + struct rt_cline_internal *cline_ip; + union record *rec; + fastf_t tmp; + point_t work; RT_CK_DB_INTERNAL(ip); - if ( ip->idb_type != ID_CLINE ) return(-1); + if (ip->idb_type != ID_CLINE) return(-1); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); BU_CK_EXTERNAL(ep); ep->ext_nbytes = sizeof(union record); - ep->ext_buf = (genptr_t)bu_calloc( 1, ep->ext_nbytes, "cline external"); + ep->ext_buf = (genptr_t)bu_calloc(1, ep->ext_nbytes, "cline external"); rec = (union record *)ep->ext_buf; rec->s.s_id = ID_SOLID; rec->cli.cli_id = DBID_CLINE; /* GED primitive type from db.h */ tmp = cline_ip->thickness * local2mm; - htond( rec->cli.cli_thick, (unsigned char *)(&tmp), 1 ); + htond(rec->cli.cli_thick, (unsigned char *)(&tmp), 1); tmp = cline_ip->radius * local2mm; - htond( rec->cli.cli_radius, (unsigned char *)(&tmp), 1 ); - VSCALE( work, cline_ip->v, local2mm ); - htond( rec->cli.cli_V, (unsigned char *)work, 3 ); - VSCALE( work, cline_ip->h, local2mm ); - htond( rec->cli.cli_h, (unsigned char *)work, 3 ); + htond(rec->cli.cli_radius, (unsigned char *)(&tmp), 1); + VSCALE(work, cline_ip->v, local2mm); + htond(rec->cli.cli_V, (unsigned char *)work, 3); + VSCALE(work, cline_ip->h, local2mm); + htond(rec->cli.cli_h, (unsigned char *)work, 3); return(0); } + /** * R T _ C L I N E _ I M P O R T 5 * @@ -908,24 +889,24 @@ int rt_cline_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { - struct rt_cline_internal *cline_ip; - fastf_t vec[8]; + struct rt_cline_internal *cline_ip; + fastf_t vec[8]; - BU_CK_EXTERNAL( ep ); + BU_CK_EXTERNAL(ep); - BU_ASSERT_LONG( ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 8 ); + BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 8); - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_CLINE; ip->idb_meth = &rt_functab[ID_CLINE]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_cline_internal), "rt_cline_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_cline_internal), "rt_cline_internal"); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; cline_ip->magic = RT_CLINE_INTERNAL_MAGIC; /* Convert from database (network) to internal (host) format */ - ntohd( (unsigned char *)vec, ep->ext_buf, 8 ); + ntohd((unsigned char *)vec, ep->ext_buf, 8); if (mat == NULL) mat = bn_mat_identity; cline_ip->thickness = vec[0] / mat[15]; @@ -936,6 +917,7 @@ return(0); /* OK */ } + /** * R T _ C L I N E _ E X P O R T 5 * @@ -944,11 +926,11 @@ int rt_cline_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_cline_internal *cline_ip; - fastf_t vec[8]; + struct rt_cline_internal *cline_ip; + fastf_t vec[8]; RT_CK_DB_INTERNAL(ip); - if (ip->idb_type != ID_CLINE) return(-1); + if (ip->idb_type != ID_CLINE) return(-1); cline_ip = (struct rt_cline_internal *)ip->idb_ptr; RT_CLINE_CK_MAGIC(cline_ip); @@ -967,6 +949,7 @@ return(0); } + /** * R T _ C L I N E _ D E S C R I B E * @@ -977,33 +960,31 @@ int rt_cline_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_cline_internal *cline_ip = + register struct rt_cline_internal *cline_ip = (struct rt_cline_internal *)ip->idb_ptr; - char buf[256]; + char buf[256]; point_t local_v; vect_t local_h; RT_CLINE_CK_MAGIC(cline_ip); - bu_vls_strcat( str, "cline solid (CLINE)\n"); + bu_vls_strcat(str, "cline solid (CLINE)\n"); - VSCALE( local_v, cline_ip->v, mm2local ); - VSCALE( local_h, cline_ip->h, mm2local ); + VSCALE(local_v, cline_ip->v, mm2local); + VSCALE(local_h, cline_ip->h, mm2local); - if ( cline_ip->thickness > 0.0 ) - { - sprintf( buf, "\tV (%g %g %g)\n\tH (%g %g %g)\n\tradius %g\n\tplate mode thickness %g", - V3INTCLAMPARGS( local_v ), V3INTCLAMPARGS( local_h ), INTCLAMP(cline_ip->radius*mm2local), INTCLAMP(cline_ip->thickness*mm2local) ); + if (cline_ip->thickness > 0.0) { + sprintf(buf, "\tV (%g %g %g)\n\tH (%g %g %g)\n\tradius %g\n\tplate mode thickness %g", + V3INTCLAMPARGS(local_v), V3INTCLAMPARGS(local_h), INTCLAMP(cline_ip->radius*mm2local), INTCLAMP(cline_ip->thickness*mm2local)); + } else { + sprintf(buf, "\tV (%g %g %g)\n\tH (%g %g %g)\n\tradius %g\n\tVolume mode\n", + V3INTCLAMPARGS(local_v), V3INTCLAMPARGS(local_h), INTCLAMP(cline_ip->radius*mm2local)); } - else - { - sprintf( buf, "\tV (%g %g %g)\n\tH (%g %g %g)\n\tradius %g\n\tVolume mode\n", - V3INTCLAMPARGS( local_v ), V3INTCLAMPARGS( local_h ), INTCLAMP(cline_ip->radius*mm2local) ); - } - bu_vls_strcat( str, buf ); + bu_vls_strcat(str, buf); return(0); } + /** * R T _ C L I N E _ I F R E E * @@ -1013,7 +994,7 @@ void rt_cline_ifree(struct rt_db_internal *ip, struct resource *resp) { - register struct rt_cline_internal *cline_ip; + register struct rt_cline_internal *cline_ip; RT_CK_DB_INTERNAL(ip); if (!resp) resp = &rt_uniresource; @@ -1022,46 +1003,48 @@ RT_CLINE_CK_MAGIC(cline_ip); cline_ip->magic = 0; /* sanity */ - bu_free( (char *)cline_ip, "cline ifree" ); + bu_free((char *)cline_ip, "cline ifree"); ip->idb_ptr = GENPTR_NULL; /* sanity */ } + int rt_cline_tnurb(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol) { - return( 1 ); + return(1); } + int rt_cline_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) { register struct rt_cline_internal *cli = (struct rt_cline_internal *)intern->idb_ptr; - RT_CLINE_CK_MAGIC( cli ); + RT_CLINE_CK_MAGIC(cli); if (attr == (char *)NULL) { - bu_vls_strcpy( log, "cline" ); - bu_vls_printf( log, " V {%.25G %.25G %.25G}", V3ARGS( cli->v ) ); - bu_vls_printf( log, " H {%.25G %.25G %.25G}", V3ARGS( cli->h ) ); - bu_vls_printf( log, " R %.25G T %.25G", cli->radius, cli->thickness ); - } - else if ( *attr == 'V') - bu_... [truncated message content] |
From: <br...@us...> - 2009-12-01 06:55:00
|
Revision: 36735 http://brlcad.svn.sourceforge.net/brlcad/?rev=36735&view=rev Author: brlcad Date: 2009-12-01 06:54:52 +0000 (Tue, 01 Dec 2009) Log Message: ----------- more whooosh.. massive ws style indent comment consistency update. also includes dead code elimination and much static->HIDDEN on funcs. should be no logic changes. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/part/part.c brlcad/trunk/src/librt/primitives/part/part_mirror.c brlcad/trunk/src/librt/primitives/pipe/pipe.c brlcad/trunk/src/librt/primitives/pipe/pipe_brep.cpp brlcad/trunk/src/librt/primitives/pipe/pipe_mirror.c brlcad/trunk/src/librt/primitives/pnts/pnts.c brlcad/trunk/src/librt/primitives/poly/poly.c brlcad/trunk/src/librt/primitives/poly/poly_brep.cpp brlcad/trunk/src/librt/primitives/poly/poly_mirror.c brlcad/trunk/src/librt/primitives/rec/rec.c brlcad/trunk/src/librt/primitives/revolve/revolve.c brlcad/trunk/src/librt/primitives/revolve/revolve.h brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp Modified: brlcad/trunk/src/librt/primitives/part/part.c =================================================================== --- brlcad/trunk/src/librt/primitives/part/part.c 2009-11-30 22:03:11 UTC (rev 36734) +++ brlcad/trunk/src/librt/primitives/part/part.c 2009-12-01 06:54:52 UTC (rev 36735) @@ -37,7 +37,7 @@ * be transformed into a set of points on a unit cylinder (or cone) * with the transformed base (V') located at the origin with a * transformed radius of 1 (vrad'). The height of the cylinder (or - * cone) along the +Z axis is +1 (ie, H' = (0, 0, 1) ), with a + * cone) along the +Z axis is +1 (ie, H' = (0, 0, 1)), with a * transformed radius of hrad/vrad. * * @@ -48,18 +48,18 @@ * finding two unit vectors A and B mutually perpendicular, and * perp. to H. * - * X' = S(R( X - V )) + * X' = S(R(X - V)) * * where R(X) rotates H to the +Z axis, and S(X) scales vrad' to 1 and * |H'| to 1. * - * where R(X) = ( A/(|A|) ) - * ( B/(|B|) ) . X - * ( H/(|H|) ) + * where R(X) = (A/(|A|)) + * (B/(|B|)) . X + * (H/(|H|)) * - * and S(X) = ( 1/|A| 0 0 ) - * ( 0 1/|B| 0 ) . X - * ( 0 0 1/|H| ) + * and S(X) = (1/|A| 0 0) + * (0 1/|B| 0) . X + * (0 0 1/|H|) * * To find the intersection of a line with the surface of the cylinder, * consider the parametric line L: @@ -71,7 +71,7 @@ * * L' : { P'(n) | P' + t(n) . D' } * - * W = invR( invS( W' ) ) + V + * W = invR(invS(W')) + V * * Where W' = k D' + P'. * @@ -123,19 +123,19 @@ * correspond to the roots of the quadratic. The quadratic formula * yields values for "t" * - * t = [ -b +/- sqrt( b** - 4 * a * c ) ] / ( 2 * a ) + * t = [ -b +/- sqrt(b** - 4 * a * c) ] / (2 * a) * * This parameter "t" can be substituted into the formulas for either * L' or L, because affine transformations preserve distances along * lines. * - * Now, D' = S( R( D ) ) - * and P' = S( R( P - V ) ) + * Now, D' = S(R(D)) + * and P' = S(R(P - V)) * * Substituting, * - * W = V + invR( invS[ k *( S( R( D ) ) ) + S( R( P - V ) ) ] ) - * = V + invR( ( k * R( D ) ) + R( P - V ) ) + * W = V + invR(invS[ k *(S(R(D))) + S(R(P - V)) ]) + * = V + invR((k * R(D)) + R(P - V)) * = V + k * D + P - V * = k * D + P * @@ -148,7 +148,7 @@ * NORMALS. Given the point W on the surface of the cylinder, what is * the vector normal to the tangent plane at that point? * - * Map W onto the unit cylinder, ie: W' = S( R( W - V ) ). + * Map W onto the unit cylinder, ie: W' = S(R(W - V)). * * Plane on unit cylinder at W' has a normal vector N' of the same * value as W' in x and y, with z set to zero, ie, (Wx', Wy', 0) @@ -156,10 +156,10 @@ * The plane transforms back to the tangent plane at W, and this new * plane (on the original cylinder) has a normal vector of N, viz: * - * N = inverse[ transpose(invR o invS) ] ( N' ) - * = inverse[ transpose(invS) o transpose(invR) ] ( N' ) - * = inverse[ inverse(S) o R ] ( N' ) - * = invR o S ( N' ) + * N = inverse[ transpose(invR o invS) ] (N') + * = inverse[ transpose(invS) o transpose(invR) ] (N') + * = inverse[ inverse(S) o R ] (N') + * = invR o S (N') * * Note that the normal vector produced above will not have unit length. * @@ -193,22 +193,23 @@ struct part_specific { - struct rt_part_internal part_int; - mat_t part_SoR; /* Scale(Rot(vect)) */ - mat_t part_invRoS; /* invRot(Scale(vect)) */ - fastf_t part_vrad_prime; - fastf_t part_hrad_prime; + struct rt_part_internal part_int; + mat_t part_SoR; /* Scale(Rot(vect)) */ + mat_t part_invRoS; /* invRot(Scale(vect)) */ + fastf_t part_vrad_prime; + fastf_t part_hrad_prime; /* For the "equivalent cone" */ - fastf_t part_v_hdist; /* dist of base plate on unit cone */ - fastf_t part_h_hdist; - fastf_t part_v_erad; /* radius of equiv. particle */ - fastf_t part_h_erad; + fastf_t part_v_hdist; /* dist of base plate on unit cone */ + fastf_t part_h_hdist; + fastf_t part_v_erad; /* radius of equiv. particle */ + fastf_t part_h_erad; }; + /* hit_surfno flags for which end was hit */ -#define RT_PARTICLE_SURF_VSPHERE 1 -#define RT_PARTICLE_SURF_BODY 2 -#define RT_PARTICLE_SURF_HSPHERE 3 +#define RT_PARTICLE_SURF_VSPHERE 1 +#define RT_PARTICLE_SURF_BODY 2 +#define RT_PARTICLE_SURF_HSPHERE 3 const struct bu_structparse rt_part_parse[] = { { "%f", 3, "V", bu_offsetof(struct rt_part_internal, part_V[X]), BU_STRUCTPARSE_FUNC_NULL }, @@ -220,52 +221,52 @@ /** - * R T _ P A R T _ P R E P + * R T _ P A R T _ P R E P * - * Given a pointer to a GED database record, and a transformation matrix, - * determine if this is a valid particle, and if so, precompute various - * terms of the formula. + * Given a pointer to a GED database record, and a transformation matrix, + * determine if this is a valid particle, and if so, precompute various + * terms of the formula. * - * Returns - - * 0 particle is OK - * !0 Error in description + * Returns - + * 0 particle is OK + * !0 Error in description * - * Implicit return - - * A struct part_specific is created, and it's address is stored in - * stp->st_specific for use by part_shot(). + * Implicit return - + * A struct part_specific is created, and it's address is stored in + * stp->st_specific for use by part_shot(). */ int rt_part_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { register struct part_specific *part; - struct rt_part_internal *pip; - vect_t Hunit; - vect_t a, b; - mat_t R, Rinv; - mat_t S; - vect_t max, min; - vect_t tip; - fastf_t inv_hlen; - fastf_t hlen; - fastf_t hlen_sq; - fastf_t r_diff; - fastf_t r_diff_sq; - fastf_t sin_theta; - fastf_t cos_theta; + struct rt_part_internal *pip; + vect_t Hunit; + vect_t a, b; + mat_t R, Rinv; + mat_t S; + vect_t max, min; + vect_t tip; + fastf_t inv_hlen; + fastf_t hlen; + fastf_t hlen_sq; + fastf_t r_diff; + fastf_t r_diff_sq; + fastf_t sin_theta; + fastf_t cos_theta; - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); pip = (struct rt_part_internal *)ip->idb_ptr; RT_PART_CK_MAGIC(pip); - BU_GETSTRUCT( part, part_specific ); + BU_GETSTRUCT(part, part_specific); stp->st_specific = (genptr_t)part; part->part_int = *pip; /* struct copy */ pip = &part->part_int; - if ( pip->part_type == RT_PARTICLE_TYPE_SPHERE ) { + if (pip->part_type == RT_PARTICLE_TYPE_SPHERE) { /* XXX Ought to hand off to rt_sph_prep() here */ /* Compute bounding sphere and RPP */ - VMOVE( stp->st_center, pip->part_V ); + VMOVE(stp->st_center, pip->part_V); stp->st_aradius = stp->st_bradius = pip->part_vrad; stp->st_min[X] = pip->part_V[X] - pip->part_vrad; stp->st_max[X] = pip->part_V[X] + pip->part_vrad; @@ -277,33 +278,33 @@ } /* Compute some essential terms */ - hlen_sq = MAGSQ(pip->part_H ); - if ( hlen_sq <= SMALL ) { + hlen_sq = MAGSQ(pip->part_H); + if (hlen_sq <= SMALL) { bu_log("part(%s): 0-length H vector\n", stp->st_dp->d_namep); return 1; /* BAD */ } hlen = sqrt(hlen_sq); inv_hlen = 1/hlen; - VSCALE( Hunit, pip->part_H, inv_hlen ); - bn_vec_ortho( a, Hunit ); - VCROSS( b, Hunit, a ); + VSCALE(Hunit, pip->part_H, inv_hlen); + bn_vec_ortho(a, Hunit); + VCROSS(b, Hunit, a); /* - * Compute parameters for the "equivalent cone" + * Compute parameters for the "equivalent cone" */ /* Calculate changes in terms of the "unit particle" */ - if ( pip->part_vrad >= pip->part_hrad ) { + if (pip->part_vrad >= pip->part_hrad) { /* V end is larger, H end is smaller */ r_diff = (pip->part_vrad - pip->part_hrad) * inv_hlen; r_diff_sq = r_diff * r_diff; - if ( r_diff_sq > 1 ) { + if (r_diff_sq > 1) { /* No "equivalent cone" is possible, theta=90deg */ sin_theta = 1; cos_theta = 0; } else { - sin_theta = sqrt( 1 - r_diff_sq ); - cos_theta = fabs( r_diff ); + sin_theta = sqrt(1 - r_diff_sq); + cos_theta = fabs(r_diff); } part->part_v_erad = pip->part_vrad / sin_theta; @@ -316,13 +317,13 @@ /* H end is larger, V end is smaller */ r_diff = (pip->part_hrad - pip->part_vrad) * inv_hlen; r_diff_sq = r_diff * r_diff; - if ( r_diff_sq > 1 ) { + if (r_diff_sq > 1) { /* No "equivalent cone" is possible, theta=90deg */ sin_theta = 1; cos_theta = 0; } else { - sin_theta = sqrt( 1 - r_diff_sq ); - cos_theta = fabs( r_diff ); + sin_theta = sqrt(1 - r_diff_sq); + cos_theta = fabs(r_diff); } part->part_v_erad = pip->part_vrad / sin_theta; @@ -333,29 +334,29 @@ part->part_h_hdist = 1 - cos_theta * pip->part_hrad * inv_hlen; } /* Thanks to matrix S, vrad_prime is always 1 */ -/*#define VRAD_PRIME 1 */ +/*#define VRAD_PRIME 1 */ /*#define HRAD_PRIME (part->part_int.part_hrad / part->part_int.part_vrad) */ part->part_vrad_prime = 1; part->part_hrad_prime = part->part_h_erad / part->part_v_erad; /* Compute R and Rinv */ - MAT_IDN( R ); - VMOVE( &R[0], a ); /* has unit length */ - VMOVE( &R[4], b ); /* has unit length */ - VMOVE( &R[8], Hunit ); - bn_mat_trn( Rinv, R ); + MAT_IDN(R); + VMOVE(&R[0], a); /* has unit length */ + VMOVE(&R[4], b); /* has unit length */ + VMOVE(&R[8], Hunit); + bn_mat_trn(Rinv, R); /* Compute scale matrix S, where |A| = |B| = equiv_Vradius */ - MAT_IDN( S ); + MAT_IDN(S); S[ 0] = 1.0 / part->part_v_erad; S[ 5] = S[0]; S[10] = inv_hlen; - bn_mat_mul( part->part_SoR, S, R ); - bn_mat_mul( part->part_invRoS, Rinv, S ); + bn_mat_mul(part->part_SoR, S, R); + bn_mat_mul(part->part_invRoS, Rinv, S); /* RPP and bounding sphere */ - VJOIN1( stp->st_center, pip->part_V, 0.5, pip->part_H ); + VJOIN1(stp->st_center, pip->part_V, 0.5, pip->part_H); stp->st_aradius = stp->st_bradius = pip->part_vrad; @@ -366,32 +367,33 @@ stp->st_min[Z] = pip->part_V[Z] - pip->part_vrad; stp->st_max[Z] = pip->part_V[Z] + pip->part_vrad; - VADD2( tip, pip->part_V, pip->part_H ); + VADD2(tip, pip->part_V, pip->part_H); min[X] = tip[X] - pip->part_hrad; max[X] = tip[X] + pip->part_hrad; min[Y] = tip[Y] - pip->part_hrad; max[Y] = tip[Y] + pip->part_hrad; min[Z] = tip[Z] - pip->part_hrad; max[Z] = tip[Z] + pip->part_hrad; - VMINMAX( stp->st_min, stp->st_max, min ); - VMINMAX( stp->st_min, stp->st_max, max ); + VMINMAX(stp->st_min, stp->st_max, min); + VMINMAX(stp->st_min, stp->st_max, max); /* Determine bounding sphere from the RPP */ { - register fastf_t f; - vect_t work; - VSUB2SCALE( work, stp->st_max, stp->st_min, 0.5 ); /* radius */ + register fastf_t f; + vect_t work; + VSUB2SCALE(work, stp->st_max, stp->st_min, 0.5); /* radius */ f = work[X]; - if ( work[Y] > f ) f = work[Y]; - if ( work[Z] > f ) f = work[Z]; + if (work[Y] > f) f = work[Y]; + if (work[Z] > f) f = work[Z]; stp->st_aradius = f; stp->st_bradius = MAGNITUDE(work); } return(0); /* OK */ } + /** - * R T _ P A R T _ P R I N T + * R T _ P A R T _ P R I N T */ void rt_part_print(register const struct soltab *stp) @@ -399,41 +401,42 @@ register const struct part_specific *part = (struct part_specific *)stp->st_specific; - VPRINT("part_V", part->part_int.part_V ); - VPRINT("part_H", part->part_int.part_H ); - bu_log("part_vrad=%g\n", part->part_int.part_vrad ); - bu_log("part_hrad=%g\n", part->part_int.part_hrad ); + VPRINT("part_V", part->part_int.part_V); + VPRINT("part_H", part->part_int.part_H); + bu_log("part_vrad=%g\n", part->part_int.part_vrad); + bu_log("part_hrad=%g\n", part->part_int.part_hrad); - switch ( part->part_int.part_type ) { + switch (part->part_int.part_type) { case RT_PARTICLE_TYPE_SPHERE: bu_log("part_type = SPHERE\n"); break; case RT_PARTICLE_TYPE_CYLINDER: bu_log("part_type = CYLINDER\n"); - bn_mat_print("part_SoR", part->part_SoR ); - bn_mat_print("part_invRoS", part->part_invRoS ); + bn_mat_print("part_SoR", part->part_SoR); + bn_mat_print("part_invRoS", part->part_invRoS); break; case RT_PARTICLE_TYPE_CONE: bu_log("part_type = CONE\n"); - bn_mat_print("part_SoR", part->part_SoR ); - bn_mat_print("part_invRoS", part->part_invRoS ); + bn_mat_print("part_SoR", part->part_SoR); + bn_mat_print("part_invRoS", part->part_invRoS); break; default: - bu_log("part_type = %d ???\n", part->part_int.part_type ); + bu_log("part_type = %d ???\n", part->part_int.part_type); break; } } + /** - * R T _ P A R T _ S H O T + * R T _ P A R T _ S H O T * - * Intersect a ray with a part. - * If an intersection occurs, a struct seg will be acquired - * and filled in. + * Intersect a ray with a part. + * If an intersection occurs, a struct seg will be acquired + * and filled in. * - * Returns - - * 0 MISS - * >0 HIT + * Returns - + * 0 MISS + * >0 HIT */ int rt_part_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) @@ -441,35 +444,35 @@ register struct part_specific *part = (struct part_specific *)stp->st_specific; register struct seg *segp; - vect_t dprime; /* D' */ - point_t pprime; /* P' */ - point_t xlated; /* translated ray start point */ - fastf_t t1, t2; /* distance constants of solution */ - fastf_t f; + vect_t dprime; /* D' */ + point_t pprime; /* P' */ + point_t xlated; /* translated ray start point */ + fastf_t t1, t2; /* distance constants of solution */ + fastf_t f; struct hit hits[4]; /* 4 potential hit points */ register struct hit *hitp = &hits[0]; - int check_v, check_h; + int check_v, check_h; - if ( part->part_int.part_type == RT_PARTICLE_TYPE_SPHERE ) { - vect_t ov; /* ray orgin to center (V - P) */ - fastf_t vrad_sq; - fastf_t magsq_ov; /* length squared of ov */ - fastf_t b; /* second term of quadratic eqn */ - fastf_t root; /* root of radical */ + if (part->part_int.part_type == RT_PARTICLE_TYPE_SPHERE) { + vect_t ov; /* ray orgin to center (V - P) */ + fastf_t vrad_sq; + fastf_t magsq_ov; /* length squared of ov */ + fastf_t b; /* second term of quadratic eqn */ + fastf_t root; /* root of radical */ - VSUB2( ov, part->part_int.part_V, rp->r_pt ); - b = VDOT( rp->r_dir, ov ); + VSUB2(ov, part->part_int.part_V, rp->r_pt); + b = VDOT(rp->r_dir, ov); magsq_ov = MAGSQ(ov); - if ( magsq_ov >= (vrad_sq = part->part_int.part_vrad * - part->part_int.part_vrad) ) { + if (magsq_ov >= (vrad_sq = part->part_int.part_vrad * + part->part_int.part_vrad)) { /* ray origin is outside of sphere */ - if ( b < 0 ) { + if (b < 0) { /* ray direction is away from sphere */ return(0); /* No hit */ } root = b*b - magsq_ov + vrad_sq; - if ( root <= 0 ) { + if (root <= 0) { /* no real roots */ return(0); /* No hit */ } @@ -488,16 +491,16 @@ segp->seg_out.hit_magic = RT_HIT_MAGIC; segp->seg_out.hit_dist = b + root; segp->seg_out.hit_surfno = RT_PARTICLE_SURF_VSPHERE; - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); return(2); /* HIT */ } /* Transform ray to coordinate system of unit cone at origin */ - MAT4X3VEC( dprime, part->part_SoR, rp->r_dir ); - VSUB2( xlated, rp->r_pt, part->part_int.part_V ); - MAT4X3VEC( pprime, part->part_SoR, xlated ); + MAT4X3VEC(dprime, part->part_SoR, rp->r_dir); + VSUB2(xlated, rp->r_pt, part->part_int.part_V); + MAT4X3VEC(pprime, part->part_SoR, xlated); - if ( NEAR_ZERO(dprime[X], SMALL) && NEAR_ZERO(dprime[Y], SMALL) ) { + if (NEAR_ZERO(dprime[X], SMALL) && NEAR_ZERO(dprime[Y], SMALL)) { check_v = check_h = 1; goto check_hemispheres; } @@ -505,24 +508,24 @@ /* Find roots of the equation, using forumla for quadratic */ /* Note that vrad' = 1 and hrad' = hrad/vrad */ - if ( part->part_int.part_type == RT_PARTICLE_TYPE_CYLINDER ) { + if (part->part_int.part_type == RT_PARTICLE_TYPE_CYLINDER) { /* Cylinder case, hrad == vrad, m = 0 */ - fastf_t a, b, c; - fastf_t root; /* root of radical */ + fastf_t a, b, c; + fastf_t root; /* root of radical */ a = dprime[X]*dprime[X] + dprime[Y]*dprime[Y]; b = dprime[X]*pprime[X] + dprime[Y]*pprime[Y]; c = pprime[X]*pprime[X] + pprime[Y]*pprime[Y] - 1; - if ( (root = b*b - a * c) <= 0 ) + if ((root = b*b - a * c) <= 0) goto check_hemispheres; root = sqrt(root); t1 = (root-b) / a; t2 = -(root+b) / a; } else { /* Cone case */ - fastf_t a, b, c; - fastf_t root; /* root of radical */ - fastf_t m, msq; + fastf_t a, b, c; + fastf_t root; /* root of radical */ + fastf_t m, msq; m = part->part_hrad_prime - part->part_vrad_prime; @@ -539,7 +542,7 @@ 2 * m * pprime[Z] - 1; /* was: ... -2m * vrad' * Pz' - vrad'**2 */ - if ( (root = b*b - a * c) <= 0 ) + if ((root = b*b - a * c) <= 0) goto check_hemispheres; root = sqrt(root); @@ -548,14 +551,14 @@ } /* - * t1 and t2 are potential solutions to intersection with side. - * Find hit' point, see if Z values fall in range. + * t1 and t2 are potential solutions to intersection with side. + * Find hit' point, see if Z values fall in range. */ - if ( (f = pprime[Z] + t1 * dprime[Z]) >= part->part_v_hdist ) { + if ((f = pprime[Z] + t1 * dprime[Z]) >= part->part_v_hdist) { check_h = 1; /* may also hit off end */ - if ( f <= part->part_h_hdist ) { + if (f <= part->part_h_hdist) { hitp->hit_magic = RT_HIT_MAGIC; - /** VJOIN1( hitp->hit_vpriv, pprime, t1, dprime ); **/ + /** VJOIN1(hitp->hit_vpriv, pprime, t1, dprime); **/ hitp->hit_vpriv[X] = pprime[X] + t1 * dprime[X]; hitp->hit_vpriv[Y] = pprime[Y] + t1 * dprime[Y]; hitp->hit_vpriv[Z] = f; @@ -567,11 +570,11 @@ check_v = 1; } - if ( (f = pprime[Z] + t2 * dprime[Z]) >= part->part_v_hdist ) { + if ((f = pprime[Z] + t2 * dprime[Z]) >= part->part_v_hdist) { check_h = 1; /* may also hit off end */ - if ( f <= part->part_h_hdist ) { + if (f <= part->part_h_hdist) { hitp->hit_magic = RT_HIT_MAGIC; - /** VJOIN1( hitp->hit_vpriv, pprime, t2, dprime ); **/ + /** VJOIN1(hitp->hit_vpriv, pprime, t2, dprime); **/ hitp->hit_vpriv[X] = pprime[X] + t2 * dprime[X]; hitp->hit_vpriv[Y] = pprime[Y] + t2 * dprime[Y]; hitp->hit_vpriv[Z] = f; @@ -584,31 +587,31 @@ } /* - * Check for hitting the end hemispheres. + * Check for hitting the end hemispheres. */ check_hemispheres: - if ( check_v ) { - vect_t ov; /* ray orgin to center (V - P) */ - fastf_t rad_sq; - fastf_t magsq_ov; /* length squared of ov */ - fastf_t b; - fastf_t root; /* root of radical */ + if (check_v) { + vect_t ov; /* ray orgin to center (V - P) */ + fastf_t rad_sq; + fastf_t magsq_ov; /* length squared of ov */ + fastf_t b; + fastf_t root; /* root of radical */ /* - * First, consider a hit on V hemisphere. + * First, consider a hit on V hemisphere. */ - VSUB2( ov, part->part_int.part_V, rp->r_pt ); - b = VDOT( rp->r_dir, ov ); + VSUB2(ov, part->part_int.part_V, rp->r_pt); + b = VDOT(rp->r_dir, ov); magsq_ov = MAGSQ(ov); - if ( magsq_ov >= (rad_sq = part->part_int.part_vrad * - part->part_int.part_vrad) ) { + if (magsq_ov >= (rad_sq = part->part_int.part_vrad * + part->part_int.part_vrad)) { /* ray origin is outside of sphere */ - if ( b < 0 ) { + if (b < 0) { /* ray direction is away from sphere */ goto do_check_h; } root = b*b - magsq_ov + rad_sq; - if ( root <= 0 ) { + if (root <= 0) { /* no real roots */ goto do_check_h; } @@ -618,14 +621,14 @@ root = sqrt(root); t1 = b - root; /* see if hit'[Z] is below V end of cylinder */ - if ( pprime[Z] + t1 * dprime[Z] <= part->part_v_hdist ) { + if (pprime[Z] + t1 * dprime[Z] <= part->part_v_hdist) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = t1; hitp->hit_surfno = RT_PARTICLE_SURF_VSPHERE; hitp++; } t2 = b + root; - if ( pprime[Z] + t2 * dprime[Z] <= part->part_v_hdist ) { + if (pprime[Z] + t2 * dprime[Z] <= part->part_v_hdist) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = t2; hitp->hit_surfno = RT_PARTICLE_SURF_VSPHERE; @@ -634,29 +637,29 @@ } do_check_h: - if ( check_h ) { - vect_t ov; /* ray orgin to center (V - P) */ - fastf_t rad_sq; - fastf_t magsq_ov; /* length squared of ov */ - fastf_t b; /* second term of quadratic eqn */ - fastf_t root; /* root of radical */ + if (check_h) { + vect_t ov; /* ray orgin to center (V - P) */ + fastf_t rad_sq; + fastf_t magsq_ov; /* length squared of ov */ + fastf_t b; /* second term of quadratic eqn */ + fastf_t root; /* root of radical */ /* - * Next, consider a hit on H hemisphere + * Next, consider a hit on H hemisphere */ - VADD2( ov, part->part_int.part_V, part->part_int.part_H ); - VSUB2( ov, ov, rp->r_pt ); - b = VDOT( rp->r_dir, ov ); + VADD2(ov, part->part_int.part_V, part->part_int.part_H); + VSUB2(ov, ov, rp->r_pt); + b = VDOT(rp->r_dir, ov); magsq_ov = MAGSQ(ov); - if ( magsq_ov >= (rad_sq = part->part_int.part_hrad * - part->part_int.part_hrad) ) { + if (magsq_ov >= (rad_sq = part->part_int.part_hrad * + part->part_int.part_hrad)) { /* ray origin is outside of sphere */ - if ( b < 0 ) { + if (b < 0) { /* ray direction is away from sphere */ goto out; } root = b*b - magsq_ov + rad_sq; - if ( root <= 0 ) { + if (root <= 0) { /* no real roots */ goto out; } @@ -666,14 +669,14 @@ root = sqrt(root); t1 = b - root; /* see if hit'[Z] is above H end of cylinder */ - if ( pprime[Z] + t1 * dprime[Z] >= part->part_h_hdist ) { + if (pprime[Z] + t1 * dprime[Z] >= part->part_h_hdist) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = t1; hitp->hit_surfno = RT_PARTICLE_SURF_HSPHERE; hitp++; } t2 = b + root; - if ( pprime[Z] + t2 * dprime[Z] >= part->part_h_hdist ) { + if (pprime[Z] + t2 * dprime[Z] >= part->part_h_hdist) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = t2; hitp->hit_surfno = RT_PARTICLE_SURF_HSPHERE; @@ -681,30 +684,30 @@ } } out: - if ( hitp == &hits[0] ) + if (hitp == &hits[0]) return(0); /* MISS */ - if ( hitp == &hits[1] ) { + if (hitp == &hits[1]) { /* Only one hit, make it a 0-thickness segment */ hits[1] = hits[0]; /* struct copy */ hitp++; - } else if ( hitp > &hits[2] ) { + } else if (hitp > &hits[2]) { /* - * More than two intersections found. - * This can happen when a ray grazes down along a tangent - * line; the intersection interval from the hemisphere - * may not quite join up with the interval from the cone. - * Since particles are convex, all we need to do is to - * return the maximum extent of the ray. - * Do this by sorting the intersections, - * and using the minimum and maximum values. + * More than two intersections found. + * This can happen when a ray grazes down along a tangent + * line; the intersection interval from the hemisphere + * may not quite join up with the interval from the cone. + * Since particles are convex, all we need to do is to + * return the maximum extent of the ray. + * Do this by sorting the intersections, + * and using the minimum and maximum values. */ - rt_hitsort( hits, hitp - &hits[0] ); + rt_hitsort(hits, hitp - &hits[0]); /* [0] is minimum, make [1] be maximum (hitp is +1 off end) */ hits[1] = hitp[-1]; /* struct copy */ } - if ( hits[0].hit_dist < hits[1].hit_dist ) { + if (hits[0].hit_dist < hits[1].hit_dist) { /* entry is [0], exit is [1] */ register struct seg *segp; @@ -712,7 +715,7 @@ segp->seg_stp = stp; segp->seg_in = hits[0]; /* struct copy */ segp->seg_out = hits[1]; /* struct copy */ - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); } else { /* entry is [1], exit is [0] */ register struct seg *segp; @@ -721,17 +724,18 @@ segp->seg_stp = stp; segp->seg_in = hits[1]; /* struct copy */ segp->seg_out = hits[0]; /* struct copy */ - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); } return(2); /* HIT */ } + #define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; /** - * R T _ P A R T _ V S H O T + * R T _ P A R T _ V S H O T * - * Vectorized version. + * Vectorized version. */ void rt_part_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) @@ -741,13 +745,14 @@ /* Number of ray/object pairs */ { - rt_vstub( stp, rp, segp, n, ap ); + rt_vstub(stp, rp, segp, n, ap); } + /** - * R T _ P A R T _ N O R M + * R T _ P A R T _ N O R M * - * Given ONE ray distance, return the normal and entry/exit point. + * Given ONE ray distance, return the normal and entry/exit point. */ void rt_part_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) @@ -755,28 +760,28 @@ register struct part_specific *part = (struct part_specific *)stp->st_specific; - VJOIN1( hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir ); - switch ( hitp->hit_surfno ) { + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); + switch (hitp->hit_surfno) { case RT_PARTICLE_SURF_VSPHERE: - VSUB2( hitp->hit_normal, hitp->hit_point, part->part_int.part_V ); - VUNITIZE( hitp->hit_normal ); + VSUB2(hitp->hit_normal, hitp->hit_point, part->part_int.part_V); + VUNITIZE(hitp->hit_normal); break; case RT_PARTICLE_SURF_HSPHERE: - VSUB3( hitp->hit_normal, hitp->hit_point, - part->part_int.part_V, part->part_int.part_H ); - VUNITIZE( hitp->hit_normal ); + VSUB3(hitp->hit_normal, hitp->hit_point, + part->part_int.part_V, part->part_int.part_H); + VUNITIZE(hitp->hit_normal); break; case RT_PARTICLE_SURF_BODY: /* compute it */ - if ( part->part_int.part_type == RT_PARTICLE_TYPE_CYLINDER ) { + if (part->part_int.part_type == RT_PARTICLE_TYPE_CYLINDER) { /* The X' and Y' components of hit' are N' */ hitp->hit_vpriv[Z] = 0; - MAT4X3VEC( hitp->hit_normal, part->part_invRoS, - hitp->hit_vpriv ); - VUNITIZE( hitp->hit_normal ); + MAT4X3VEC(hitp->hit_normal, part->part_invRoS, + hitp->hit_vpriv); + VUNITIZE(hitp->hit_normal); } else { /* The cone case */ - fastf_t s, m; + fastf_t s, m; vect_t unorm; /* vpriv[Z] ranges from 0 to 1 (roughly) */ /* Rescale X' and Y' into unit circle */ @@ -786,77 +791,79 @@ unorm[Y] = hitp->hit_vpriv[Y] * s; /* Z' is constant, from slope of cylinder wall*/ unorm[Z] = -m / sqrt(m*m+1); - MAT4X3VEC( hitp->hit_normal, part->part_invRoS, unorm ); - VUNITIZE( hitp->hit_normal ); + MAT4X3VEC(hitp->hit_normal, part->part_invRoS, unorm); + VUNITIZE(hitp->hit_normal); } break; } } + /** - * R T _ P A R T _ C U R V E + * R T _ P A R T _ C U R V E * - * Return the curvature of the particle. - * There are two cases: hitting a hemisphere, and hitting the cylinder. + * Return the curvature of the particle. + * There are two cases: hitting a hemisphere, and hitting the cylinder. */ void rt_part_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { register struct part_specific *part = (struct part_specific *)stp->st_specific; - point_t hit_local; /* hit_point, with V as origin */ - point_t hit_unit; /* hit_poit in unit coords, +Z along H */ + point_t hit_local; /* hit_point, with V as origin */ + point_t hit_unit; /* hit_poit in unit coords, +Z along H */ - switch ( hitp->hit_surfno ) { + switch (hitp->hit_surfno) { case RT_PARTICLE_SURF_VSPHERE: - bn_vec_ortho( cvp->crv_pdir, hitp->hit_normal ); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = -part->part_int.part_vrad; break; case RT_PARTICLE_SURF_HSPHERE: - bn_vec_ortho( cvp->crv_pdir, hitp->hit_normal ); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = -part->part_int.part_hrad; break; case RT_PARTICLE_SURF_BODY: /* Curvature in only one direction, around H */ - VCROSS( cvp->crv_pdir, hitp->hit_normal, part->part_int.part_H ); - VUNITIZE( cvp->crv_pdir ); + VCROSS(cvp->crv_pdir, hitp->hit_normal, part->part_int.part_H); + VUNITIZE(cvp->crv_pdir); /* Interpolate radius between vrad and hrad */ - VSUB2( hit_local, hitp->hit_point, part->part_int.part_V ); - MAT4X3VEC( hit_unit, part->part_SoR, hit_local ); + VSUB2(hit_local, hitp->hit_point, part->part_int.part_V); + MAT4X3VEC(hit_unit, part->part_SoR, hit_local); /* hit_unit[Z] ranges from 0 at V to 1 at H, interpolate */ cvp->crv_c1 = -( part->part_v_erad * hit_unit[Z] + - part->part_h_erad * (1 - hit_unit[Z]) ); + part->part_h_erad * (1 - hit_unit[Z])); cvp->crv_c2 = 0; break; } } + /** - * R T _ P A R T _ U V + * R T _ P A R T _ U V * - * For a hit on the surface of a particle, return the (u, v) coordinates - * of the hit point, 0 <= u, v <= 1. - * u = azimuth - * v = elevation along H + * For a hit on the surface of a particle, return the (u, v) coordinates + * of the hit point, 0 <= u, v <= 1. + * u = azimuth + * v = elevation along H * - * The 'u' coordinate wraps around the particle, once. - * The 'v' coordinate covers the 'height' of the particle, - * from V-r1 to (V+H)+r2. + * The 'u' coordinate wraps around the particle, once. + * The 'v' coordinate covers the 'height' of the particle, + * from V-r1 to (V+H)+r2. * - * hit_point has already been computed. + * hit_point has already been computed. */ void rt_part_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) { register const struct part_specific *part = (struct part_specific *)stp->st_specific; - point_t hit_local; /* hit_point, with V as origin */ - point_t hit_unit; /* hit_poit in unit coords, +Z along H */ + point_t hit_local; /* hit_point, with V as origin */ + point_t hit_unit; /* hit_poit in unit coords, +Z along H */ fastf_t hsize; - fastf_t hmag_inv; + fastf_t hmag_inv; fastf_t vrad_unit; - fastf_t r; + fastf_t r; fastf_t minrad; RT_PART_CK_MAGIC(&part->part_int.part_magic); @@ -866,14 +873,14 @@ part->part_h_erad*hmag_inv; /* Transform hit point into unit particle coords */ - VSUB2( hit_local, hitp->hit_point, part->part_int.part_V ); - MAT4X3VEC( hit_unit, part->part_SoR, hit_local ); + VSUB2(hit_local, hitp->hit_point, part->part_int.part_V); + MAT4X3VEC(hit_unit, part->part_SoR, hit_local); /* normalize 0..1 */ uvp->uv_v = (hit_unit[Z] + vrad_unit) / hsize; /* U is azimuth, atan() range: -pi to +pi */ - uvp->uv_u = bn_atan2( hit_unit[Y], hit_unit[X] ) * bn_inv2pi; - if ( uvp->uv_u < 0 ) + uvp->uv_u = bn_atan2(hit_unit[Y], hit_unit[X]) * bn_inv2pi; + if (uvp->uv_u < 0) uvp->uv_u += 1.0; /* approximation: beam_r / (solid_circumference = 2 * pi * radius) */ @@ -884,8 +891,9 @@ bn_inv2pi * r / minrad; } + /** - * R T _ P A R T _ F R E E + * R T _ P A R T _ F R E E */ void rt_part_free(register struct soltab *stp) @@ -893,12 +901,13 @@ register struct part_specific *part = (struct part_specific *)stp->st_specific; - bu_free( (char *)part, "part_specific" ); + bu_free((char *)part, "part_specific"); stp->st_specific = GENPTR_NULL; } + /** - * R T _ P A R T _ C L A S S + * R T _ P A R T _ C L A S S */ int rt_part_class(void) @@ -906,17 +915,18 @@ return(0); } + /** - * R T _ P A R T _ H E M I S P H E R E 8 + * R T _ P A R T _ H E M I S P H E R E 8 * - * Produce a crude approximation to a hemisphere, - * 8 points around the rim [0]..[7], - * 4 points around a midway latitude [8]..[11], and - * 1 point at the pole [12]. + * Produce a crude approximation to a hemisphere, + * 8 points around the rim [0]..[7], + * 4 points around a midway latitude [8]..[11], and + * 1 point at the pole [12]. * - * For the dome, connect up: - * 0 8 12 10 4 - * 2 9 12 11 6 + * For the dome, connect up: + * 0 8 12 10 4 + * 2 9 12 11 6 */ HIDDEN void rt_part_hemisphere(register point_t (*ov), register fastf_t *v, fastf_t *a, fastf_t *b, fastf_t *h) @@ -924,248 +934,252 @@ register float cos45 = 0.707107; /* This is the top of the dome */ - VADD2( ov[12], v, h ); + VADD2(ov[12], v, h); - VADD2( ov[0], v, a ); - VJOIN2( ov[1], v, cos45, a, cos45, b ); - VADD2( ov[2], v, b ); - VJOIN2( ov[3], v, -cos45, a, cos45, b ); - VSUB2( ov[4], v, a ); - VJOIN2( ov[5], v, -cos45, a, -cos45, b ); - VSUB2( ov[6], v, b ); - VJOIN2( ov[7], v, cos45, a, -cos45, b ); + VADD2(ov[0], v, a); + VJOIN2(ov[1], v, cos45, a, cos45, b); + VADD2(ov[2], v, b); + VJOIN2(ov[3], v, -cos45, a, cos45, b); + VSUB2(ov[4], v, a); + VJOIN2(ov[5], v, -cos45, a, -cos45, b); + VSUB2(ov[6], v, b); + VJOIN2(ov[7], v, cos45, a, -cos45, b); - VJOIN2( ov[8], v, cos45, a, cos45, h ); - VJOIN2( ov[10], v, -cos45, a, cos45, h ); + VJOIN2(ov[8], v, cos45, a, cos45, h); + VJOIN2(ov[10], v, -cos45, a, cos45, h); - VJOIN2( ov[9], v, cos45, b, cos45, h ); - VJOIN2( ov[11], v, -cos45, b, cos45, h ); + VJOIN2(ov[9], v, cos45, b, cos45, h); + VJOIN2(ov[11], v, -cos45, b, cos45, h); /* Obviously, this could be optimized quite a lot more */ } + /** - * R T _ P A R T _ P L O T + * R T _ P A R T _ P L O T */ int rt_part_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct rt_part_internal *pip; - point_t tail; - point_t sphere_rim[16]; - point_t vhemi[13]; - point_t hhemi[13]; - vect_t a, b, c; /* defines coord sys of part */ - vect_t as, bs, hs; /* scaled by radius */ - vect_t Hunit; - register int i; + struct rt_part_internal *pip; + point_t tail; + point_t sphere_rim[16]; + point_t vhemi[13]; + point_t hhemi[13]; + vect_t a, b, c; /* defines coord sys of part */ + vect_t as, bs, hs; /* scaled by radius */ + vect_t Hunit; + register int i; RT_CK_DB_INTERNAL(ip); pip = (struct rt_part_internal *)ip->idb_ptr; RT_PART_CK_MAGIC(pip); - if ( pip->part_type == RT_PARTICLE_TYPE_SPHERE ) { + if (pip->part_type == RT_PARTICLE_TYPE_SPHERE) { /* For the sphere, 3 rings of 16 points */ - VSET( a, pip->part_vrad, 0, 0 ); - VSET( b, 0, pip->part_vrad, 0 ); - VSET( c, 0, 0, pip->part_vrad ); + VSET(a, pip->part_vrad, 0, 0); + VSET(b, 0, pip->part_vrad, 0); + VSET(c, 0, 0, pip->part_vrad); - rt_ell_16pts( &sphere_rim[0][X], pip->part_V, a, b ); - RT_ADD_VLIST( vhead, sphere_rim[15], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, sphere_rim[i], BN_VLIST_LINE_DRAW ); + rt_ell_16pts(&sphere_rim[0][X], pip->part_V, a, b); + RT_ADD_VLIST(vhead, sphere_rim[15], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, sphere_rim[i], BN_VLIST_LINE_DRAW); } - rt_ell_16pts( &sphere_rim[0][X], pip->part_V, b, c ); - RT_ADD_VLIST( vhead, sphere_rim[15], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, sphere_rim[i], BN_VLIST_LINE_DRAW ); + rt_ell_16pts(&sphere_rim[0][X], pip->part_V, b, c); + RT_ADD_VLIST(vhead, sphere_rim[15], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, sphere_rim[i], BN_VLIST_LINE_DRAW); } - rt_ell_16pts( &sphere_rim[0][X], pip->part_V, a, c ); - RT_ADD_VLIST( vhead, sphere_rim[15], BN_VLIST_LINE_MOVE ); - for ( i=0; i<16; i++ ) { - RT_ADD_VLIST( vhead, sphere_rim[i], BN_VLIST_LINE_DRAW ); + rt_ell_16pts(&sphere_rim[0][X], pip->part_V, a, c); + RT_ADD_VLIST(vhead, sphere_rim[15], BN_VLIST_LINE_MOVE); + for (i=0; i<16; i++) { + RT_ADD_VLIST(vhead, sphere_rim[i], BN_VLIST_LINE_DRAW); } return(0); /* OK */ } - VMOVE( Hunit, pip->part_H ); - VUNITIZE( Hunit ); - bn_vec_perp( a, Hunit ); + VMOVE(Hunit, pip->part_H); + VUNITIZE(Hunit); + bn_vec_perp(a, Hunit); VUNITIZE(a); - VCROSS( b, Hunit, a ); + VCROSS(b, Hunit, a); VUNITIZE(b); - VSCALE( as, a, pip->part_vrad ); - VSCALE( bs, b, pip->part_vrad ); - VSCALE( hs, Hunit, -pip->part_vrad ); - rt_part_hemisphere( vhemi, pip->part_V, as, bs, hs ); + VSCALE(as, a, pip->part_vrad); + VSCALE(bs, b, pip->part_vrad); + VSCALE(hs, Hunit, -pip->part_vrad); + rt_part_hemisphere(vhemi, pip->part_V, as, bs, hs); - VADD2( tail, pip->part_V, pip->part_H ); - VSCALE( as, a, pip->part_hrad ); - VSCALE( bs, b, pip->part_hrad ); - VSCALE( hs, Hunit, pip->part_hrad ); - rt_part_hemisphere( hhemi, tail, as, bs, hs ); + VADD2(tail, pip->part_V, pip->part_H); + VSCALE(as, a, pip->part_hrad); + VSCALE(bs, b, pip->part_hrad); + VSCALE(hs, Hunit, pip->part_hrad); + rt_part_hemisphere(hhemi, tail, as, bs, hs); /* Draw V end hemisphere */ - RT_ADD_VLIST( vhead, vhemi[0], BN_VLIST_LINE_MOVE ); - for ( i=7; i >= 0; i-- ) { - RT_ADD_VLIST( vhead, vhemi[i], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, vhemi[0], BN_VLIST_LINE_MOVE); + for (i=7; i >= 0; i--) { + RT_ADD_VLIST(vhead, vhemi[i], BN_VLIST_LINE_DRAW); } - RT_ADD_VLIST( vhead, vhemi[8], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[12], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[10], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[4], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[2], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, vhemi[9], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[12], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[11], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[6], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, vhemi[8], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[12], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[10], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[4], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[2], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, vhemi[9], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[12], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[11], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[6], BN_VLIST_LINE_DRAW); /* Draw H end hemisphere */ - RT_ADD_VLIST( vhead, hhemi[0], BN_VLIST_LINE_MOVE ); - for ( i=7; i >= 0; i-- ) { - RT_ADD_VLIST( vhead, hhemi[i], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, hhemi[0], BN_VLIST_LINE_MOVE); + for (i=7; i >= 0; i--) { + RT_ADD_VLIST(vhead, hhemi[i], BN_VLIST_LINE_DRAW); } - RT_ADD_VLIST( vhead, hhemi[8], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[12], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[10], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[4], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[2], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, hhemi[9], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[12], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[11], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, hhemi[6], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, hhemi[8], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[12], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[10], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[4], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[2], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, hhemi[9], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[12], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[11], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, hhemi[6], BN_VLIST_LINE_DRAW); /* Draw 4 connecting lines */ - RT_ADD_VLIST( vhead, vhemi[0], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, hhemi[0], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[2], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, hhemi[2], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[4], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, hhemi[4], BN_VLIST_LINE_DRAW ); - RT_ADD_VLIST( vhead, vhemi[6], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, hhemi[6], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, vhemi[0], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, hhemi[0], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[2], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, hhemi[2], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[4], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, hhemi[4], BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, vhemi[6], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, hhemi[6], BN_VLIST_LINE_DRAW); return(0); } + struct part_state { - struct shell *s; - mat_t upper_invRinvS; - mat_t upper_invRoS; - mat_t lower_invRinvS; - mat_t lower_invRoS; - fastf_t theta_tol; + struct shell *s; + mat_t upper_invRinvS; + mat_t upper_invRoS; + mat_t lower_invRinvS; + mat_t lower_invRoS; + fastf_t theta_tol; }; + struct part_vert_strip { - int nverts_per_strip; - int nverts; - struct vertex **vp; - vect_t *norms; - int nfaces; - struct faceuse **fu; + int nverts_per_strip; + int nverts; + struct vertex **vp; + vect_t *norms; + int nfaces; + struct faceuse **fu; }; + /** - * R T _ P A R T _ T E S S + * R T _ P A R T _ T E S S * - * Based upon the tesselator for the ellipsoid. + * Based upon the tesselator for the ellipsoid. * - * Break the particle into three parts: - * Upper hemisphere 0..nsegs H North - * middle cylinder nsegs..nsegs+1 - * lower hemisphere nsegs+1..nstrips-1 V South + * Break the particle into three parts: + * Upper hemisphere 0..nsegs H North + * middle cylinder nsegs..nsegs+1 + * lower hemisphere nsegs+1..nstrips-1 V South */ int rt_part_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - struct rt_part_internal *pip; - mat_t R; - mat_t S; - mat_t invR; - mat_t invS; - vect_t zz; - vect_t hcenter; - struct part_state state; - register int i; - fastf_t radius; - int nsegs; - int nstrips; - struct part_vert_strip *strips; - int j; - struct vertex **vertp[5]; - int faceno; - int stripno; - int boff; /* base offset */ - int toff; /* top offset */ - int blim; /* base subscript limit */ - int tlim; /* top subscrpit limit */ - fastf_t rel; /* Absolutized relative tolerance */ + struct rt_part_internal *pip; + mat_t R; + mat_t S; + mat_t invR; + mat_t invS; + vect_t zz; + vect_t hcenter; + struct part_state state; + register int i; + fastf_t radius; + int nsegs; + int nstrips; + struct part_vert_strip *strips; + int j; + struct vertex **vertp[5]; + int faceno; + int stripno; + int boff; /* base offset */ + int toff; /* top offset */ + int blim; /* base subscript limit */ + int tlim; /* top subscrpit limit */ + fastf_t rel; /* Absolutized relative tolerance */ RT_CK_DB_INTERNAL(ip); pip = (struct rt_part_internal *)ip->idb_ptr; RT_PART_CK_MAGIC(pip); - if ( pip->part_type == RT_PARTICLE_TYPE_SPHERE ) + if (pip->part_type == RT_PARTICLE_TYPE_SPHERE) return(-1); /* For now, concentrate on the most important kind. */ - VADD2( hcenter, pip->part_V, pip->part_H ); + VADD2(hcenter, pip->part_V, pip->part_H); /* Compute R and Rinv matrices */ /* R is the same for both upper and lower hemispheres */ /* R is rotation from model coords to unit sphere */ /* For rotation of the particle, +H (model) becomes +Z (unit sph) */ - VSET( zz, 0, 0, 1 ); - bn_mat_fromto( R, pip->part_H, zz ); - bn_mat_trn( invR, R ); /* inv of rot mat is trn */ + VSET(zz, 0, 0, 1); + bn_mat_fromto(R, pip->part_H, zz); + bn_mat_trn(invR, R); /* inv of rot mat is trn */ /*** Upper (H) ***/ /* Compute S and invS matrices */ /* invS is just 1/diagonal elements */ - MAT_IDN( S ); + MAT_IDN(S); S[ 0] = S[ 5] = S[10] = 1/pip->part_hrad; - bn_mat_inv( invS, S ); + bn_mat_inv(invS, S); /* invRinvS, for converting points from unit sphere to model */ - bn_mat_mul( state.upper_invRinvS, invR, invS ); + bn_mat_mul(state.upper_invRinvS, invR, invS); /* invRoS, for converting normals from unit sphere to model */ - bn_mat_mul( state.upper_invRoS, invR, S ); + bn_mat_mul(state.upper_invRoS, invR, S); /*** Lower (V) ***/ /* Compute S and invS matrices */ /* invS is just 1/diagonal elements */ - MAT_IDN( S ); + MAT_IDN(S); S[ 0] = S[ 5] = S[10] = 1/pip->part_vrad; - bn_mat_inv( invS, S ); + bn_mat_inv(invS, S); /* invRinvS, for converting points from unit sphere to model */ - bn_mat_mul( state.lower_invRinvS, invR, invS ); + bn_mat_mul(state.lower_invRinvS, invR, invS); /* invRoS, for converting normals from unit sphere to model */ - bn_mat_mul( state.lower_invRoS, invR, S ); + bn_mat_mul(state.lower_invRoS, invR, S); /* Find the larger of two hemispheres */ radius = pip->part_vrad; - if ( pip->part_hrad > radius ) + if (pip->part_hrad > radius) radius = pip->part_hrad; /* - * Establish tolerances + * Establish tolerances */ - if ( ttol->rel <= 0.0 || ttol->rel >= 1.0 ) { + if (ttol->rel <= 0.0 || ttol->rel >= 1.0) { rel = 0.0; /* none */ } else { /* Convert rel to absolute by scaling by radius */ rel = ttol->rel * radius; } - if ( ttol->abs <= 0.0 ) { - if ( rel <= 0.0 ) { + if (ttol->abs <= 0.0) { + if (rel <= 0.0) { /* No tolerance given, use a default */ rel = 0.10 * radius; /* 10% */ } else { @@ -1173,41 +1187,40 @@ } } else { /* Absolute tolerance was given, pick smaller */ - if ( ttol->rel <= 0.0 || rel > ttol->abs ) - { + if (ttol->rel <= 0.0 || rel > ttol->abs) { rel = ttol->abs; - if ( rel > radius ) + if (rel > radius) rel = radius; } } /* - * Converte distance tolerance into a maximum permissible - * angle tolerance. 'radius' is largest radius. + * Converte distance tolerance into a maximum permissible + * angle tolerance. 'radius' is largest radius. */ - state.theta_tol = 2 * acos( 1.0 - rel / radius ); + state.theta_tol = 2 * acos(1.0 - rel / radius); /* To ensure normal tolerance, remain below this angle */ - if ( ttol->norm > 0.0 && ttol->norm < state.theta_tol ) { + if (ttol->norm > 0.0 && ttol->norm < state.theta_tol) { state.theta_tol = ttol->norm; } - *r = nmg_mrsv( m ); /* Make region, empty shell, vertex */ + *r = nmg_mrsv(m); /* Make region, empty shell, vertex */ state.s = BU_LIST_FIRST(shell, &(*r)->s_hd); /* Find the number of segments to divide 90 degrees worth into */ nsegs = bn_halfpi / state.theta_tol + 0.999; - if ( nsegs < 2 ) nsegs = 2; + if (nsegs < 2) nsegs = 2; - /* Find total number of strips of vertices that will be needed. - * nsegs for each hemisphere, plus one equator each. - * The two equators will be stitched together to make the cylinder. - * Note that faces are listed in the the stripe ABOVE, ie, toward - * the poles. Thus, strips[0] will have 4 faces. + /* Find total number of strips of vertices that will be needed. + * nsegs for each hemisphere, plus one equator each. + * The two equators will be stitched together to make the cylinder. + * Note that faces are listed in the the stripe ABOVE, ie, toward + * the poles. Thus, strips[0] will have 4 faces. */ nstrips = 2 * nsegs + 2; - strips = (struct part_vert_strip *)bu_calloc( nstrips, - sizeof(struct part_vert_strip), "strips[]" ); + strips = (struct part_vert_strip *)bu_calloc(nstrips, + sizeof(struct part_vert_strip), "strips[]"); /* North pole (Upper hemisphere, H end) */ strips[0].nverts = 1; @@ -1226,7 +1239,7 @@ strips[nsegs+1].nverts_per_strip = nsegs; strips[nsegs+1].nfaces = 0; - for ( i=1; i<nsegs; i++ ) { + for (i=1; i<nsegs; i++) { strips[i].nverts_per_strip = strips[nstrips-1-i].nverts_per_strip = i; strips[i].nverts = @@ -1235,50 +1248,50 @@ strips[nstrips-1-i].nfaces = (2 * i + 1)*4; } /* All strips have vertices and normals */ - for ( i=0; i<nstrips; i++ ) { - strips[i].vp = (struct vertex **)bu_calloc( strips[i].nverts, - sizeof(struct vertex *), "strip vertex[]" ); - strips[i].norms = (vect_t *)bu_calloc( strips[i].nverts, - sizeof( vect_t ), "strip normals[]" ); + for (i=0; i<nstrips; i++) { + strips[i].vp = (struct vertex **)bu_calloc(strips[i].nverts, + sizeof(struct vertex *), "strip vertex[]"); + strips[i].norms = (vect_t *)bu_calloc(strips[i].nverts, + sizeof(vect_t), "strip normals[]"); } /* All strips have faces, except for the one (marked) equator */ - for ( i=0; i < nstrips; i++ ) { - if ( strips[i].nfaces <= 0 ) { + for (i=0; i < nstrips; i++) { + if (strips[i].nfaces <= 0) { strips[i].fu = (struct faceuse **)NULL; continue; } - strips[i].fu = (struct faceuse **)bu_calloc( strips[i].nfaces, - sizeof(struct faceuse *), "strip faceuse[]" ); + strips[i].fu = (struct faceuse **)bu_calloc(strips[i].nfaces, + sizeof(struct faceuse *), "strip faceuse[]"); } /* First, build the triangular mesh topology */ /* Do the top. "toff" in i-1 is UP, towards +B */ - for ( i = 1; i <= nsegs; i++ ) { + for (i = 1; i <= nsegs; i++) { faceno = 0; tlim = strips[i-1].nverts; blim = strips[i].nverts; - for ( stripno=0; stripno<4; stripno++ ) { + for (stripno=0; stripno<4; stripno++) { toff = stripno * strips[i-1].nverts_per_strip; boff = stripno * strips[i].nverts_per_strip; /* Connect this quarter strip */ - for ( j = 0; j < strips[i].nverts_per_strip; j++ ) { + for (j = 0; j < strips[i].nverts_per_strip; j++) { /* "Right-side-up" triangle */ vertp[0] = &(strips[i].vp[j+boff]); vertp[1] = &(strips[i].vp[(j+1+boff)%blim]); vertp[2] = &(strips[i-1].vp[(j+toff)%tlim]); - if ( (strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 3 )) == 0 ) { + if ((strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 3)) == 0) { bu_log("rt_part_tess() nmg_cmface failure\n"); goto fail; } - if ( j+1 >= strips[i].nverts_per_strip ) break; + if (j+1 >= strips[i].nverts_per_strip) break; /* Follow with interior "Up-side-down" triangle */ vertp[0] = &(strips[i].vp[(j+1+boff)%blim]); vertp[1] = &(strips[i-1].vp[(j+1+toff)%tlim]); vertp[2] = &(strips[i-1].vp[(j+toff)%tlim]); - if ( (strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 3 )) == 0 ) { + if ((strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 3)) == 0) { bu_log("rt_part_tess() nmg_cmface failure\n"); goto fail; } @@ -1294,14 +1307,14 @@ blim = strips[i].nverts; { /* Connect this whole strip */ - for ( j = 0; j < strips[i].nverts; j++ ) { + for (j = 0; j < strips[i].nverts; j++) { /* "Right-side-up" rectangle */ vertp[3] = &(strips[i].vp[(j)%blim]); vertp[2] = &(strips[i-1].vp[(j)%tlim]); vertp[1] = &(strips[i-1].vp[(j+1)%tlim]); vertp[0] = &(strips[i].vp[(j+1)%blim]); - if ( (strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 4 )) == 0 ) { + if ((strips[i-1].fu[faceno++] = nmg_cmface(state.s, vertp, 4)) == 0) { bu_log("rt_part_tess() nmg_cmface failure\n"); goto fail; } @@ -1310,32 +1323,32 @@ } /* Do the bottom. Everything is upside down. "toff" in i+1 is DOWN */ - for ( i = nsegs+1; i < nstrips; i++ ) { + for (i = nsegs+1; i < nstrips; i++) { faceno = 0; tlim = strips[i+1].nverts; blim = strips[i].nverts; - for ( stripno=0; stripno<4; stripno++ ) { + for (stripno=0; stripno<4; stripno++) { toff = stripno * strips[i+1].nverts_per_strip; boff = stripno * strips[i].nverts_per_strip; /* Connect this quarter strip */ - for ( j = 0; j < strips[i].nverts_per_strip; j++ ) { + for (j = 0; j < strips[i].nverts_per_strip; j++) { /* "Right-side-up" triangle */ vertp[0] = &(strips[i].vp[j+boff]); vertp[1] = &(strips[i+1].vp[(j+toff)%tlim]); vertp[2] = &(strips[i].vp[(j+1+boff)%blim]); - if ( (strips[i+1].fu[faceno++] = nmg_cmface(state.s, vertp, 3 )) == 0 ) { + if ((strips[i+1].fu[faceno++] = nmg_cmface(state.s, vertp, 3)) == 0) { bu_log("rt_part_tess() nmg_cmface failure\n"); goto fail; } - if ( j+1 >= strips[i].nverts_per_strip ) break; + if (j+1 >= strips[i].nverts_per_strip) break; /* Follow with interior "Up-side-down" triangle */ vertp[0] = &(strips[i].vp[(j+1+boff)%blim]); vertp[1] = &(strips[i+1].vp[(j+toff)%tlim]); vertp[2] = &(strips[i+1].vp[(j+1+toff)%tlim]); - if ( (strips[i+1].fu[faceno++] = nmg_cmface(state.s, vertp, 3 )) == 0 ) { + if ((strips[i+1].fu[faceno++] = nmg_cmface(state.s, vertp, 3)) == 0) { bu_log("rt_part_tess() nmg_cmface failure\n"); goto fail; } @@ -1343,197 +1356,195 @@ } } - /* Compute the geometry of each vertex. - * Start with the location in the unit sphere, and project back. - * i=0 is "straight up" along +H. + /* Compute the geometry of each vertex. + * Start with the location in the unit sphere, and project back. + * i=0 is "straight up" along +H. */ - for ( i=0; i < nstrips; i++ ) { - double alpha; /* decline down from B to A */ - double beta; /* angle around equator (azimuth) */ - fastf_t cos_alpha, sin_alpha; - fastf_t cos_beta, sin_beta; - point_t sphere_pt; - point_t model_pt; + for (i=0; i < nstrips; i++) { + double alpha; /* decline down from B to A */ + double beta; /* angle around equator (azimuth) */ + fastf_t cos_alpha, sin_alpha; + fastf_t cos_beta, sin_beta; + point_t sphere_pt; + point_t model_pt; /* Compensate for extra equator */ - if ( i <= nsegs ) + if (i <= nsegs) alpha = (((double)i) / (nstrips-1-1)); else alpha = (((double)i-1) / (nstrips-1-1)); cos_alpha = cos(alpha*bn_pi); sin_alpha = sin(alpha*bn_pi); - for ( j=0; j < strips[i].nverts; j++ ) { + for (j=0; j < strips[i].nverts; j++) { beta = ((double)j) / strips[i].nverts; cos_beta = cos(beta*bn_twopi); sin_beta = sin(beta*bn_twopi); - VSET( sphere_pt, - cos_beta * sin_alpha, - sin_beta * sin_alpha, - cos_alpha ); + VSET(sphere_pt, + cos_beta * sin_alpha, + sin_beta * sin_alpha, + cos_alpha); /* Convert from ideal sphere coordinates */ - if ( i <= nsegs ) { - MAT4X3PNT( model_pt, state.upper_invRinvS, sphere_pt ); - VADD2( model_pt, model_pt, hcenter ); + if (i <= nsegs) { + MAT4X3PNT(model_pt, state.upper_invRinvS, sphere_pt); + VADD2(model_pt, model_pt, hcenter); /* Convert sphere normal to ellipsoid normal */ - MAT4X3VEC( strips[i].norms[j], state.upper_invRoS, sphere_pt ); + MAT4X3VEC(strips[i].norms[j], state.upper_invRoS, sphere_pt); } else { - MAT4X3PNT( model_pt, state.lower_invRinvS, sphere_pt ); - VADD2( model_pt, model_pt, pip->part_V ); + MAT4X3PNT(model_pt, state.lower_invRinvS, sphere_pt); + VADD2(model_pt, model_pt, pip->part_V); /* Convert sphere normal to ellipsoid normal */ - MAT4X3VEC( strips[i].norms[j], state.lower_invRoS, sphere_pt ); + MAT4X3VEC(strips[i].norms[j], state.lower_invRoS, sphere_pt); } /* May not be unit length anymore */ - VUNITIZE( strips[i].norms[j] ); + VUNITIZE(strips[i].norms[j]); /* Associate vertex geometry */ - nmg_vertex_gv( strips[i].vp[j], model_pt ); + nmg_vertex_gv(strips[i].vp[j], model_pt); } } /* Associate face geometry. lower Equator has no faces */ - for ( i=0; i < nstrips; i++ ) { - for ( j=0; j < strips[i].nfaces; j++ ) { - if ( nmg_fu_planeeqn( strips[i].fu[j], tol ) < 0 ) + for (i=0; i < nstrips; i++) { + for (j=0; j < strips[i].nfaces; j++) { + if (nmg_fu_planeeqn(strips[i].fu[j], tol) < 0) goto fail; } } /* Associate normals with vertexuses */ - for ( i=0; i < nstrips; i++ ) - { - for ( j=0; j < strips[i].nverts; j++ ) - { + for (i=0; i < nstrips; i++) { + for (j=0; j < strips[i].nverts; j++) { struct faceuse *fu; struct vertexuse *vu; vect_t norm_opp; - NMG_CK_VERTEX( strips[i].vp[j] ); - VREVERSE( norm_opp, strips[i].norms[j] ) + NMG_CK_VERTEX(strips[i].vp[j]); + VREVERSE(norm_opp, strips[i].norms[j]) - for ( BU_LIST_FOR( vu, vertexuse, &strips[i].vp[j]->vu_hd ) ) - { - fu = nmg_find_fu_of_vu( vu ); - NMG_CK_FACEUSE( fu ); + for (BU_LIST_FOR(vu, vertexuse, &strips[i].vp[j]->vu_hd)) { + fu = nmg_find_fu_of_vu(vu); + NMG_CK_FACEUSE(fu); /* get correct direction of normals depending on * faceuse orientation */ - if ( fu->orientation == OT_SAME ) - nmg_vertexuse_nv( vu, strips[i].norms[j] ); - else if ( fu->orientation == OT_OPPOSITE ) - nmg_vertexuse_nv( vu, norm_opp ); + if (fu->orientation == OT_SAME) + nmg_vertexuse_nv(vu, strips[i].norms[j]); + else if (fu->orientation == OT_OPPOSITE) + nmg_vertexuse_nv(vu, norm_opp); } } } /* Compute "geometry" for region and shell */ - nmg_region_a( *r, tol ); + nmg_region_a(*r, tol); /* Release memory */ /* All strips have vertices and normals */ - for ( i=0; i<nstrips; i++ ) { - bu_free( (char *)strips[i].vp, "strip vertex[]" ); - bu_free( (char *)strips[i].norms, "strip norms[]" ); + for (i=0; i<nstrips; i++) { + bu_free((char *)strips[i].vp, "strip vertex[]"); + bu_free((char *)strips[i].norms, "strip norms[]"); } /* All strips have faces, except for equator */ - for ( i=0; i < nstrips; i++ ) { - if ( strips[i].fu == (struct faceuse **)0 ) continue; - bu_free( (char *)strips[i].fu, "strip faceuse[]" ); + for (i=0; i < nstrips; i++) { + if (strips[i].fu == (struct faceuse **)0) continue; + bu_free((char *)strips[i].fu, "strip faceuse[]"); } - bu_free( (char *)strips, "strips[]" ); + bu_free((char *)strips, "strips[]"); return(0); fail: /* Release memory */ /* All strips have vertices and normals */ - for ( i=0; i<nstrips; i++ ) { - bu_free( (char *)strips[i].vp, "strip vertex[]" ); - bu_free( (char *)strips[i].norms, "strip norms[]" ); + for (i=0; i<nstrips; i++) { + bu_free((char *)strips[i].vp, "strip vertex[]"); + bu_free((char *)strips[i].norms, "strip norms[]"); } /* All strips have faces, except for equator */ - for ( i=0; i < nstrips; i++ ) { - if ( strips[i].fu == (struct faceuse **)0 ) continue; - bu_free( (char *)strips[i].fu, "strip faceuse[]" ); + for (i=0; i < nstrips; i++) { + if (strips[i].fu == (struct faceuse **)0) continue; + bu_free((char *)strips[i].fu, "strip faceuse[]"); } - bu_free( (char *)s... [truncated message content] |
From: <br...@us...> - 2009-12-02 06:05:55
|
Revision: 36747 http://brlcad.svn.sourceforge.net/brlcad/?rev=36747&view=rev Author: brlcad Date: 2009-12-02 06:05:43 +0000 (Wed, 02 Dec 2009) Log Message: ----------- last chunk of primitives whooosh.. massive ws style indent comment consistency update. also includes some dead code elimination. should be no logic changes. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/rhc/rhc.c brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp brlcad/trunk/src/librt/primitives/rhc/rhc_mirror.c brlcad/trunk/src/librt/primitives/rpc/rpc.c brlcad/trunk/src/librt/primitives/rpc/rpc_brep.cpp brlcad/trunk/src/librt/primitives/rpc/rpc_mirror.c brlcad/trunk/src/librt/primitives/sketch/sketch.c brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp brlcad/trunk/src/librt/primitives/sph/sph.c brlcad/trunk/src/librt/primitives/sph/sph_brep.cpp brlcad/trunk/src/librt/primitives/submodel/submodel.c brlcad/trunk/src/librt/primitives/superell/superell.c brlcad/trunk/src/librt/primitives/superell/superell_mirror.c brlcad/trunk/src/librt/primitives/table.c brlcad/trunk/src/librt/primitives/tgc/tgc.c brlcad/trunk/src/librt/primitives/tgc/tgc_brep.cpp brlcad/trunk/src/librt/primitives/tgc/tgc_mirror.c brlcad/trunk/src/librt/primitives/tor/tor.c brlcad/trunk/src/librt/primitives/tor/tor_brep.cpp brlcad/trunk/src/librt/primitives/tor/tor_mirror.c brlcad/trunk/src/librt/primitives/vol/vol.c brlcad/trunk/src/librt/primitives/vol/vol_brep.cpp brlcad/trunk/src/librt/primitives/vol/vol_mirror.c brlcad/trunk/src/librt/primitives/xxx/xxx.c brlcad/trunk/src/librt/primitives/xxx/xxx.h Modified: brlcad/trunk/src/librt/primitives/rhc/rhc.c =================================================================== --- brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-02 03:21:03 UTC (rev 36746) +++ brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-02 06:05:43 UTC (rev 36747) @@ -41,15 +41,15 @@ * * The transformation from X to X' is accomplished by: * - * X' = S(R( X - V )) + * X' = S(R(X - V)) * - * where R(X) = ( H/(-|H|) ) - * ( R/( |R|) ) . X - * ( B/(-|B|) ) + * where R(X) = (H/(-|H|)) + * (R/(|R|)) . X + * (B/(-|B|)) * - * and S(X) = ( 1/|H| 0 0 ) - * ( 0 1/|R| 0 ) . X - * ( 0 0 1/|B| ) + * and S(X) = (1/|H| 0 0) + * (0 1/|R| 0) . X + * (0 0 1/|B|) * * To find the intersection of a line with the surface of the rhc, * consider the parametric line L: @@ -61,7 +61,7 @@ * * L' : { P'(n) | P' + t(n) . D' } * - * W = invR( invS( W' ) ) + V + * W = invR(invS(W')) + V * * Where W' = k D' + P'. * @@ -85,15 +85,15 @@ * * The quadratic formula yields k (which is constant): * - * k = [ -B +/- sqrt( B**2 - 4 * A * C )] / (2 * A) + * k = [ -B +/- sqrt(B**2 - 4 * A * C)] / (2 * A) * - * Now, D' = S( R( D ) ) - * and P' = S( R( P - V ) ) + * Now, D' = S(R(D)) + * and P' = S(R(P - V)) * * Substituting, * - * W = V + invR( invS[ k *( S( R( D ) ) ) + S( R( P - V ) ) ] ) - * = V + invR( ( k * R( D ) ) + R( P - V ) ) + * W = V + invR(invS[ k *(S(R(D))) + S(R(P - V)) ]) + * = V + invR((k * R(D)) + R(P - V)) * = V + k * D + P - V * = k * D + P * @@ -106,7 +106,7 @@ * NORMALS. Given the point W on the surface of the rhc, what is the * vector normal to the tangent plane at that point? * - * Map W onto the unit rhc, ie: W' = S( R( W - V ) ). + * Map W onto the unit rhc, ie: W' = S(R(W - V)). * * Plane on unit rhc at W' has a normal vector N' where * @@ -115,23 +115,23 @@ * The plane transforms back to the tangent plane at W, and this new * plane (on the original rhc) has a normal vector of N, viz: * - * N = inverse[ transpose( inverse[ S o R ] ) ] ( N' ) + * N = inverse[ transpose(inverse[ S o R ]) ] (N') * * because if H is perpendicular to plane Q, and matrix M maps from * Q to Q', then inverse[ transpose(M) ] (H) is perpendicular to Q'. * Here, H and Q are in "prime space" with the unit sphere. * [Somehow, the notation here is backwards]. - * So, the mapping matrix M = inverse( S o R ), because + * So, the mapping matrix M = inverse(S o R), because * S o R maps from normal space to the unit sphere. * - * N = inverse[ transpose( inverse[ S o R ] ) ] ( N' ) - * = inverse[ transpose(invR o invS) ] ( N' ) - * = inverse[ transpose(invS) o transpose(invR) ] ( N' ) - * = inverse[ inverse(S) o R ] ( N' ) - * = invR o S ( N' ) + * N = inverse[ transpose(inverse[ S o R ]) ] (N') + * = inverse[ transpose(invR o invS) ] (N') + * = inverse[ transpose(invS) o transpose(invR) ] (N') + * = inverse[ inverse(S) o R ] (N') + * = invR o S (N') * - * because inverse(R) = transpose(R), so R = transpose( invR ), - * and S = transpose( S ). + * because inverse(R) = transpose(R), so R = transpose(invR), + * and S = transpose(S). * * Note that the normal vector produced above will not have unit * length. @@ -141,7 +141,7 @@ * If Dz' == 0, line L' is parallel to the top plate, so there is no * hit on the top plate. Otherwise, rays intersect the top plate * with k = (0 - Pz')/Dz'. The solution is within the top plate - * IFF -1 <= Wx' <= 0 and -1 <= Wy' <= 1. + * IFF -1 <= Wx' <= 0 and -1 <= Wy' <= 1. * * If Dx' == 0, line L' is parallel to the end plates, so there is no * hit on the end plates. Otherwise, rays intersect the front plate @@ -150,14 +150,14 @@ * * The solution W' is within an end plate IFF * - * (Wz' + c + 1)**2 - (Wy'**2 * (2*c + 1) >= c**2 and Wz' <= 1.0 + * (Wz' + c + 1)**2 - (Wy'**2 * (2*c + 1) >= c**2 and Wz' <= 1.0 * * The normal for a hit on the top plate is -Bunit. * The normal for a hit on the front plate is -Hunit, and * the normal for a hit on the back plate is +Hunit. * * Authors - - * Michael J. Markowski + * Michael J. Markowski * */ /** @} */ @@ -178,18 +178,19 @@ struct rhc_specific { - point_t rhc_V; /* vector to rhc origin */ - vect_t rhc_Bunit; /* unit B vector */ - vect_t rhc_Hunit; /* unit H vector */ - vect_t rhc_Runit; /* unit vector, B x H */ - mat_t rhc_SoR; /* Scale(Rot(vect)) */ - mat_t rhc_invRoS; /* invRot(Scale(vect)) */ - fastf_t rhc_b; /* |B| */ - fastf_t rhc_c; /* c */ - fastf_t rhc_cprime; /* c / |B| */ - fastf_t rhc_rsq; /* r * r */ + point_t rhc_V; /* vector to rhc origin */ + vect_t rhc_Bunit; /* unit B vector */ + vect_t rhc_Hunit; /* unit H vector */ + vect_t rhc_Runit; /* unit vector, B x H */ + mat_t rhc_SoR; /* Scale(Rot(vect)) */ + mat_t rhc_invRoS; /* invRot(Scale(vect)) */ + fastf_t rhc_b; /* |B| */ + fastf_t rhc_c; /* c */ + fastf_t rhc_cprime; /* c / |B| */ + fastf_t rhc_rsq; /* r * r */ }; + const struct bu_structparse rt_rhc_parse[] = { { "%f", 3, "V", bu_offsetof(struct rt_rhc_internal, rhc_V[X]), BU_STRUCTPARSE_FUNC_NULL }, { "%f", 3, "H", bu_offsetof(struct rt_rhc_internal, rhc_H[X]), BU_STRUCTPARSE_FUNC_NULL }, @@ -199,33 +200,34 @@ { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } }; + /** - * R T _ R H C _ P R E P + * R T _ R H C _ P R E P * - * Given a pointer to a GED database record, and a transformation matrix, - * determine if this is a valid RHC, and if so, precompute various - * terms of the formula. + * Given a pointer to a GED database record, and a transformation matrix, + * determine if this is a valid RHC, and if so, precompute various + * terms of the formula. * - * Returns - - * 0 RHC is OK - * !0 Error in description + * Returns - + * 0 RHC is OK + * !0 Error in description * - * Implicit return - - * A struct rhc_specific is created, and it's address is stored in - * stp->st_specific for use by rhc_shot(). + * Implicit return - + * A struct rhc_specific is created, and it's address is stored in + * stp->st_specific for use by rhc_shot(). */ int rt_rhc_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { - struct rt_rhc_internal *xip; - register struct rhc_specific *rhc; - fastf_t magsq_b, magsq_h, magsq_r; - fastf_t mag_b, mag_h, mag_r; - fastf_t f; - mat_t R; - mat_t Rinv; - mat_t S; - vect_t invsq; /* [ 1/(|H|**2), 1/(|R|**2), 1/(|B|**2) ] */ + struct rt_rhc_internal *xip; + register struct rhc_specific *rhc; + fastf_t magsq_b, magsq_h, magsq_r; + fastf_t mag_b, mag_h, mag_r; + fastf_t f; + mat_t R; + mat_t Rinv; + mat_t S; + vect_t invsq; /* [ 1/(|H|**2), 1/(|R|**2), 1/(|B|**2) ] */ RT_CK_DB_INTERNAL(ip); RT_CK_RTI(rtip); @@ -233,68 +235,68 @@ RT_RHC_CK_MAGIC(xip); /* compute |B| |H| */ - mag_b = sqrt( magsq_b = MAGSQ( xip->rhc_B ) ); - mag_h = sqrt( magsq_h = MAGSQ( xip->rhc_H ) ); + mag_b = sqrt(magsq_b = MAGSQ(xip->rhc_B)); + mag_h = sqrt(magsq_h = MAGSQ(xip->rhc_H)); mag_r = xip->rhc_r; magsq_r = mag_r * mag_r; /* Check for |H| > 0, |B| > 0, |R| > 0 */ - if ( NEAR_ZERO(mag_h, RT_LEN_TOL) || NEAR_ZERO(mag_b, RT_LEN_TOL) - || NEAR_ZERO(mag_r, RT_LEN_TOL) ) { + if (NEAR_ZERO(mag_h, RT_LEN_TOL) || NEAR_ZERO(mag_b, RT_LEN_TOL) + || NEAR_ZERO(mag_r, RT_LEN_TOL)) { return(1); /* BAD, too small */ } /* Check for B.H == 0 */ - f = VDOT( xip->rhc_B, xip->rhc_H ) / (mag_b * mag_h); - if ( ! NEAR_ZERO(f, RT_DOT_TOL) ) { + f = VDOT(xip->rhc_B, xip->rhc_H) / (mag_b * mag_h); + if (! NEAR_ZERO(f, RT_DOT_TOL)) { return(1); /* BAD */ } /* - * RHC is ok + * RHC is ok */ stp->st_id = ID_RHC; /* set soltab ID */ stp->st_meth = &rt_functab[ID_RHC]; - BU_GETSTRUCT( rhc, rhc_specific ); + BU_GETSTRUCT(rhc, rhc_specific); stp->st_specific = (genptr_t)rhc; rhc->rhc_b = mag_b; rhc->rhc_rsq = magsq_r; rhc->rhc_c = xip->rhc_c; /* make unit vectors in B, H, and BxH directions */ - VMOVE( rhc->rhc_Hunit, xip->rhc_H ); - VUNITIZE( rhc->rhc_Hunit ); - VMOVE( rhc->rhc_Bunit, xip->rhc_B ); - VUNITIZE( rhc->rhc_Bunit ); - VCROSS( rhc->rhc_Runit, rhc->rhc_Bunit, rhc->rhc_Hunit ); + VMOVE(rhc->rhc_Hunit, xip->rhc_H); + VUNITIZE(rhc->rhc_Hunit); + VMOVE(rhc->rhc_Bunit, xip->rhc_B); + VUNITIZE(rhc->rhc_Bunit); + VCROSS(rhc->rhc_Runit, rhc->rhc_Bunit, rhc->rhc_Hunit); - VMOVE( rhc->rhc_V, xip->rhc_V ); + VMOVE(rhc->rhc_V, xip->rhc_V); rhc->rhc_cprime = xip->rhc_c / mag_b; /* Compute R and Rinv matrices */ - MAT_IDN( R ); - VREVERSE( &R[0], rhc->rhc_Hunit ); - VMOVE( &R[4], rhc->rhc_Runit ); - VREVERSE( &R[8], rhc->rhc_Bunit ); - bn_mat_trn( Rinv, R ); /* inv of rot mat is trn */ + MAT_IDN(R); + VREVERSE(&R[0], rhc->rhc_Hunit); + VMOVE(&R[4], rhc->rhc_Runit); + VREVERSE(&R[8], rhc->rhc_Bunit); + bn_mat_trn(Rinv, R); /* inv of rot mat is trn */ /* Compute S */ - VSET( invsq, 1.0/magsq_h, 1.0/magsq_r, 1.0/magsq_b ); - MAT_IDN( S ); - S[ 0] = sqrt( invsq[0] ); - S[ 5] = sqrt( invsq[1] ); - S[10] = sqrt( invsq[2] ); + VSET(invsq, 1.0/magsq_h, 1.0/magsq_r, 1.0/magsq_b); + MAT_IDN(S); + S[ 0] = sqrt(invsq[0]); + S[ 5] = sqrt(invsq[1]); + S[10] = sqrt(invsq[2]); /* Compute SoR and invRoS */ - bn_mat_mul( rhc->rhc_SoR, S, R ); - bn_mat_mul( rhc->rhc_invRoS, Rinv, S ); + bn_mat_mul(rhc->rhc_SoR, S, R); + bn_mat_mul(rhc->rhc_invRoS, Rinv, S); /* Compute bounding sphere and RPP */ /* bounding sphere center */ - VJOIN2( stp->st_center, rhc->rhc_V, - mag_h / 2.0, rhc->rhc_Hunit, - mag_b / 2.0, rhc->rhc_Bunit ); + VJOIN2(stp->st_center, rhc->rhc_V, + mag_h / 2.0, rhc->rhc_Hunit, + mag_b / 2.0, rhc->rhc_Bunit); /* bounding radius */ stp->st_bradius = 0.5 * sqrt(magsq_h + 4.0*magsq_r + magsq_b); /* approximate bounding radius */ @@ -311,8 +313,9 @@ return(0); /* OK */ } + /** - * R T _ R H C _ P R I N T + * R T _ R H C _ P R I N T */ void rt_rhc_print(register const struct soltab *stp) @@ -324,63 +327,64 @@ VPRINT("Bunit", rhc->rhc_Bunit); VPRINT("Hunit", rhc->rhc_Hunit); VPRINT("Runit", rhc->rhc_Runit); - bn_mat_print("S o R", rhc->rhc_SoR ); - bn_mat_print("invR o S", rhc->rhc_invRoS ); + bn_mat_print("S o R", rhc->rhc_SoR); + bn_mat_print("invR o S", rhc->rhc_invRoS); } + /* hit_surfno is set to one of these */ -#define RHC_NORM_BODY (1) /* compute normal */ -#define RHC_NORM_TOP (2) /* copy rhc_N */ -#define RHC_NORM_FRT (3) /* copy reverse rhc_N */ -#define RHC_NORM_BACK (4) +#define RHC_NORM_BODY (1) /* compute normal */ +#define RHC_NORM_TOP (2) /* copy rhc_N */ +#define RHC_NORM_FRT (3) /* copy reverse rhc_N */ +#define RHC_NORM_BACK (4) /** - * R T _ R H C _ S H O T + * R T _ R H C _ S H O T * - * Intersect a ray with a rhc. - * If an intersection occurs, a struct seg will be acquired - * and filled in. + * Intersect a ray with a rhc. + * If an intersection occurs, a struct seg will be acquired + * and filled in. * - * Returns - - * 0 MISS - * >0 HIT + * Returns - + * 0 MISS + * >0 HIT */ int rt_rhc_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) { register struct rhc_specific *rhc = (struct rhc_specific *)stp->st_specific; - vect_t dprime; /* D' */ - vect_t pprime; /* P' */ - fastf_t k1, k2; /* distance constants of solution */ - fastf_t x; - vect_t xlated; /* translated vector */ + vect_t dprime; /* D' */ + vect_t pprime; /* P' */ + fastf_t k1, k2; /* distance constants of solution */ + fastf_t x; + vect_t xlated; /* translated vector */ struct hit hits[3]; /* 2 potential hit points */ register struct hit *hitp; /* pointer to hit point */ hitp = &hits[0]; /* out, Mat, vect */ - MAT4X3VEC( dprime, rhc->rhc_SoR, rp->r_dir ); - VSUB2( xlated, rp->r_pt, rhc->rhc_V ); - MAT4X3VEC( pprime, rhc->rhc_SoR, xlated ); + MAT4X3VEC(dprime, rhc->rhc_SoR, rp->r_dir); + VSUB2(xlated, rp->r_pt, rhc->rhc_V); + MAT4X3VEC(pprime, rhc->rhc_SoR, xlated); x = rhc->rhc_cprime; - if ( NEAR_ZERO(dprime[Y], SMALL) && NEAR_ZERO(dprime[Z], SMALL) ) + if (NEAR_ZERO(dprime[Y], SMALL) && NEAR_ZERO(dprime[Z], SMALL)) goto check_plates; /* Find roots of the equation, using formula for quadratic */ { - fastf_t a, b, c; /* coeffs of polynomial */ - fastf_t disc; /* disc of radical */ + fastf_t a, b, c; /* coeffs of polynomial */ + fastf_t disc; /* disc of radical */ a = dprime[Z] * dprime[Z] - dprime[Y] * dprime[Y] * (1 + 2*x); b = 2*((pprime[Z] + x + 1) * dprime[Z] - (2*x + 1) * dprime[Y] * pprime[Y]); c = (pprime[Z]+x+1)*(pprime[Z]+x+1) - (2*x + 1) * pprime[Y] * pprime[Y] - x*x; - if ( !NEAR_ZERO(a, RT_PCOEF_TOL) ) { + if (!NEAR_ZERO(a, RT_PCOEF_TOL)) { disc = b*b - 4 * a * c; if (disc <= 0) goto check_plates; @@ -390,37 +394,37 @@ k2 = (-b - disc) / (2.0 * a); /* - * k1 and k2 are potential solutions to intersection with side. - * See if they fall in range. + * k1 and k2 are potential solutions to intersection with side. + * See if they fall in range. */ - VJOIN1( hitp->hit_vpriv, pprime, k1, dprime ); /* hit' */ - if ( hitp->hit_vpriv[X] >= -1.0 - && hitp->hit_vpriv[X] <= 0.0 - && hitp->hit_vpriv[Z] >= -1.0 - && hitp->hit_vpriv[Z] <= 0.0 ) { + VJOIN1(hitp->hit_vpriv, pprime, k1, dprime); /* hit' */ + if (hitp->hit_vpriv[X] >= -1.0 + && hitp->hit_vpriv[X] <= 0.0 + && hitp->hit_vpriv[Z] >= -1.0 + && hitp->hit_vpriv[Z] <= 0.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k1; hitp->hit_surfno = RHC_NORM_BODY; /* compute N */ hitp++; } - VJOIN1( hitp->hit_vpriv, pprime, k2, dprime ); /* hit' */ - if ( hitp->hit_vpriv[X] >= -1.0 - && hitp->hit_vpriv[X] <= 0.0 - && hitp->hit_vpriv[Z] >= -1.0 - && hitp->hit_vpriv[Z] <= 0.0 ) { + VJOIN1(hitp->hit_vpriv, pprime, k2, dprime); /* hit' */ + if (hitp->hit_vpriv[X] >= -1.0 + && hitp->hit_vpriv[X] <= 0.0 + && hitp->hit_vpriv[Z] >= -1.0 + && hitp->hit_vpriv[Z] <= 0.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k2; hitp->hit_surfno = RHC_NORM_BODY; /* compute N */ hitp++; } - } else if ( !NEAR_ZERO(b, RT_PCOEF_TOL) ) { + } else if (!NEAR_ZERO(b, RT_PCOEF_TOL)) { k1 = -c/b; - VJOIN1( hitp->hit_vpriv, pprime, k1, dprime ); /* hit' */ - if ( hitp->hit_vpriv[X] >= -1.0 - && hitp->hit_vpriv[X] <= 0.0 - && hitp->hit_vpriv[Z] >= -1.0 - && hitp->hit_vpriv[Z] <= 0.0 ) { + VJOIN1(hitp->hit_vpriv, pprime, k1, dprime); /* hit' */ + if (hitp->hit_vpriv[X] >= -1.0 + && hitp->hit_vpriv[X] <= 0.0 + && hitp->hit_vpriv[Z] >= -1.0 + && hitp->hit_vpriv[Z] <= 0.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k1; hitp->hit_surfno = RHC_NORM_BODY; /* compute N */ @@ -435,31 +439,31 @@ */ check_plates: /* check front and back plates */ - if ( hitp < &hits[2] && !NEAR_ZERO(dprime[X], SMALL) ) { + if (hitp < &hits[2] && !NEAR_ZERO(dprime[X], SMALL)) { /* 0 or 1 hits so far, this is worthwhile */ k1 = -pprime[X] / dprime[X]; /* front plate */ k2 = (-1.0 - pprime[X]) / dprime[X]; /* back plate */ - VJOIN1( hitp->hit_vpriv, pprime, k1, dprime ); /* hit' */ - if ( (hitp->hit_vpriv[Z] + x + 1.0) - * (hitp->hit_vpriv[Z] + x + 1.0) - - hitp->hit_vpriv[Y] * hitp->hit_vpriv[Y] - * (1.0 + 2*x) >= x*x - && hitp->hit_vpriv[Z] >= -1.0 - && hitp->hit_vpriv[Z] <= 0.0) { + VJOIN1(hitp->hit_vpriv, pprime, k1, dprime); /* hit' */ + if ((hitp->hit_vpriv[Z] + x + 1.0) + * (hitp->hit_vpriv[Z] + x + 1.0) + - hitp->hit_vpriv[Y] * hitp->hit_vpriv[Y] + * (1.0 + 2*x) >= x*x + && hitp->hit_vpriv[Z] >= -1.0 + && hitp->hit_vpriv[Z] <= 0.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k1; hitp->hit_surfno = RHC_NORM_FRT; /* -H */ hitp++; } - VJOIN1( hitp->hit_vpriv, pprime, k2, dprime ); /* hit' */ - if ( (hitp->hit_vpriv[Z] + x + 1.0) - * (hitp->hit_vpriv[Z] + x + 1.0) - - hitp->hit_vpriv[Y] * hitp->hit_vpriv[Y] - * (1.0 + 2*x) >= x*x - && hitp->hit_vpriv[Z] >= -1.0 - && hitp->hit_vpriv[Z] <= 0.0) { + VJOIN1(hitp->hit_vpriv, pprime, k2, dprime); /* hit' */ + if ((hitp->hit_vpriv[Z] + x + 1.0) + * (hitp->hit_vpriv[Z] + x + 1.0) + - hitp->hit_vpriv[Y] * hitp->hit_vpriv[Y] + * (1.0 + 2*x) >= x*x + && hitp->hit_vpriv[Z] >= -1.0 + && hitp->hit_vpriv[Z] <= 0.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k2; hitp->hit_surfno = RHC_NORM_BACK; /* +H */ @@ -468,14 +472,14 @@ } /* check top plate */ - if ( hitp == &hits[1] && !NEAR_ZERO(dprime[Z], SMALL) ) { + if (hitp == &hits[1] && !NEAR_ZERO(dprime[Z], SMALL)) { /* 0 or 1 hits so far, this is worthwhile */ k1 = -pprime[Z] / dprime[Z]; /* top plate */ - VJOIN1( hitp->hit_vpriv, pprime, k1, dprime ); /* hit' */ - if ( hitp->hit_vpriv[X] >= -1.0 && hitp->hit_vpriv[X] <= 0.0 - && hitp->hit_vpriv[Y] >= -1.0 - && hitp->hit_vpriv[Y] <= 1.0 ) { + VJOIN1(hitp->hit_vpriv, pprime, k1, dprime); /* hit' */ + if (hitp->hit_vpriv[X] >= -1.0 && hitp->hit_vpriv[X] <= 0.0 + && hitp->hit_vpriv[Y] >= -1.0 + && hitp->hit_vpriv[Y] <= 1.0) { hitp->hit_magic = RT_HIT_MAGIC; hitp->hit_dist = k1; hitp->hit_surfno = RHC_NORM_TOP; /* -B */ @@ -483,10 +487,10 @@ } } - if ( hitp != &hits[2] ) + if (hitp != &hits[2]) return(0); /* MISS */ - if ( hits[0].hit_dist < hits[1].hit_dist ) { + if (hits[0].hit_dist < hits[1].hit_dist) { /* entry is [0], exit is [1] */ register struct seg *segp; @@ -494,7 +498,7 @@ segp->seg_stp = stp; segp->seg_in = hits[0]; /* struct copy */ segp->seg_out = hits[1]; /* struct copy */ - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); } else { /* entry is [1], exit is [0] */ register struct seg *segp; @@ -503,17 +507,18 @@ segp->seg_stp = stp; segp->seg_in = hits[1]; /* struct copy */ segp->seg_out = hits[0]; /* struct copy */ - BU_LIST_INSERT( &(seghead->l), &(segp->l) ); + BU_LIST_INSERT(&(seghead->l), &(segp->l)); } return(2); /* HIT */ } + #define RT_RHC_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL /** - * R T _ R H C _ V S H O T + * R T _ R H C _ V S H O T * - * Vectorized version. + * Vectorized version. */ void rt_rhc_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) @@ -523,41 +528,42 @@ /* Number of ray/object pairs */ { - rt_vstub( stp, rp, segp, n, ap ); + rt_vstub(stp, rp, segp, n, ap); } + /** - * R T _ R H C _ N O R M + * R T _ R H C _ N O R M * - * Given ONE ray distance, return the normal and entry/exit point. + * Given ONE ray distance, return the normal and entry/exit point. */ void rt_rhc_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) { - fastf_t c; - vect_t can_normal; /* normal to canonical rhc */ + fastf_t c; + vect_t can_normal; /* normal to canonical rhc */ register struct rhc_specific *rhc = (struct rhc_specific *)stp->st_specific; - VJOIN1( hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir ); - switch ( hitp->hit_surfno ) { + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); + switch (hitp->hit_surfno) { case RHC_NORM_BODY: c = rhc->rhc_cprime; - VSET( can_normal, - 0.0, - hitp->hit_vpriv[Y] * (1.0 + 2.0*c), - -hitp->hit_vpriv[Z] - c - 1.0 ); - MAT4X3VEC( hitp->hit_normal, rhc->rhc_invRoS, can_normal ); - VUNITIZE( hitp->hit_normal ); + VSET(can_normal, + 0.0, + hitp->hit_vpriv[Y] * (1.0 + 2.0*c), + -hitp->hit_vpriv[Z] - c - 1.0); + MAT4X3VEC(hitp->hit_normal, rhc->rhc_invRoS, can_normal); + VUNITIZE(hitp->hit_normal); break; case RHC_NORM_TOP: - VREVERSE( hitp->hit_normal, rhc->rhc_Bunit ); + VREVERSE(hitp->hit_normal, rhc->rhc_Bunit); break; case RHC_NORM_FRT: - VREVERSE( hitp->hit_normal, rhc->rhc_Hunit ); + VREVERSE(hitp->hit_normal, rhc->rhc_Hunit); break; case RHC_NORM_BACK: - VMOVE( hitp->hit_normal, rhc->rhc_Hunit ); + VMOVE(hitp->hit_normal, rhc->rhc_Hunit); break; default: bu_log("rt_rhc_norm: surfno=%d bad\n", hitp->hit_surfno); @@ -565,23 +571,24 @@ } } + /** - * R T _ R H C _ C U R V E + * R T _ R H C _ C U R V E * - * Return the curvature of the rhc. + * Return the curvature of the rhc. */ void rt_rhc_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { - fastf_t b, c, rsq, y; - fastf_t zp1_sq, zp2; /* 1st deriv sqr, 2nd deriv */ + fastf_t b, c, rsq, y; + fastf_t zp1_sq, zp2; /* 1st deriv sqr, 2nd deriv */ register struct rhc_specific *rhc = (struct rhc_specific *)stp->st_specific; - switch ( hitp->hit_surfno ) { + switch (hitp->hit_surfno) { case RHC_NORM_BODY: /* most nearly flat direction */ - VMOVE( cvp->crv_pdir, rhc->rhc_Hunit ); + VMOVE(cvp->crv_pdir, rhc->rhc_Hunit); cvp->crv_c1 = 0; /* k = z'' / (1 + z'^2) ^ 3/2 */ b = rhc->rhc_b; @@ -591,25 +598,26 @@ zp1_sq = y * (b*b + 2*b*c) / rsq; zp1_sq *= zp1_sq / (c*c + y*y*(b*b + 2*b*c)/rsq); zp2 = c*c / (rsq*c*c + y*y*(b*b + 2*b*c)); - cvp->crv_c2 = zp2 / pow( (1 + zp1_sq), 1.5); + cvp->crv_c2 = zp2 / pow((1 + zp1_sq), 1.5); break; case RHC_NORM_BACK: case RHC_NORM_FRT: case RHC_NORM_TOP: /* any tangent direction */ - bn_vec_ortho( cvp->crv_pdir, hitp->hit_normal ); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; break; } } + /** - * R T _ R H C _ U V + * R T _ R H C _ U V * - * For a hit on the surface of an rhc, return the (u, v) coordinates - * of the hit point, 0 <= u, v <= 1. - * u = azimuth - * v = elevation + * For a hit on the surface of an rhc, return the (u, v) coordinates + * of the hit point, 0 <= u, v <= 1. + * u = azimuth + * v = elevation */ void rt_rhc_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) @@ -625,10 +633,10 @@ * hit_point is on surface; project back to unit rhc, * creating a vector from vertex to hit point. */ - VSUB2( work, hitp->hit_point, rhc->rhc_V ); - MAT4X3VEC( pprime, rhc->rhc_SoR, work ); + VSUB2(work, hitp->hit_point, rhc->rhc_V); + MAT4X3VEC(pprime, rhc->rhc_SoR, work); - switch ( hitp->hit_surfno ) { + switch (hitp->hit_surfno) { case RHC_NORM_BODY: /* Skin. x, y coordinates define rotation. radius = 1 */ len = sqrt(pprime[Y]*pprime[Y] + pprime[Z]*pprime[Z]); @@ -652,8 +660,9 @@ uvp->uv_du = uvp->uv_dv = 0; } + /** - * R T _ R H C _ F R E E + * R T _ R H C _ F R E E */ void rt_rhc_free(register struct soltab *stp) @@ -661,11 +670,12 @@ register struct rhc_specific *rhc = (struct rhc_specific *)stp->st_specific; - bu_free( (char *)rhc, "rhc_specific" ); + bu_free((char *)rhc, "rhc_specific"); } + /** - * R T _ R H C _ C L A S S + * R T _ R H C _ C L A S S */ int rt_rhc_class(void) @@ -675,62 +685,62 @@ /** - * R T _ R H C _ P L O T + * R T _ R H C _ P L O T */ int rt_rhc_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - int i, n; - fastf_t b, c, *back, f, *front, h, rh; - fastf_t dtol, ntol; - vect_t Bu, Hu, Ru; - mat_t R; - mat_t invR; - struct rt_rhc_internal *xip; - struct rt_pt_node *old, *pos, *pts, *rt_ptalloc(void); + int i, n; + fastf_t b, c, *back, f, *front, h, rh; + fastf_t dtol, ntol; + vect_t Bu, Hu, Ru; + mat_t R; + mat_t invR; + struct rt_rhc_internal *xip; + struct rt_pt_node *old, *pos, *pts, *rt_ptalloc(void); RT_CK_DB_INTERNAL(ip); xip = (struct rt_rhc_internal *)ip->idb_ptr; RT_RHC_CK_MAGIC(xip); /* compute |B| |H| */ - b = MAGNITUDE( xip->rhc_B ); /* breadth */ + b = MAGNITUDE(xip->rhc_B); /* breadth */ rh = xip->rhc_r; /* rectangular halfwidth */ - h = MAGNITUDE( xip->rhc_H ); /* height */ + h = MAGNITUDE(xip->rhc_H); /* height */ c = xip->rhc_c; /* dist to asympt origin */ /* Check for |H| > 0, |B| > 0, rh > 0, c > 0 */ - if ( NEAR_ZERO(h, RT_LEN_TOL) || NEAR_ZERO(b, RT_LEN_TOL) - || NEAR_ZERO(rh, RT_LEN_TOL) || NEAR_ZERO(c, RT_LEN_TOL)) { + if (NEAR_ZERO(h, RT_LEN_TOL) || NEAR_ZERO(b, RT_LEN_TOL) + || NEAR_ZERO(rh, RT_LEN_TOL) || NEAR_ZERO(c, RT_LEN_TOL)) { bu_log("rt_rhc_plot: zero length H, B, c, or rh\n"); return(-2); /* BAD */ } /* Check for B.H == 0 */ - f = VDOT( xip->rhc_B, xip->rhc_H ) / (b * h); - if ( ! NEAR_ZERO(f, RT_DOT_TOL) ) { + f = VDOT(xip->rhc_B, xip->rhc_H) / (b * h); + if (! NEAR_ZERO(f, RT_DOT_TOL)) { bu_log("rt_rhc_plot: B not perpendicular to H, f=%f\n", f); return(-3); /* BAD */ } /* make unit vectors in B, H, and BxH directions */ - VMOVE( Hu, xip->rhc_H ); - VUNITIZE( Hu ); - VMOVE( Bu, xip->rhc_B ); - VUNITIZE( Bu ); - VCROSS( Ru, Bu, Hu ); + VMOVE(Hu, xip->rhc_H); + VUNITIZE(Hu); + VMOVE(Bu, xip->rhc_B); + VUNITIZE(Bu); + VCROSS(Ru, Bu, Hu); /* Compute R and Rinv matrices */ - MAT_IDN( R ); - VREVERSE( &R[0], Hu ); - VMOVE( &R[4], Ru ); - VREVERSE( &R[8], Bu ); - bn_mat_trn( invR, R ); /* inv of rot mat is trn */ + MAT_IDN(R); + VREVERSE(&R[0], Hu); + VMOVE(&R[4], Ru); + VREVERSE(&R[8], Bu); + bn_mat_trn(invR, R); /* inv of rot mat is trn */ /* - * Establish tolerances + * Establish tolerances */ - if ( ttol->rel <= 0.0 || ttol->rel >= 1.0 ) { + if (ttol->rel <= 0.0 || ttol->rel >= 1.0) { dtol = 0.0; /* none */ } else { /* Convert rel to absolute by scaling by smallest side */ @@ -739,8 +749,8 @@ else dtol = ttol->rel * 2 * b; } - if ( ttol->abs <= 0.0 ) { - if ( dtol <= 0.0 ) { + if (ttol->abs <= 0.0) { + if (dtol <= 0.0) { /* No tolerance given, use a default */ if (rh < b) dtol = 2 * 0.10 * rh; /* 10% */ @@ -751,12 +761,12 @@ } } else { /* Absolute tolerance was given, pick smaller */ - if ( ttol->rel <= 0.0 || dtol > ttol->abs ) + if (ttol->rel <= 0.0 || dtol > ttol->abs) dtol = ttol->abs; } /* To ensure normal tolerance, remain below this angle */ - if ( ttol->norm > 0.0 ) + if (ttol->norm > 0.0) ntol = ttol->norm; else /* tolerate everything */ @@ -766,12 +776,12 @@ pts = rt_ptalloc(); pts->next = rt_ptalloc(); pts->next->next = NULL; - VSET( pts->p, 0, -rh, 0); - VSET( pts->next->p, 0, rh, 0); + VSET(pts->p, 0, -rh, 0); + VSET(pts->next->p, 0, rh, 0); /* 2 endpoints in 1st approximation */ n = 2; /* recursively break segment 'til within error tolerances */ - n += rt_mk_hyperbola( pts, rh, b, c, dtol, ntol ); + n += rt_mk_hyperbola(pts, rh, b, c, dtol, ntol); /* get mem for arrays */ front = (fastf_t *)bu_malloc(3*n * sizeof(fastf_t), "fast_t"); @@ -782,66 +792,67 @@ i = 0; while (pos) { /* rotate back to original position */ - MAT4X3VEC( &front[i], invR, pos->p ); + MAT4X3VEC(&front[i], invR, pos->p); /* move to origin vertex origin */ - VADD2( &front[i], &front[i], xip->rhc_V ); + VADD2(&front[i], &front[i], xip->rhc_V); /* extrude front to create back plate */ - VADD2( &back[i], &front[i], xip->rhc_H ); + VADD2(&back[i], &front[i], xip->rhc_H); i += 3; old = pos; pos = pos->next; - bu_free ( (char *)old, "rt_pt_node" ); + bu_free ((char *)old, "rt_pt_node"); } /* Draw the front */ - RT_ADD_VLIST( vhead, &front[(n-1)*ELEMENTS_PER_VECT], - BN_VLIST_LINE_MOVE ); - for ( i = 0; i < n; i++ ) { - RT_ADD_VLIST( vhead, &front[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &front[(n-1)*ELEMENTS_PER_VECT], + BN_VLIST_LINE_MOVE); + for (i = 0; i < n; i++) { + RT_ADD_VLIST(vhead, &front[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw the back */ - RT_ADD_VLIST( vhead, &back[(n-1)*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - for ( i = 0; i < n; i++ ) { - RT_ADD_VLIST( vhead, &back[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + RT_ADD_VLIST(vhead, &back[(n-1)*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + for (i = 0; i < n; i++) { + RT_ADD_VLIST(vhead, &back[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* Draw connections */ - for ( i = 0; i < n; i++ ) { - RT_ADD_VLIST( vhead, &front[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE ); - RT_ADD_VLIST( vhead, &back[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW ); + for (i = 0; i < n; i++) { + RT_ADD_VLIST(vhead, &front[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, &back[i*ELEMENTS_PER_VECT], BN_VLIST_LINE_DRAW); } /* free mem */ - bu_free( (char *)front, "fastf_t"); - bu_free( (char *)back, "fastf_t"); + bu_free((char *)front, "fastf_t"); + bu_free((char *)back, "fastf_t"); return(0); } + /** - * R T _ M K _ H Y P E R B O L A + * R T _ M K _ H Y P E R B O L A */ /* - r: rectangular halfwidth - b: breadth - c: distance to asymptote origin + r: rectangular halfwidth + b: breadth + c: distance to asymptote origin */ int rt_mk_hyperbola(struct rt_pt_node *pts, fastf_t r, fastf_t b, fastf_t c, fastf_t dtol, fastf_t ntol) { - fastf_t A, B, C, discr, dist, intr, j, k, m, theta0, theta1, z0; - int n; - point_t mpt, p0, p1; - vect_t norm_line, norm_hyperb; + fastf_t A, B, C, discr, dist, intr, j, k, m, theta0, theta1, z0; + int n; + point_t mpt, p0, p1; + vect_t norm_line, norm_hyperb; struct rt_pt_node *new, *rt_ptalloc(void); #define RHC_TOL .0001 /* endpoints of segment approximating hyperbola */ - VMOVE( p0, pts->p ); - VMOVE( p1, pts->next->p ); + VMOVE(p0, pts->p); + VMOVE(p1, pts->next->p); /* slope and intercept of segment */ - m = ( p1[Z] - p0[Z] ) / ( p1[Y] - p0[Y] ); + m = (p1[Z] - p0[Z]) / (p1[Y] - p0[Y]); intr = p0[Z] - m * p0[Y]; /* find point on hyperbola with max dist between hyperbola and line */ j = b + c; @@ -851,119 +862,120 @@ C = j*j*k - c*c; discr = sqrt(B*B - 4*A*C); z0 = (-B + discr) / (2. * A); - if ( z0+RHC_TOL >= -b ) /* use top sheet of hyperboloid */ + if (z0+RHC_TOL >= -b) /* use top sheet of hyperboloid */ mpt[Z] = z0; else mpt[Z] = (-B - discr) / (2. * A); - if (NEAR_ZERO( mpt[Z], RHC_TOL)) + if (NEAR_ZERO(mpt[Z], RHC_TOL)) mpt[Z] = 0.; mpt[X] = 0; mpt[Y] = ((mpt[Z] + b + c) * (mpt[Z] + b + c) - c*c) / (b*(b + 2*c)); - if (NEAR_ZERO( mpt[Y], RHC_TOL )) + if (NEAR_ZERO(mpt[Y], RHC_TOL)) mpt[Y] = 0.; - mpt[Y] = r * sqrt( mpt[Y] ); + mpt[Y] = r * sqrt(mpt[Y]); if (p0[Y] < 0.) mpt[Y] = -mpt[Y]; /* max distance between that point and line */ - dist = fabs( m * mpt[Y] - mpt[Z] + intr ) / sqrt( m * m + 1 ); + dist = fabs(m * mpt[Y] - mpt[Z] + intr) / sqrt(m * m + 1); /* angles between normal of line and of hyperbola at line endpoints */ - VSET( norm_line, m, -1., 0.); - VSET( norm_hyperb, 0., (2*c + 1) / (p0[Z] + c + 1), -1.); - VUNITIZE( norm_line ); - VUNITIZE( norm_hyperb ); - theta0 = fabs( acos( VDOT( norm_line, norm_hyperb ))); - VSET( norm_hyperb, 0., (2*c + 1) / (p1[Z] + c + 1), -1.); - VUNITIZE( norm_hyperb ); - theta1 = fabs( acos( VDOT( norm_line, norm_hyperb ))); + VSET(norm_line, m, -1., 0.); + VSET(norm_hyperb, 0., (2*c + 1) / (p0[Z] + c + 1), -1.); + VUNITIZE(norm_line); + VUNITIZE(norm_hyperb); + theta0 = fabs(acos(VDOT(norm_line, norm_hyperb))); + VSET(norm_hyperb, 0., (2*c + 1) / (p1[Z] + c + 1), -1.); + VUNITIZE(norm_hyperb); + theta1 = fabs(acos(VDOT(norm_line, norm_hyperb))); /* split segment at widest point if not within error tolerances */ - if ( dist > dtol || theta0 > ntol || theta1 > ntol ) { + if (dist > dtol || theta0 > ntol || theta1 > ntol) { /* split segment */ new = rt_ptalloc(); - VMOVE( new->p, mpt ); + VMOVE(new->p, mpt); new->next = pts->next; pts->next = new; /* keep track of number of pts added */ n = 1; /* recurse on first new segment */ - n += rt_mk_hyperbola( pts, r, b, c, dtol, ntol ); + n += rt_mk_hyperbola(pts, r, b, c, dtol, ntol); /* recurse on second new segment */ - n += rt_mk_hyperbola( new, r, b, c, dtol, ntol ); + n += rt_mk_hyperbola(new, r, b, c, dtol, ntol); } else n = 0; - return( n ); + return(n); } + /** - * R T _ R H C _ T E S S + * R T _ R H C _ T E S S * - * Returns - - * -1 failure - * 0 OK. *r points to nmgregion that holds this tessellation. + * Returns - + * -1 failure + * 0 OK. *r points to nmgregion that holds this tessellation. */ int rt_rhc_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - int i, j, n; - fastf_t b, c, *back, f, *front, h, rh; - fastf_t dtol, ntol; - vect_t Bu, Hu, Ru; - mat_t R; - mat_t invR; - struct rt_rhc_internal *xip; - struct rt_pt_node *old, *pos, *pts, *rt_ptalloc(void); - struct shell *s; - struct faceuse **outfaceuses; - struct vertex **vfront, **vback, **vtemp, *vertlist[4]; - vect_t *norms; - fastf_t bb_plus_2bc, b_plus_c, r_sq; - int failure=0; + int i, j, n; + fastf_t b, c, *back, f, *front, h, rh; + fastf_t dtol, ntol; + vect_t Bu, Hu, Ru; + mat_t R; + mat_t invR; + struct rt_rhc_internal *xip; + struct rt_pt_node *old, *pos, *pts, *rt_ptalloc(void); + struct shell *s; + struct faceuse **outfaceuses; + struct vertex **vfront, **vback, **vtemp, *vertlist[4]; + vect_t *norms; + fastf_t bb_plus_2bc, b_plus_c, r_sq; + int failure=0; - NMG_CK_MODEL( m ); - BN_CK_TOL( tol ); - RT_CK_TESS_TOL( ttol ); + NMG_CK_MODEL(m); + BN_CK_TOL(tol); + RT_CK_TESS_TOL(ttol); RT_CK_DB_INTERNAL(ip); xip = (struct rt_rhc_internal *)ip->idb_ptr; RT_RHC_CK_MAGIC(xip); /* compute |B| |H| */ - b = MAGNITUDE( xip->rhc_B ); /* breadth */ + b = MAGNITUDE(xip->rhc_B); /* breadth */ rh = xip->rhc_r; /* rectangular halfwidth */ - h = MAGNITUDE( xip->rhc_H ); /* height */ + h = MAGNITUDE(xip->rhc_H); /* height */ c = xip->rhc_c; /* dist to asympt origin */ /* Check for |H| > 0, |B| > 0, rh > 0, c > 0 */ - if ( NEAR_ZERO(h, RT_LEN_TOL) || NEAR_ZERO(b, RT_LEN_TOL) - || NEAR_ZERO(rh, RT_LEN_TOL) || NEAR_ZERO(c, RT_LEN_TOL)) { + if (NEAR_ZERO(h, RT_LEN_TOL) || NEAR_ZERO(b, RT_LEN_TOL) + || NEAR_ZERO(rh, RT_LEN_TOL) || NEAR_ZERO(c, RT_LEN_TOL)) { bu_log("rt_rhc_tess: zero length H, B, c, or rh\n"); return(-2); /* BAD */ } /* Check for B.H == 0 */ - f = VDOT( xip->rhc_B, xip->rhc_H ) / (b * h); - if ( ! NEAR_ZERO(f, RT_DOT_TOL) ) { + f = VDOT(xip->rhc_B, xip->rhc_H) / (b * h); + if (! NEAR_ZERO(f, RT_DOT_TOL)) { bu_log("rt_rhc_tess: B not perpendicular to H, f=%f\n", f); return(-3); /* BAD */ } /* make unit vectors in B, H, and BxH directions */ - VMOVE( Hu, xip->rhc_H ); - VUNITIZE( Hu ); - VMOVE( Bu, xip->rhc_B ); - VUNITIZE( Bu ); - VCROSS( Ru, Bu, Hu ); + VMOVE(Hu, xip->rhc_H); + VUNITIZE(Hu); + VMOVE(Bu, xip->rhc_B); + VUNITIZE(Bu); + VCROSS(Ru, Bu, Hu); /* Compute R and Rinv matrices */ - MAT_IDN( R ); - VREVERSE( &R[0], Hu ); - VMOVE( &R[4], Ru ); - VREVERSE( &R[8], Bu ); - bn_mat_trn( invR, R ); /* inv of rot mat is trn */ + MAT_IDN(R); + VREVERSE(&R[0], Hu); + VMOVE(&R[4], Ru); + VREVERSE(&R[8], Bu); + bn_mat_trn(invR, R); /* inv of rot mat is trn */ /* - * Establish tolerances + * Establish tolerances */ - if ( ttol->rel <= 0.0 || ttol->rel >= 1.0 ) { + if (ttol->rel <= 0.0 || ttol->rel >= 1.0) { dtol = 0.0; /* none */ } else { /* Convert rel to absolute by scaling by smallest side */ @@ -972,8 +984,8 @@ else dtol = ttol->rel * 2 * b; } - if ( ttol->abs <= 0.0 ) { - if ( dtol <= 0.0 ) { + if (ttol->abs <= 0.0) { + if (dtol <= 0.0) { /* No tolerance given, use a default */ if (rh < b) dtol = 2 * 0.10 * rh; /* 10% */ @@ -984,12 +996,12 @@ } } else { /* Absolute tolerance was given, pick smaller */ - if ( ttol->rel <= 0.0 || dtol > ttol->abs ) + if (ttol->rel <= 0.0 || dtol > ttol->abs) dtol = ttol->abs; } /* To ensure normal tolerance, remain below this angle */ - if ( ttol->norm > 0.0 ) + if (ttol->norm > 0.0) ntol = ttol->norm; else /* tolerate everything */ @@ -999,17 +1011,17 @@ pts = rt_ptalloc(); pts->next = rt_ptalloc(); pts->next->next = NULL; - VSET( pts->p, 0, -rh, 0); - VSET( pts->next->p, 0, rh, 0); + VSET(pts->p, 0, -rh, 0); + VSET(pts->next->p, 0, rh, 0); /* 2 endpoints in 1st approximation */ n = 2; /* recursively break segment 'til within error tolerances */ - n += rt_mk_hyperbola( pts, rh, b, c, dtol, ntol ); + n += rt_mk_hyperbola(pts, rh, b, c, dtol, ntol); /* get mem for arrays */ front = (fastf_t *)bu_malloc(3*n * sizeof(fastf_t), "fastf_t"); back = (fastf_t *)bu_malloc(3*n * sizeof(fastf_t), "fastf_t"); - norms = (vect_t *)bu_calloc( n, sizeof( vect_t ), "rt_rhc_tess: norms" ); + norms = (vect_t *)bu_calloc(n, sizeof(vect_t), "rt_rhc_tess: norms"); vfront = (struct vertex **)bu_malloc((n+1) * sizeof(struct vertex *), "vertex *"); vback = (struct vertex **)bu_malloc((n+1) * sizeof(struct vertex *), "vertex *"); vtemp = (struct vertex **)bu_malloc((n+1) * sizeof(struct vertex *), "vertex *"); @@ -1031,39 +1043,39 @@ vect_t tmp_norm; /* calculate normal for 2D hyperbola */ - VSET( tmp_norm, 0.0, pos->p[Y]*bb_plus_2bc, (-r_sq*(pos->p[Z]+b_plus_c)) ); - MAT4X3VEC( norms[j], invR, tmp_norm ); - VUNITIZE( norms[j] ); + VSET(tmp_norm, 0.0, pos->p[Y]*bb_plus_2bc, (-r_sq*(pos->p[Z]+b_plus_c))); + MAT4X3VEC(norms[j], invR, tmp_norm); + VUNITIZE(norms[j]); /* rotate back to original position */ - MAT4X3VEC( &front[i], invR, pos->p ); + MAT4X3VEC(&front[i], invR, pos->p); /* move to origin vertex origin */ - VADD2( &front[i], &front[i], xip->rhc_V ); + VADD2(&front[i], &front[i], xip->rhc_V); /* extrude front to create back plate */ - VADD2( &back[i], &front[i], xip->rhc_H ); + VADD2(&back[i], &front[i], xip->rhc_H); i += 3; j++; old = pos; pos = pos->next; - bu_free ( (char *)old, "rt_pt_node" ); + bu_free ((char *)old, "rt_pt_node"); } - *r = nmg_mrsv( m ); /* Make region, empty shell, vertex */ + *r = nmg_mrsv(m); /* Make region, empty shell, vertex */ s = BU_LIST_FIRST(shell, &(*r)->s_hd); - for ( i=0; i<n; i++ ) { + for (i=0; i<n; i++) { vfront[i] = vtemp[i] = (struct vertex *)0; } /* Front face topology. Verts are considered to go CCW */ outfaceuses[0] = nmg_cface(s, vfront, n); - (void)nmg_mark_edges_real( &outfaceuses[0]->l.magic ); + (void)nmg_mark_edges_real(&outfaceuses[0]->l.magic); /* Back face topology. Verts must go in opposite dir (CW) */ outfaceuses[1] = nmg_cface(s, vtemp, n); - for ( i=0; i<n; i++ ) vback[i] = vtemp[n-1-i]; + for (i=0; i<n; i++) vback[i] = vtemp[n-1-i]; - (void)nmg_mark_edges_real( &outfaceuses[1]->l.magic ); + (void)nmg_mark_edges_real(&outfaceuses[1]->l.magic); /* Duplicate [0] as [n] to handle loop end condition, below */ vfront[n] = vfront[0]; @@ -1073,7 +1085,7 @@ * connecting the front and back faces. * increasing indices go towards counter-clockwise (CCW). */ - for ( i=0; i<n; i++ ) { + for (i=0; i<n; i++) { vertlist[0] = vfront[i]; /* from top, */ vertlist[1] = vback[i]; /* straight down, */ vertlist[2] = vback[i+1]; /* to left, */ @@ -1081,159 +1093,157 @@ outfaceuses[2+i] = nmg_cface(s, vertlist, 4); } - (void)nmg_mark_edges_real( &outfaceuses[n+1]->l.magic ); + (void)nmg_mark_edges_real(&outfaceuses[n+1]->l.magic); - for ( i=0; i<n; i++ ) { + for (i=0; i<n; i++) { NMG_CK_VERTEX(vfront[i]); NMG_CK_VERTEX(vback[i]); } /* Associate the vertex geometry, CCW */ - for ( i=0; i<n; i++ ) { - nmg_vertex_gv( vfront[i], &front[3*(i)] ); + for (i=0; i<n; i++) { + nmg_vertex_gv(vfront[i], &front[3*(i)]); } - for ( i=0; i<n; i++ ) { - nmg_vertex_gv( vback[i], &back[3*(i)] ); + for (i=0; i<n; i++) { + nmg_vertex_gv(vback[i], &back[3*(i)]); } /* Associate the face geometry */ for (i=0; i < n+2; i++) { - if ( nmg_fu_planeeqn( outfaceuses[i], tol ) < 0 ) - { + if (nmg_fu_planeeqn(outfaceuses[i], tol) < 0) { failure = (-1); goto fail; } } /* Associate vertexuse normals */ - for ( i=0; i<n; i++ ) - { + for (i=0; i<n; i++) { struct vertexuse *vu; struct faceuse *fu; vect_t rev_norm; - VREVERSE( rev_norm, norms[i] ); + VREVERSE(rev_norm, norms[i]); /* do "front" vertices */ - NMG_CK_VERTEX( vfront[i] ); - for ( BU_LIST_FOR( vu, vertexuse, &vfront[i]->vu_hd ) ) - { - NMG_CK_VERTEXUSE( vu ); - fu = nmg_find_fu_of_vu( vu ); - NMG_CK_FACEUSE( fu ); - if ( fu->f_p == outfaceuses[0]->f_p || - fu->f_p == outfaceuses[1]->f_p || - fu->f_p == outfaceuses[n+1]->f_p ) + NMG_CK_VERTEX(vfront[i]); + for (BU_LIST_FOR(vu, vertexuse, &vfront[i]->vu_hd)) { + NMG_CK_VERTEXUSE(vu); + fu = nmg_find_fu_of_vu(vu); + NMG_CK_FACEUSE(fu); + if (fu->f_p == outfaceuses[0]->f_p || + fu->f_p == outfaceuses[1]->f_p || + fu->f_p == outfaceuses[n+1]->f_p) continue; /* skip flat faces */ - if ( fu->orientation == OT_SAME ) - nmg_vertexuse_nv( vu, norms[i] ); - else if ( fu->orientation == OT_OPPOSITE ) - nmg_vertexuse_nv( vu, rev_norm ); + if (fu->orientation == OT_SAME) + nmg_vertexuse_nv(vu, norms[i]); + else if (fu->orientation == OT_OPPOSITE) + nmg_vertexuse_nv(vu, rev_norm); } /* and "back" vertices */ - NMG_CK_VERTEX( vback[i] ); - for ( BU_LIST_FOR( vu, vertexuse, &vback[i]->vu_hd ) ) - { - NMG_CK_VERTEXUSE( vu ); - fu = nmg_find_fu_of_vu( vu ); - NMG_CK_FACEUSE( fu ); - if ( fu->f_p == outfaceuses[0]->f_p || - fu->f_p == outfaceuses[1]->f_p || - fu->f_p == outfaceuses[n+1]->f_p ) + NMG_CK_VERTEX(vback[i]); + for (BU_LIST_FOR(vu, vertexuse, &vback[i]->vu_hd)) { + NMG_CK_VERTEXUSE(vu); + fu = nmg_find_fu_of_vu(vu); + NMG_CK_FACEUSE(fu); + if (fu->f_p == outfaceuses[0]->f_p || + fu->f_p == outfaceuses[1]->f_p || + fu->f_p == outfaceuses[n+1]->f_p) continue; /* skip flat faces */ - if ( fu->orientation == OT_SAME ) - nmg_vertexuse_nv( vu, norms[i] ); - else if ( fu->orientation == OT_OPPOSITE ) - nmg_vertexuse_nv( vu, rev_norm ); + if (fu->orientation == OT_SAME) + nmg_vertexuse_nv(vu, norms[i]); + else if (fu->orientation == OT_OPPOSITE) + nmg_vertexuse_nv(vu, rev_norm); } } /* Glue the edges of different outward pointing face uses together */ - nmg_gluefaces( outfaceuses, n+2, tol ); + nmg_gluefaces(outfaceuses, n+2, tol); /* Compute "geometry" for region and shell */ - nmg_region_a( *r, tol ); + nmg_region_a(*r, tol); fail: /* free mem */ - bu_free( (char *)front, "fastf_t"); - bu_free( (char *)back, "fastf_t"); - bu_free( (char*)vfront, "vertex *"); - bu_free( (char*)vback, "vertex *"); - bu_free( (char*)vtemp, "vertex *"); - bu_free( (char *)norms, "rt_rhc_tess: norms" ); - bu_free( (char*)outfaceuses, "faceuse *"); + bu_free((char *)front, "fastf_t"); + bu_free((char *)back, "fastf_t"); + bu_free((char*)vfront, "vertex *"); + bu_free((char*)vback, "vertex *"); + bu_free((char*)vtemp, "vertex *"); + bu_free((char *)norms, "rt_rhc_tess: norms"); + bu_free((char*)outfaceuses, "faceuse *"); - return( failure ); + return(failure); } + /** - * R T _ R H C _ I M P O R T + * R T _ R H C _ I M P O R T * - * Import an RHC from the database format to the internal format. - * Apply modeling transformations as well. + * Import an RHC from the database format to the internal format. + * Apply modeling transformations as well. */ int rt_rhc_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { - struct rt_rhc_internal *xip; - union record *rp; + struct rt_rhc_internal *xip; + union record *rp; - BU_CK_EXTERNAL( ep ); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ - if ( rp->u_id != ID_SOLID ) { + if (rp->u_id != ID_SOLID) { bu_log("rt_rhc_import4: defective record\n"); return(-1); } - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_RHC; ip->idb_meth = &rt_functab[ID_RHC]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_rhc_internal), "rt_rhc_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_rhc_internal), "rt_rhc_internal"); xip = (struct rt_rhc_internal *)ip->idb_ptr; xip->rhc_magic = RT_RHC_INTERNAL_MAGIC; /* Warning: type conversion */ if (mat == NULL) mat = bn_mat_identity; - MAT4X3PNT( xip->rhc_V, mat, &rp->s.s_values[0*3] ); - MAT4X3VEC( xip->rhc_H, mat, &rp->s.s_values[1*3] ); - MAT4X3VEC( xip->rhc_B, mat, &rp->s.s_values[2*3] ); + MAT4X3PNT(xip->rhc_V, mat, &rp->s.s_values[0*3]); + MAT4X3VEC(xip->rhc_H, mat, &rp->s.s_values[1*3]); + MAT4X3VEC(xip->rhc_B, mat, &rp->s.s_values[2*3]); xip->rhc_r = rp->s.s_values[3*3] / mat[15]; xip->rhc_c = rp->s.s_values[3*3+1] / mat[15]; - if ( xip->rhc_r <= SMALL_FASTF || xip->rhc_c <= SMALL_FASTF ) { - bu_log( "rt_rhc_import4: r or c are zero\n" ); - bu_free( (char *)ip->idb_ptr, "rt_rhc_import4: ip->idb_ptr" ); - return( -1 ); + if (xip->rhc_r <= SMALL_FASTF || xip->rhc_c <= SMALL_FASTF) { + bu_log("rt_rhc_import4: r or c are zero\n"); + bu_free((char *)ip->idb_ptr, "rt_rhc_import4: ip->idb_ptr"); + return(-1); } return(0); /* OK */ } + /** - * R T _ R H C _ E X P O R T + * R T _ R H C _ E X P O R T * - * The name is added by the caller, in the usual place. + * The name is added by the caller, in the usual place. */ int rt_rhc_export4(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_rhc_internal *xip; - union record *rhc; + struct rt_rhc_internal *xip; + union record *rhc; RT_CK_DB_INTERNAL(ip); - if ( ip->idb_type != ID_RHC ) return(-1); + if (ip->idb_type != ID_RHC) return(-1); xip = (struct rt_rhc_internal *)ip->idb_ptr; RT_RHC_CK_MAGIC(xip); BU_CK_EXTERNAL(ep); ep->ext_nbytes = sizeof(union record); - ep->ext_buf = (genptr_t)bu_calloc( 1, ep->ext_nbytes, "rhc external"); + ep->ext_buf = (genptr_t)bu_calloc(1, ep->ext_nbytes, "rhc external"); rhc = (union record *)ep->ext_buf; rhc->s.s_id = ID_SOLID; @@ -1254,86 +1264,88 @@ VUNITIZE(ub); VMOVE(uh, xip->rhc_H); VUNITIZE(uh); - if ( !NEAR_ZERO( VDOT(ub, uh), RT_DOT_TOL) ) { + if (!NEAR_ZERO(VDOT(ub, uh), RT_DOT_TOL)) { bu_log("rt_rhc_export4: B and H are not perpendicular!\n"); return(-1); } } /* Warning: type conversion */ - VSCALE( &rhc->s.s_values[0*3], xip->rhc_V, local2mm ); - VSCALE( &rhc->s.s_values[1*3], xip->rhc_H, local2mm ); - VSCALE( &rhc->s.s_values[2*3], xip->rhc_B, local2mm ); + VSCALE(&rhc->s.s_values[0*3], xip->rhc_V, local2mm); + VSCALE(&rhc->s.s_values[1*3], xip->rhc_H, local2mm); + VSCALE(&rhc->s.s_values[2*3], xip->rhc_B, local2mm); rhc->s.s_values[3*3] = xip->rhc_r * local2mm; rhc->s.s_values[3*3+1] = xip->rhc_c * local2mm; return(0); } + /** - * R T _ R H C _ I M P O R T 5 + * R T _ R H C _ I M P O R T 5 * - * Import an RHC from the database format to the internal format. - * Apply modeling transformations as well. + * Import an RHC from the database format to the internal format. + * Apply modeling transformations as well. */ int rt_rhc_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) { - struct rt_rhc_internal *xip; - fastf_t vec[11]; + struct rt_rhc_internal *xip; + fastf_t vec[11]; - BU_CK_EXTERNAL( ep ); + BU_CK_EXTERNAL(ep); - BU_ASSERT_LONG( ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 11 ); + BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 11); - RT_CK_DB_INTERNAL( ip ); + RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_RHC; ip->idb_meth = &rt_functab[ID_RHC]; - ip->idb_ptr = bu_malloc( sizeof(struct rt_rhc_internal), "rt_rhc_internal"); + ip->idb_ptr = bu_malloc(sizeof(struct rt_rhc_internal), "rt_rhc_internal"); xip = (struct rt_rhc_internal *)ip->idb_ptr; xip->rhc_magic = RT_RHC_INTERNAL_MAGIC; /* Convert from database (network) to internal (host) format */ - ntohd( (unsigned char *)vec, ep->ext_buf, 11 ); + ntohd((unsigned char *)vec, ep->ext_buf, 11); /* Apply modeling transformations */ if (mat == NULL) mat = bn_mat_identity; - MAT4X3PNT( xip->rhc_V, mat, &vec[0*3] ); - MAT4X3VEC( xip->rhc_H, mat, &vec[1*3] ); - MAT4X3VEC( xip->rhc_B, mat, &vec[2*3] ); + MAT4X3PNT(xip->rhc_V, mat, &vec[0*3]); + MAT4X3VEC(xip->rhc_H, mat, &vec[1*3]); + MAT4X3VEC(xip->rhc_B, mat, &vec[2*3]); xip->rhc_r = vec[3*3] / mat[15]; xip->rhc_c = vec[3*3+1] / mat[15]; - if ( xip->rhc_r <= SMALL_FASTF || xip->rhc_c <= SMALL_FASTF ) { - bu_log( "rt_rhc_import4: r or c are zero\n" ); - bu_free( (char *)ip->idb_ptr, "rt_rhc_import4: ip->idb_ptr" ); - return( -1 ); + if (xip->rhc_r <= SMALL_FASTF || xip->rhc_c <= SMALL_FASTF) { + bu_log("rt_rhc_import4: r or c are zero\n"); + bu_free((char *)ip->idb_ptr, "rt_rhc_import4: ip->idb_ptr"); + return(-1); } return(0); /* OK */ } + /** - * R T _ R H C _ E X P O R T 5 + * R T _ R H C _ E X P O R T 5 * - * The name is added by the caller, in the usual place. + * The name is added by the caller, in the usual place. */ int rt_rhc_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { - struct rt_rhc_internal *xip; - fastf_t vec[11]; + struct rt_rhc_internal *xip; + fastf_t vec[11]; RT_CK_DB_INTERNAL(ip); - if ( ip->idb_type != ID_RHC ) return(-1); + if (ip->idb_type != ID_RHC) return(-1); xip = (struct rt_rhc_internal *)ip->idb_ptr; RT_RHC_CK_MAGIC(xip); BU_CK_EXTERNAL(ep); ep->ext_nbytes = SIZEOF_NETWORK_DOUBLE * 11; - ep->ext_buf = (genptr_t)bu_malloc( ep->ext_nbytes, "rhc external"); + ep->ext_buf = (genptr_t)bu_malloc(ep->ext_nbytes, "rhc external"); if (MAGNITUDE(xip->rhc_B) < RT_LEN_TOL || MAGNITUDE(xip->rhc_H) < RT_LEN_TOL @@ -1350,80 +1362,82 @@ VUNITIZE(ub); VMOVE(uh, xip->rhc_H); VUNITIZE(uh); - if ( !NEAR_ZERO( VDOT(ub, uh), RT_DOT_TOL) ) { + if (!NEAR_ZERO(VDOT(ub, uh), RT_DOT_TOL)) { bu_log("rt_rhc_export4: B and H are not perpendicular!\n"); return(-1); } } /* scale 'em into local buffer */ - VSCALE( &vec[0*3], xip->rhc_V, local2mm ); - VSCALE( &vec[1*3], xip->rhc_H, local2mm ); - VSCALE( &vec[2*3], xip->rhc_B, local2mm ); + VSCALE(&vec[0*3], xip->rhc_V, local2mm); + VSCALE(&vec[1*3], xip->rhc_H, local2mm); + VSCALE(&vec[2*3], xip->rhc_B, local2mm); vec[3*3] = xip->rhc_r * local2mm; vec[3*3+1] = xip->rhc_c * local2mm; /* Convert from internal (host) to database (network) format */ - htond( ep->ext_buf, (unsigned char *)vec, 11 ); + htond(ep->ext_buf, (unsigned char *)vec, 11); return(0); } + /** - * R T _ R H C _ D E S C R I B E + * R T _ R H C _ D E S C R I B E * - * Make human-readable formatted presentation of this solid. - * First line describes type of solid. - * Additional lines are indented one tab, and give parameter values. + * Make human-readable formatted presentation of this solid. + * First line describes type of solid. + * Additional lines are indented one tab, and give parameter values. */ int rt_rhc_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_rhc_internal *xip = + register struct rt_rhc_internal *xip = (struct rt_rhc_internal *)ip->idb_ptr; - char buf[256]; + char buf[256]; RT_RHC_CK_MAGIC(xip); - bu_vls_strcat( str, "Right Hyperbolic Cylinder (RHC)\n"); + bu_vls_strcat(str, "Right Hyperbolic Cylinder (RHC)\n"); sprintf(buf, "\tV (%g, %g, %g)\n", INTCLAMP(xip->rhc_V[X] * mm2local), INTCLAMP(xip->rhc_V[Y] * mm2local), - INTCLAMP(xip->rhc_V[Z] * mm2local) ); - bu_vls_strcat( str, buf ); + INTCLAMP(xip->rhc_V[Z] * mm2local)); + bu_vls_strcat(str, buf); sprintf(buf, "\tB (%g, %g, %g) mag=%g\n", INTCLAMP(xip->rhc_B[X] * mm2local), INTCLAMP(xip->rhc_B[Y] * mm2local), INTCLAMP(xip->rhc_B[Z] * mm2local), INTCLAMP(MAGNITUDE(xip->rhc_B) * mm2local)); - bu_vls_strcat( str, buf ); + bu_vls_strcat(str, buf); sprintf(buf, "\tH (%g, %g, %g) mag=%g\n", INTCLAMP(xip->rhc_H[X] * mm2local), INTCLAMP(xip->rhc_H[Y] * mm2local), INTCLAMP(xip->rhc_H[Z] * mm2local), INTCLAMP(MAGNITUDE(xip->rhc_H) * mm2local)); - bu_vls_strcat( str, buf ); + bu_vls_strcat(str, buf); sprintf(buf, "\tr=%g\n", INTCLAMP(xip->rhc_r * mm2local)); - bu_vls_strcat( str, buf ); + bu_vls_strcat(str, buf); sprintf(buf, "\tc=%g\n", INTCLAMP(xip->rhc_c * mm2local)); - bu_vls_strcat( str, buf ); + bu_vls_strcat(str, buf); return(0); } + /** - * R T _ R H C _ I F R E E + * R T _ R H C _ I F R E E * - * Free the storage associated with the rt_db_internal version of this solid. + * Free the storage associated with the rt_db_internal version of this solid. */ void rt_rhc_ifree(struct rt_db_internal *ip, struct resource *resp) { - register struct rt_rhc_internal *xip; + register struct rt_rhc_internal *xip; RT_CK_DB_INTERNAL(ip); @@ -1435,10 +1449,11 @@ RT_RHC_CK_MAGIC(xip); xip->rhc_magic = 0; /* sanity */ - bu_free( (char *)xip, "rhc ifree" ); + bu_free((char *)xip, "rhc ifree"); ip->idb_ptr = GENPTR_NULL; /* sanity */ } + /** * R T _ R H C _ P A R A M S * @@ -1449,6 +1464,7 @@ return(0); /* OK */ } + /* * Local Variables: * mode: C Modified: brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp 2009-12-02 03:21:03 UTC (rev 36746) +++ brlcad/trunk/src/librt/primitives/rhc/rhc_brep.cpp 2009-12-02 06:05:43 UTC (rev 36747) @@ -30,9 +30,8 @@ #include "brep.h" - /** - * R T _ R H C _ B R E P + * R T _ R H C _ B R E P */ extern "C" void rt_rhc_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) @@ -52,8 +51,8 @@ ON_3dPoint plane1_origin, plane2_origin; ON_3dVector plane_x_dir, plane_y_dir; - // First, find plane in 3 space corresponding to the bottom face - // of the RHC. + // First, find plane in 3 space corresponding to the bottom face + // of the RHC. vect_t tmp, x_dir, y_dir; @@ -68,10 +67,10 @@ plane_y_dir = ON_3dVector(y_dir); const ON_Plane* rhc_bottom_plane = new ON_Plane(plane1_origin, plane_x_dir, plane_y_dir); - // Next, create a hyperbolic curve corresponding to the shape of - // the hyperboloid in the plane. - // See if the following webpage will help: - // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/NURBS/RB-conics.html + // Next, create a hyperbolic curve corresponding to the shape of + // the hyperboloid in the plane. See if the following webpage + // will help: + // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/NURBS/RB-conics.html point_t x_rev_dir, ep1, ep2, ep3, tmppt; VREVERSE(x_rev_dir, x_dir); @@ -88,7 +87,7 @@ VMOVE(tmppt, eip->rhc_B); VUNITIZE(tmppt); - VSCALE(tmppt,tmppt, w1 * intercept_dist); + VSCALE(tmppt, tmppt, w1 * intercept_dist); VADD2(ep2, p1_origin, tmppt); VADD2(ep3, p1_origin, x_dir); ON_3dPoint onp1 = ON_3dPoint(ep1); @@ -101,29 +100,19 @@ cpts.Append(onp3); ON_BezierCurve *bcurve = new ON_BezierCurve(cpts); bcurve->MakeRational(); - bcurve->SetWeight(1,w1); + bcurve->SetWeight(1, w1); ON_NurbsCurve* hypnurbscurve = ON_NurbsCurve::New(); bcurve->GetNurbForm(*hypnurbscurve); -/* - hypnurbscurve->SetKnot(0, 0); - hypnurbscurve->SetKnot(1, 0); - hypnurbscurve->SetKnot(2, 1); - hypnurbscurve->SetKnot(3, 1); - hypnurbscurve->SetCV(0,ON_3dPoint(ep1)); - hypnurbscurve->SetCV(1,ON_3dPoint(ep2)); - hypnurbscurve->SetCV(2,ON_3dPoint(ep3)); - hypnurbscurve->SetWeight(1,w1); -*/ bu_log("Valid nurbs curve: %d\n", hypnurbscurve->IsValid(dump)); hypnurbscurve->Dump(*dump); // Also need a staight line from the beginning to the end to - // complete the loop + // complete the loop. - ON_LineCurve* straightedge = new ON_LineCurve(onp3,onp1); + ON_LineCurve* straightedge = new ON_LineCurve(onp3, onp1); // Generate the bottom cap ON_SimpleArray<ON_Curve*> boundary; @@ -132,30 +121,32 @@ ON_PlaneSurface* bp = new ON_PlaneSurface(); bp->m_plane = (*rhc_bottom_plane); - bp->SetDomain(0, -100.0, 100.0 ); - bp->SetDomain(1, -100.0, 100.0 ); - bp->SetExtents(0, bp->Domain(0) ); - bp->SetExtents(1, bp->Domain(1) ); + bp->SetDomain(0, -100.0, 100.0); + bp->SetDomain(1, -100.0, 100.0); + bp->SetExtents(0, bp->Domain(0)); + bp->SetExtents(1, bp->Domain(1)); (*b)->m_S.Append(bp); const int bsi = (*b)->m_S.Count() - 1; ON_BrepFace& bface = (*b)->NewFace(bsi); (*b)->NewPlanarFaceLoop(bface.m_face_index, ON_BrepLoop::outer, boundary, true); ... [truncated message content] |
From: <br...@us...> - 2009-12-02 21:08:16
|
Revision: 36775 http://brlcad.svn.sourceforge.net/brlcad/?rev=36775&view=rev Author: brlcad Date: 2009-12-02 21:08:10 +0000 (Wed, 02 Dec 2009) Log Message: ----------- quell verbose strict compilation warnings. unused vars and missing initializers. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/librt/primitives/arbn/arbn.c brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c Modified: brlcad/trunk/src/librt/primitives/arb8/arb8.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-12-02 20:58:26 UTC (rev 36774) +++ brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-12-02 21:08:10 UTC (rev 36775) @@ -128,15 +128,15 @@ const struct bu_structparse rt_arb_parse[] = { - { "%f", 3, "V1", bu_offsetof(struct rt_arb_internal, pt[0][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V2", bu_offsetof(struct rt_arb_internal, pt[1][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V3", bu_offsetof(struct rt_arb_internal, pt[2][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V4", bu_offsetof(struct rt_arb_internal, pt[3][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V5", bu_offsetof(struct rt_arb_internal, pt[4][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V6", bu_offsetof(struct rt_arb_internal, pt[5][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V7", bu_offsetof(struct rt_arb_internal, pt[6][X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "V8", bu_offsetof(struct rt_arb_internal, pt[7][X]), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V1", bu_offsetof(struct rt_arb_internal, pt[0][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V2", bu_offsetof(struct rt_arb_internal, pt[1][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V3", bu_offsetof(struct rt_arb_internal, pt[2][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V4", bu_offsetof(struct rt_arb_internal, pt[3][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V5", bu_offsetof(struct rt_arb_internal, pt[4][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V6", bu_offsetof(struct rt_arb_internal, pt[5][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V7", bu_offsetof(struct rt_arb_internal, pt[6][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "V8", bu_offsetof(struct rt_arb_internal, pt[7][X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; @@ -881,6 +881,8 @@ fastf_t dxbdn; fastf_t s; + if (ap) RT_CK_APPLICATION(ap); + /* Intialize return values */ for (i = 0; i < n; i++) { segp[i].seg_stp = stp[i]; /* Assume hit, if 0 then miss */ @@ -976,6 +978,7 @@ void rt_arb_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { + if (stp) RT_CK_SOLTAB(stp); bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; @@ -1106,7 +1109,7 @@ * be. */ int -rt_arb_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_arb_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct rt_arb_internal *aip; @@ -1172,6 +1175,8 @@ fastf_t vec[3*8]; BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); + rp = (union record *)ep->ext_buf; /* Check record type */ if (rp->u_id != ID_SOLID) { @@ -1215,6 +1220,8 @@ register int i; RT_CK_DB_INTERNAL(ip); + if (dbip) RT_CK_DBI(dbip); + if (ip->idb_type != ID_ARB8) return(-1); aip = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(aip); @@ -1251,9 +1258,12 @@ register int i; fastf_t vec[3*8]; + RT_CK_DB_INTERNAL(ip); BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); + BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 3*8); - RT_CK_DB_INTERNAL(ip); + ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_ARB8; ip->idb_meth = &rt_functab[ID_ARB8]; @@ -1283,6 +1293,8 @@ register int i; RT_CK_DB_INTERNAL(ip); + if (dbip) RT_CK_DBI(dbip); + if (ip->idb_type != ID_ARB8) return -1; aip = (struct rt_arb_internal *)ip->idb_ptr; RT_ARB_CK_MAGIC(aip); @@ -1436,7 +1448,7 @@ * 0 OK. *r points to nmgregion that holds this tessellation. */ int -rt_arb_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_arb_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { struct rt_arb_internal *aip; struct shell *s; @@ -1709,11 +1721,7 @@ * This is an analog of rt_arb_calc_planes(). */ int -rt_arb_calc_points( - struct rt_arb_internal *arb, /* needs wdb.h */ - int cgtype, - const plane_t planes[6], - const struct bn_tol *tol) +rt_arb_calc_points(struct rt_arb_internal *arb, int cgtype, const plane_t planes[6], const struct bn_tol *tol __attribute__((unused))) { int i; point_t pt[8]; @@ -2019,7 +2027,7 @@ /* calculate edge direction */ VSUB2(edge_dir, arb->pt[pt2], arb->pt[pt1]); - if (MAGNITUDE(edge_dir) == 0.0) + if (NEAR_ZERO(MAGNITUDE(edge_dir), SMALL_FASTF)) goto err; /* bounding planes bp1, bp2 */ @@ -2134,6 +2142,9 @@ int rt_arb_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/arbn/arbn.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-12-02 20:58:26 UTC (rev 36774) +++ brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-12-02 21:08:10 UTC (rev 36775) @@ -56,7 +56,7 @@ struct rt_arbn_internal *aip; vect_t work; fastf_t f; - register int i; + int i; int j; int k; int *used = (int *)0; /* plane eqn use count */ @@ -98,7 +98,7 @@ /* Have an edge line, isect with higher numbered planes */ for (k=j+1; k<aip->neqn; k++) { - register int m; + int m; point_t pt; int next_k; @@ -156,8 +156,22 @@ * R T _ A R B N _ P R I N T */ void -rt_arbn_print(register const struct soltab *stp) +rt_arbn_print(const struct soltab *stp) { + int i; + struct rt_arbn_internal *arbp = (struct rt_arbn_internal *)stp->st_specific; + + RT_ARBN_CK_MAGIC(arbp); + bu_log("arbn bounded by %d planes\n", arbp->neqn); + + for (i=0; i < arbp->neqn; i++) { + bu_log("\t%d: (%g, %g, %g) %g\n", + i, + INTCLAMP(arbp->eqn[i][X]), /* should have unit length */ + INTCLAMP(arbp->eqn[i][Y]), + INTCLAMP(arbp->eqn[i][Z]), + INTCLAMP(arbp->eqn[i][W])); + } } @@ -173,11 +187,11 @@ * >0 HIT */ int -rt_arbn_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) +rt_arbn_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct rt_arbn_internal *aip = + struct rt_arbn_internal *aip = (struct rt_arbn_internal *)stp->st_specific; - register int i; + int i; int iplane, oplane; fastf_t in, out; /* ray in/out distances */ @@ -226,7 +240,7 @@ return(0); /* MISS */ { - register struct seg *segp; + struct seg *segp; RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -246,10 +260,10 @@ */ void rt_arbn_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ +/* An array of solid pointers */ +/* An array of ray pointers */ +/* array of segs (results returned) */ +/* Number of ray/object pairs */ { rt_vstub(stp, rp, segp, n, ap); @@ -262,9 +276,9 @@ * Given ONE ray distance, return the normal and entry/exit point. */ void -rt_arbn_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_arbn_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { - register struct rt_arbn_internal *aip = + struct rt_arbn_internal *aip = (struct rt_arbn_internal *)stp->st_specific; int h; @@ -287,9 +301,12 @@ * indicate no curvature. */ void -rt_arbn_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_arbn_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + struct rt_arbn_internal *arbn = (struct rt_arbn_internal *)stp->st_specific; + RT_ARBN_CK_MAGIC(arbn); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; } @@ -304,10 +321,18 @@ * v extends along the arb_V direction defined by Nx(B-A). */ void -rt_arbn_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_arbn_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - uvp->uv_u = uvp->uv_v = 0; - uvp->uv_du = uvp->uv_dv = 0; + struct rt_arbn_internal *arbn = (struct rt_arbn_internal *)stp->st_specific; + + if (ap) RT_CK_APPLICATION(ap); + RT_ARBN_CK_MAGIC(arbn); + if (hitp) RT_CK_HIT(hitp); + + if (uvp) { + uvp->uv_u = uvp->uv_v = 0; + uvp->uv_du = uvp->uv_dv = 0; + } } @@ -315,9 +340,9 @@ * R T _ A R B N _ F R E E */ void -rt_arbn_free(register struct soltab *stp) +rt_arbn_free(struct soltab *stp) { - register struct rt_arbn_internal *aip = + struct rt_arbn_internal *aip = (struct rt_arbn_internal *)stp->st_specific; bu_free((char *)aip->eqn, "rt_arbn_internal eqn[]"); @@ -337,12 +362,12 @@ * Note that the vectors will be drawn in no special order. */ int -rt_arbn_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_arbn_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { - register struct rt_arbn_internal *aip; - register int i; - register int j; - register int k; + struct rt_arbn_internal *aip; + int i; + int j; + int k; RT_CK_DB_INTERNAL(ip); aip = (struct rt_arbn_internal *)ip->idb_ptr; @@ -362,7 +387,7 @@ /* Have an edge line, isect with all other planes */ point_count = 0; for (k=0; k<aip->neqn; k++) { - register int m; + int m; point_t pt; int next_k; @@ -503,7 +528,7 @@ /** * R T _ A R B N _ T E S S * - * "Tessellate" an ARB into an NMG data structure. + * "Tessellate" an ARB into an NMG data structure. * Purely a mechanical transformation of one faceted object * into another. * @@ -512,7 +537,7 @@ * 0 OK. *r points to nmgregion that holds this tessellation. */ int -rt_arbn_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_arbn_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { struct rt_arbn_internal *aip; struct shell *s; @@ -745,7 +770,7 @@ return(0); - fail: +fail: bu_free((char *)pts, "rt_arbn_tess: pts"); bu_free((char *)edges, "rt_arbn_tess: edges"); bu_free((char *)edge_count, "rt_arbn_tess: edge_count"); @@ -761,12 +786,14 @@ * Transform */ int -rt_arbn_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_arbn_import4(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { union record *rp; struct rt_arbn_internal *aip; - register int i; + int i; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; if (rp->u_id != DBID_ARBN) { @@ -828,9 +855,11 @@ union record *rec; int ngrans; double *sbuf; /* scalling buffer */ - register double *sp; - register int i; + double *sp; + int i; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ARBN) return(-1); aip = (struct rt_arbn_internal *)ip->idb_ptr; @@ -879,15 +908,17 @@ * Transform */ int -rt_arbn_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_arbn_import5(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { struct rt_arbn_internal *aip; - register int i; + int i; unsigned long neqn; int double_count; int byte_count; + RT_CK_DB_INTERNAL(ip); BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); neqn = bu_glong((unsigned char *)ep->ext_buf); double_count = neqn * ELEMENTS_PER_PLANE; @@ -895,7 +926,6 @@ BU_ASSERT_LONG(ep->ext_nbytes, ==, 4+ byte_count); - RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; ip->idb_type = ID_ARBN; ip->idb_meth = &rt_functab[ID_ARBN]; @@ -947,13 +977,15 @@ rt_arbn_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) { struct rt_arbn_internal *aip; - register int i; + int i; fastf_t *vec; - register fastf_t *sp; + fastf_t *sp; int double_count; int byte_count; RT_CK_DB_INTERNAL(ip); + if (dbip) RT_CK_DBI(dbip); + if (ip->idb_type != ID_ARBN) return(-1); aip = (struct rt_arbn_internal *)ip->idb_ptr; RT_ARBN_CK_MAGIC(aip); @@ -997,7 +1029,7 @@ int rt_arbn_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_arbn_internal *aip = + struct rt_arbn_internal *aip = (struct rt_arbn_internal *)ip->idb_ptr; char buf[256]; int i; @@ -1056,42 +1088,42 @@ * no arguments returns everything */ int -rt_arbn_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) +rt_arbn_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { - register struct rt_arbn_internal *arbn=(struct rt_arbn_internal *)intern->idb_ptr; + struct rt_arbn_internal *arbn=(struct rt_arbn_internal *)intern->idb_ptr; int i; RT_ARBN_CK_MAGIC(arbn); if (attr == (char *)NULL) { - bu_vls_strcpy(log, "arbn"); - bu_vls_printf(log, " N %d", arbn->neqn); + bu_vls_strcpy(logstr, "arbn"); + bu_vls_printf(logstr, " N %d", arbn->neqn); for (i=0; i<arbn->neqn; i++) { - bu_vls_printf(log, " P%d {%.25g %.25g %.25g %.25g}", i, + bu_vls_printf(logstr, " P%d {%.25g %.25g %.25g %.25g}", i, V4ARGS(arbn->eqn[i])); } } else if (!strcmp(attr, "N")) { - bu_vls_printf(log, "%d", arbn->neqn); + bu_vls_printf(logstr, "%d", arbn->neqn); } else if (!strcmp(attr, "P")) { for (i=0; i<arbn->neqn; i++) { - bu_vls_printf(log, " P%d {%.25g %.25g %.25g %.25g}", i, + bu_vls_printf(logstr, " P%d {%.25g %.25g %.25g %.25g}", i, V4ARGS(arbn->eqn[i])); } } else if (attr[0] == 'P') { if (isdigit(attr[1]) == 0) { - bu_vls_printf(log, "ERROR: Illegal plane number\n"); + bu_vls_printf(logstr, "ERROR: Illegal plane number\n"); return BRLCAD_ERROR; } i = atoi(&attr[1]); if (i >= arbn->neqn || i < 0) { - bu_vls_printf(log, "ERROR: Illegal plane number\n"); + bu_vls_printf(logstr, "ERROR: Illegal plane number\n"); return BRLCAD_ERROR; } - bu_vls_printf(log, "%.25g %.25g %.25g %.25g", V4ARGS(arbn->eqn[i])); + bu_vls_printf(logstr, "%.25g %.25g %.25g %.25g", V4ARGS(arbn->eqn[i])); } else { - bu_vls_printf(log, "ERROR: Unknown attribute, choices are N, P, or P#\n"); + bu_vls_printf(logstr, "ERROR: Unknown attribute, choices are N, P, or P#\n"); return BRLCAD_ERROR; } @@ -1111,7 +1143,7 @@ * "P+" - add a new plane to the list of planes */ int -rt_arbn_adjust(struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) +rt_arbn_adjust(struct bu_vls *logstr, struct rt_db_internal *intern, int argc, char **argv) { struct rt_arbn_internal *arbn; unsigned char *c; @@ -1139,7 +1171,7 @@ } arbn->neqn = i; } else { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: number of planes must be greater than 0\n"); } } else if (!strcmp(argv[0], "P")) { @@ -1154,7 +1186,7 @@ (void)tcl_list_to_fastf_array(brlcad_interp, argv[1], &new_planes, &len); if (len%4) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: Incorrect number of plane coefficients\n"); if (len) bu_free((char *)new_planes, "new_planes"); @@ -1176,12 +1208,12 @@ } else if (isdigit(argv[0][1])) { i = atoi(&argv[0][1]); } else { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: illegal argument, choices are P, P#, P+, or N\n"); return(TCL_ERROR); } if (i < 0 || i >= arbn->neqn) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: plane number out of range\n"); return BRLCAD_ERROR; } @@ -1189,13 +1221,13 @@ array = (fastf_t *)&arbn->eqn[i]; if (tcl_list_to_fastf_array(brlcad_interp, argv[1], &array, &len) != 4) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: incorrect number of coefficients for a plane\n"); return BRLCAD_ERROR; } VUNITIZE(arbn->eqn[i]); } else { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: illegal argument, choices are P, P#, P+, or N\n"); return BRLCAD_ERROR; } @@ -1212,8 +1244,16 @@ * */ int -rt_arbn_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_arbn_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + struct rt_arbn_internal *aip; + + RT_CK_DB_INTERNAL(ip); + aip = (struct rt_arbn_internal *)ip->idb_ptr; + RT_ARBN_CK_MAGIC(aip); + + ps = ps; /* quellage */ + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c 2009-12-02 20:58:26 UTC (rev 36774) +++ brlcad/trunk/src/librt/primitives/arbn/arbn_mirror.c 2009-12-02 21:08:10 UTC (rev 36775) @@ -40,6 +40,7 @@ { struct rt_arbn_internal *arbn; + int i; mat_t mirmat; mat_t rmat; mat_t temp; @@ -49,8 +50,6 @@ point_t mirror_pt; fastf_t ang; - int i, j; - static point_t origin = {0.0, 0.0, 0.0}; RT_CK_DB_INTERNAL(ip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2009-12-10 16:23:42
|
Revision: 36858 http://brlcad.svn.sourceforge.net/brlcad/?rev=36858&view=rev Author: erikgreenwald Date: 2009-12-10 16:23:30 +0000 (Thu, 10 Dec 2009) Log Message: ----------- rt_metaball_get (for g2asc) Modified Paths: -------------- brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-10 15:08:57 UTC (rev 36857) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-10 16:23:30 UTC (rev 36858) @@ -849,7 +849,24 @@ return 0; /* OK */ } +int +rt_metaball_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) +{ + struct rt_metaball_internal *mb=(struct rt_metaball_internal *)intern->idb_ptr; + struct wdb_metaballpt *mbpt; + RT_METABALL_CK_MAGIC(mb); + + /* write crap in */ + bu_vls_printf(log, "metaball %d %.25G {", mb->method, mb->threshold); + for (BU_LIST_FOR(mbpt, wdb_metaballpt, &mb->metaball_ctrl_head)) + bu_vls_printf(log, " { %.25G %.25G %.25G %.25G %.25G }", + V3ARGS(mbpt->coord), mbpt->fldstr, mbpt->sweat); + bu_vls_printf(log, "}"); + + return 0; +} + /* * Local Variables: * mode: C Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-10 15:08:57 UTC (rev 36857) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-10 16:23:30 UTC (rev 36858) @@ -346,6 +346,10 @@ struct resource *resp)); BU_EXTERN(int rt_bot_form, (struct bu_vls *log, const struct rt_functab *ftp)); +/* METABALL solid */ +BU_EXTERN(int rt_metaball_get, (struct bu_vls *log, + const struct rt_db_internal *intern, const char *attr)); + /* SKETCH */ BU_EXTERN(int rt_sketch_get, (struct bu_vls *log, const struct rt_db_internal *intern, const char *attr)); @@ -921,7 +925,7 @@ rt_nul_import4, rt_nul_export4, rt_metaball_ifree, rt_metaball_describe, rt_metaball_xform, rt_nul_parse, sizeof(struct rt_metaball_internal), RT_METABALL_INTERNAL_MAGIC, - rt_parsetab_get, rt_parsetab_adjust, rt_parsetab_form, + rt_metaball_get, rt_parsetab_adjust, rt_parsetab_form, NULL, rt_metaball_params, }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2009-12-15 19:11:47
|
Revision: 36914 http://brlcad.svn.sourceforge.net/brlcad/?rev=36914&view=rev Author: erikgreenwald Date: 2009-12-15 19:11:37 +0000 (Tue, 15 Dec 2009) Log Message: ----------- implement rt_metaball_adjust for asc2g Modified Paths: -------------- brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/nmg/nmg_tri_mc.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-15 19:11:28 UTC (rev 36913) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-15 19:11:37 UTC (rev 36914) @@ -849,6 +849,11 @@ return 0; /* OK */ } +/** + * R T _ M E T A B A L L _ G E T + * + * db get/g2asc + */ int rt_metaball_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) { @@ -860,13 +865,68 @@ /* write crap in */ bu_vls_printf(log, "metaball %d %.25G {", mb->method, mb->threshold); for (BU_LIST_FOR(mbpt, wdb_metaballpt, &mb->metaball_ctrl_head)) - bu_vls_printf(log, " { %.25G %.25G %.25G %.25G %.25G }", + bu_vls_printf(log, "{%.25G %.25G %.25G %.25G %.25G}", V3ARGS(mbpt->coord), mbpt->fldstr, mbpt->sweat); bu_vls_printf(log, "}"); return 0; } +/** + * R T _ M E T A B A L L _ A D J U S T + * + * used for db put/asc2g + */ +int +rt_metaball_adjust (struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) +{ + struct rt_metaball_internal *mb; + char *pts, *pend;; + + if(argc != 3) { + bu_vls_printf(log, "Invalid number of arguments: %d\n", argc); + return BRLCAD_ERROR; + } + + RT_CK_DB_INTERNAL(intern); + mb = (struct rt_metaball_internal *)intern->idb_ptr; + RT_METABALL_CK_MAGIC(mb); + + if( strlen(*argv) != 1 || (**argv < '0' || **argv > '2') ) { + bu_vls_printf(log, "Invalid method type, must be one of 0, 1, or 2."); + return BRLCAD_ERROR; + } + mb->method = *argv[0] - '0'; + sscanf(argv[1], "%lG", &mb->threshold); + BU_LIST_INIT(&mb->metaball_ctrl_head); + + pts = argv[2]; + pend = pts + strlen(pts); + + while(1) { + point_t loc; + fastf_t fldstr, goo; + int len; + + while( pts < pend && *pts != '{' ) ++pts; + if(pts >= pend) break; + len = sscanf(pts, "{%lG %lG %lG %lG %lG}", loc+X, loc+Y, loc+Z, &fldstr, &goo); + if(len == EOF) break; + if(len != 5) { + bu_vls_printf(log, "Failed to parse point information: \"%s\"", pts); + return BRLCAD_ERROR; + } + pts++; + if(rt_metaball_add_point (mb, (const point_t *)&loc, fldstr, goo)) { + bu_vls_printf(log, "Failure adding point: {%f %f %f %f %f}", V3ARGS(loc), fldstr, goo); + return BRLCAD_ERROR; + } + } + + return BRLCAD_OK; +} + + /* * Local Variables: * mode: C Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_tri_mc.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_tri_mc.c 2009-12-15 19:11:28 UTC (rev 36913) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_tri_mc.c 2009-12-15 19:11:37 UTC (rev 36914) @@ -30,6 +30,9 @@ /* rough game plan * [ ] develop/proof metaball primitive tesselation using MC * [ ] asc-g/g-asc of metaballs for regression/comparison testing + * [X] asc-g + * [X] g-asc + * [ ] regression shtuff * [ ] edge solve cubes * [ ] write compiled table shtuff (use existing table, the hex/index one?) * [ ] produce NMG mesh Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-15 19:11:28 UTC (rev 36913) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-15 19:11:37 UTC (rev 36914) @@ -349,6 +349,8 @@ /* METABALL solid */ BU_EXTERN(int rt_metaball_get, (struct bu_vls *log, const struct rt_db_internal *intern, const char *attr)); +BU_EXTERN(int rt_metaball_adjust, (struct bu_vls *log, + struct rt_db_internal *intern, int argc, char **argv)); /* SKETCH */ BU_EXTERN(int rt_sketch_get, (struct bu_vls *log, @@ -925,7 +927,7 @@ rt_nul_import4, rt_nul_export4, rt_metaball_ifree, rt_metaball_describe, rt_metaball_xform, rt_nul_parse, sizeof(struct rt_metaball_internal), RT_METABALL_INTERNAL_MAGIC, - rt_metaball_get, rt_parsetab_adjust, rt_parsetab_form, + rt_metaball_get, rt_metaball_adjust, rt_parsetab_form, NULL, rt_metaball_params, }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-16 15:58:43
|
Revision: 36923 http://brlcad.svn.sourceforge.net/brlcad/?rev=36923&view=rev Author: brlcad Date: 2009-12-16 15:58:26 +0000 (Wed, 16 Dec 2009) Log Message: ----------- remove the stubbed in tnurb functions, as they're all about to go away. these can go away even sooner, though, given the unused parameter warnings they cause. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/superell/superell.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-16 15:56:43 UTC (rev 36922) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-16 15:58:26 UTC (rev 36923) @@ -808,17 +808,6 @@ /** - * R T _ M E T A B A L L _ T N U R B - */ -int -rt_metaball_tnurb(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol) -{ - bu_log("ERROR: rt_metaball_tnurb() is not implemented\n"); - return 0; -} - - -/** * R T _ M E T A B A L L _ A D D _ P O I N T * * Add a single point to an existing metaball. Modified: brlcad/trunk/src/librt/primitives/superell/superell.c =================================================================== --- brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-16 15:56:43 UTC (rev 36922) +++ brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-16 15:58:26 UTC (rev 36923) @@ -1032,17 +1032,6 @@ /** - * R T _ S U P E R E L L _ T N U R B - */ -int -rt_superell_tnurb(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct bn_tol *tol) -{ - bu_log("rt_superell_tnurb called!\n"); - return 0; -} - - -/** * R T _ S U P E R E L L _ P A R A M S * */ Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-16 15:56:43 UTC (rev 36922) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-16 15:58:26 UTC (rev 36923) @@ -820,7 +820,7 @@ rt_cline_prep, rt_cline_shot, rt_cline_print, rt_cline_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_cline_uv, rt_cline_curve, rt_cline_class, rt_cline_free, - rt_cline_plot, rt_cline_vshot, rt_cline_tess, rt_cline_tnurb, + rt_cline_plot, rt_cline_vshot, rt_cline_tess, rt_nul_tnurb, rt_cline_import5, rt_cline_export5, rt_cline_import4, rt_cline_export4, rt_cline_ifree, rt_cline_describe, rt_cline_xform, rt_cline_parse, @@ -834,7 +834,7 @@ rt_bot_prep, rt_bot_shot, rt_bot_print, rt_bot_norm, rt_bot_piece_shot, rt_bot_piece_hitsegs, rt_bot_uv, rt_bot_curve, rt_bot_class, rt_bot_free, - rt_bot_plot, rt_bot_vshot, rt_bot_tess, rt_bot_tnurb, + rt_bot_plot, rt_bot_vshot, rt_bot_tess, rt_nul_tnurb, rt_bot_import5, rt_bot_export5, rt_bot_import4, rt_bot_export4, rt_bot_ifree, rt_bot_describe, rt_bot_xform, NULL, @@ -908,7 +908,7 @@ rt_superell_prep, rt_superell_shot, rt_superell_print, rt_superell_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_superell_uv, rt_superell_curve, rt_superell_class, rt_superell_free, - rt_superell_plot, rt_superell_vshot, rt_superell_tess, rt_superell_tnurb, + rt_superell_plot, rt_superell_vshot, rt_superell_tess, rt_nul_tnurb, rt_superell_import5, rt_superell_export5, rt_superell_import4, rt_superell_export4, rt_superell_ifree, rt_superell_describe, rt_superell_xform, rt_superell_parse, @@ -922,7 +922,7 @@ rt_metaball_prep, rt_metaball_shot, rt_metaball_print, rt_metaball_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_metaball_uv, rt_metaball_curve, rt_metaball_class, rt_metaball_free, - rt_metaball_plot, rt_nul_vshot, rt_metaball_tess, rt_metaball_tnurb, + rt_metaball_plot, rt_nul_vshot, rt_metaball_tess, rt_nul_tnurb, rt_metaball_import5, rt_metaball_export5, rt_nul_import4, rt_nul_export4, rt_metaball_ifree, rt_metaball_describe, rt_metaball_xform, rt_nul_parse, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <eri...@us...> - 2009-12-16 21:22:42
|
Revision: 36929 http://brlcad.svn.sourceforge.net/brlcad/?rev=36929&view=rev Author: erikgreenwald Date: 2009-12-16 21:22:28 +0000 (Wed, 16 Dec 2009) Log Message: ----------- fix metaball_adjust prototype Modified Paths: -------------- brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-16 21:19:08 UTC (rev 36928) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-16 21:22:28 UTC (rev 36929) @@ -867,7 +867,7 @@ * used for db put/asc2g */ int -rt_metaball_adjust (struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) +rt_metaball_adjust (struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv, struct resource *resp) { struct rt_metaball_internal *mb; char *pts, *pend;; Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-16 21:19:08 UTC (rev 36928) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-16 21:22:28 UTC (rev 36929) @@ -350,7 +350,8 @@ BU_EXTERN(int rt_metaball_get, (struct bu_vls *log, const struct rt_db_internal *intern, const char *attr)); BU_EXTERN(int rt_metaball_adjust, (struct bu_vls *log, - struct rt_db_internal *intern, int argc, char **argv)); + struct rt_db_internal *intern, int argc, char **argv, + struct resource *resp)); /* SKETCH */ BU_EXTERN(int rt_sketch_get, (struct bu_vls *log, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-21 23:02:37
|
Revision: 36956 http://brlcad.svn.sourceforge.net/brlcad/?rev=36956&view=rev Author: brlcad Date: 2009-12-21 23:02:26 +0000 (Mon, 21 Dec 2009) Log Message: ----------- quell verbose compilation warnings, mostly unused/unchecked params and missing structparse initializers and sign warnings Modified Paths: -------------- brlcad/trunk/src/librt/primitives/dsp/dsp.c brlcad/trunk/src/librt/primitives/ebm/ebm.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ell/ell.c brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/eto/eto.c brlcad/trunk/src/librt/primitives/grip/grip.c brlcad/trunk/src/librt/primitives/half/half.c brlcad/trunk/src/librt/primitives/hf/hf.c brlcad/trunk/src/librt/primitives/hyp/hyp.c brlcad/trunk/src/librt/primitives/part/part.c brlcad/trunk/src/librt/primitives/revolve/revolve.h brlcad/trunk/src/librt/primitives/rhc/rhc.c brlcad/trunk/src/librt/primitives/rpc/rpc.c brlcad/trunk/src/librt/primitives/submodel/submodel.c brlcad/trunk/src/librt/primitives/superell/superell.c brlcad/trunk/src/librt/primitives/table.c brlcad/trunk/src/librt/primitives/tgc/tgc.c brlcad/trunk/src/librt/primitives/tor/tor.c brlcad/trunk/src/librt/primitives/vol/vol.c Modified: brlcad/trunk/src/librt/primitives/dsp/dsp.c =================================================================== --- brlcad/trunk/src/librt/primitives/dsp/dsp.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/dsp/dsp.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -105,8 +105,8 @@ */ #define LAYER(l, x, y) l->p[l->dim[1]*y+x] struct dsp_bb_layer { - int dim[2]; /* the dimensions of the array at element p */ - struct dsp_bb *p; /* array of dsp_bb's for this level */ + unsigned int dim[2]; /* the dimensions of the array at element p */ + struct dsp_bb *p; /* array of dsp_bb's for this level */ }; @@ -232,10 +232,14 @@ const struct bu_structparse *ip, const char *sp_name, genptr_t base, - char *p) + char *p __attribute__((unused))) { struct rt_dsp_internal *dsp_ip = (struct rt_dsp_internal *)base; + if (ip) RT_CK_DB_INTERNAL(ip); + if (!sp_name) return; + if (!base) return; + bn_mat_inv(dsp_ip->dsp_mtos, dsp_ip->dsp_stom); } @@ -245,10 +249,14 @@ const struct bu_structparse *ip, const char *sp_name, genptr_t base, - char *p) + char *p __attribute__((unused))) { struct rt_dsp_internal *dsp_ip = (struct rt_dsp_internal *)base; + if (ip) RT_CK_DB_INTERNAL(ip); + if (!sp_name) return; + if (!base) return; + dsp_ip->dsp_datasrc = RT_DSP_SRC_V4_FILE; dsp_ip->dsp_bip = (struct rt_db_internal *)NULL; } @@ -259,23 +267,23 @@ /** only used when editing a v4 database */ const struct bu_structparse rt_dsp_parse[] = { - {"%V", 1, "file", DSP_O(dsp_name), hook_file }, - {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 16, "stom", DSP_AO(dsp_stom), hook_mtos_from_stom }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%V", 1, "file", DSP_O(dsp_name), hook_file, NULL, NULL }, + {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 16, "stom", DSP_AO(dsp_stom), hook_mtos_from_stom, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; /** only used when editing a v4 database */ const struct bu_structparse rt_dsp_ptab[] = { - {"%V", 1, "file", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL }, - {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 16, "stom", DSP_AO(dsp_stom), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%V", 1, "file", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "w", DSP_O(dsp_xcnt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", DSP_O(dsp_ycnt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 16, "stom", DSP_AO(dsp_stom), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; @@ -382,7 +390,8 @@ plot_layers(struct dsp_specific *dsp_sp) { FILE *fp; - int l, x, y, n; + int l, n; + unsigned int x, y; char buf[32]; static int colors[7][3] = { {255, 0, 0}, @@ -672,7 +681,8 @@ HIDDEN void dsp_layers(struct dsp_specific *dsp, unsigned short *d_min, unsigned short *d_max) { - int idx, i, j, k, curr_layer, x, y, xs, ys, xv, yv, tot; + int idx, curr_layer, xs, ys, xv, yv, tot; + unsigned int x, y, i, j, k; unsigned short dsp_min, dsp_max, cell_min, cell_max; unsigned short elev; struct dsp_bb *dsp_bb; @@ -906,6 +916,8 @@ if (RT_G_DEBUG & DEBUG_HF) bu_log("rt_dsp_prep()\n"); + if (rtip) RT_CK_RTI(rtip); + RT_CK_DB_INTERNAL(ip); dsp_ip = (struct rt_dsp_internal *)ip->idb_ptr; RT_DSP_CK_MAGIC(dsp_ip); @@ -2116,9 +2128,9 @@ recurse_dsp_bb(struct isect_stuff *isect, struct dsp_bb *dsp_bb, point_t minpt, /* entry point of dsp_bb */ - point_t maxpt, /* exit point of dsp_bb */ + point_t maxpt __attribute__((unused)), /* exit point of dsp_bb */ point_t bbmin, /* min point of bb (Z=0) */ - point_t bbmax) /* max point of bb */ + point_t bbmax __attribute__((unused))) /* max point of bb */ { double tDX; /* dist along ray to span 1 cell in X dir */ double tDY; /* dist along ray to span 1 cell in Y dir */ @@ -2651,10 +2663,9 @@ HIDDEN void compute_normal_at_gridpoint(vect_t N, struct dsp_specific *dsp, - int x, - int y, + unsigned int x, + unsigned int y, FILE *fd, - int boolean, double len) { /* Gridpoint specified is "B" we compute normal by taking the @@ -2858,11 +2869,10 @@ x = hitp->hit_vpriv[X]; y = hitp->hit_vpriv[Y]; - compute_normal_at_gridpoint(Anorm, dsp, x, y, fd, 1, len); - compute_normal_at_gridpoint(Anorm, dsp, x, y, fd, 0, len); - compute_normal_at_gridpoint(Bnorm, dsp, x+1, y, fd, 0, len); - compute_normal_at_gridpoint(Dnorm, dsp, x+1, y+1, fd, 0, len); - compute_normal_at_gridpoint(Cnorm, dsp, x, y+1, fd, 0, len); + compute_normal_at_gridpoint(Anorm, dsp, x, y, fd, len); + compute_normal_at_gridpoint(Bnorm, dsp, x+1, y, fd, len); + compute_normal_at_gridpoint(Dnorm, dsp, x+1, y+1, fd, len); + compute_normal_at_gridpoint(Cnorm, dsp, x, y+1, fd, len); /* transform the hit point into DSP space for determining * interpolation @@ -2952,6 +2962,7 @@ void rt_dsp_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { + if (stp) RT_CK_SOLTAB(stp); if (RT_G_DEBUG & DEBUG_HF) bu_log("rt_dsp_curve()\n"); @@ -3108,17 +3119,17 @@ * R T _ D S P _ P L O T */ int -rt_dsp_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_dsp_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { struct rt_dsp_internal *dsp_ip = (struct rt_dsp_internal *)ip->idb_ptr; point_t m_pt; point_t s_pt; point_t o_pt; - int x, y; + unsigned int x, y; int step; - int xlim = dsp_ip->dsp_xcnt - 1; - int ylim = dsp_ip->dsp_ycnt - 1; + unsigned int xlim = dsp_ip->dsp_xcnt - 1; + unsigned int ylim = dsp_ip->dsp_ycnt - 1; int xfudge, yfudge; int drawing; @@ -3234,7 +3245,7 @@ /* now draw the body of the top */ if (ttol->rel) { - int rstep; + unsigned int rstep; rstep = dsp_ip->dsp_xcnt; V_MAX(rstep, dsp_ip->dsp_ycnt); step = (int)(ttol->rel * rstep); @@ -3413,7 +3424,6 @@ */ int height[8]; int xx, yy; - double h1, h2, h3, h4; double c02, c13; /* curvature in direction 0<->2, and 1<->3 */ if (dsp_ip->dsp_cuttype != DSP_CUT_DIR_ADAPT) { @@ -3479,7 +3489,7 @@ * 0 OK. *r points to nmgregion that holds this tessellation. */ int -rt_dsp_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_dsp_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { struct rt_dsp_internal *dsp_ip; struct shell *s; @@ -3981,11 +3991,7 @@ * !0 Failure */ HIDDEN int -get_file_data(struct rt_dsp_internal *dsp_ip, - struct rt_db_internal *ip, - const struct bu_external *ep, - register const mat_t mat, - const struct db_i *dbip) +get_file_data(struct rt_dsp_internal *dsp_ip, const struct db_i *dbip) { struct bu_mapped_file *mf; int count, in_cookie, out_cookie; @@ -4002,7 +4008,7 @@ return 0; } - if (dsp_ip->dsp_mp->buflen != dsp_ip->dsp_xcnt*dsp_ip->dsp_ycnt*2) { + if ((size_t)dsp_ip->dsp_mp->buflen != (size_t)(dsp_ip->dsp_xcnt*dsp_ip->dsp_ycnt*2)) { bu_log("DSP buffer wrong size: %d s/b %d ", dsp_ip->dsp_mp->buflen, dsp_ip->dsp_xcnt*dsp_ip->dsp_ycnt*2); return -1; @@ -4040,11 +4046,7 @@ * Retrieve data for DSP from a database object. */ HIDDEN int -get_obj_data(struct rt_dsp_internal *dsp_ip, - struct rt_db_internal *ip, - const struct bu_external *ep, - register const mat_t mat, - const struct db_i *dbip) +get_obj_data(struct rt_dsp_internal *dsp_ip, const struct db_i *dbip) { struct rt_binunif_internal *bip; int in_cookie, out_cookie, got; @@ -4104,11 +4106,7 @@ * !0 failure */ HIDDEN int -dsp_get_data(struct rt_dsp_internal *dsp_ip, - struct rt_db_internal *ip, - const struct bu_external *ep, - register const mat_t mat, - const struct db_i *dbip) +dsp_get_data(struct rt_dsp_internal *dsp_ip, const mat_t mat, const struct db_i *dbip) { mat_t tmp; char *p; @@ -4128,7 +4126,7 @@ if (RT_G_DEBUG & DEBUG_HF) bu_log("getting data from file \"%s\"\n", p); - if (get_file_data(dsp_ip, ip, ep, mat, dbip) != 0) { + if (get_file_data(dsp_ip, dbip) != 0) { p = "file"; } else { return 0; @@ -4140,7 +4138,7 @@ if (RT_G_DEBUG & DEBUG_HF) bu_log("getting data from object \"%s\"\n", p); - if (get_obj_data(dsp_ip, ip, ep, mat, dbip) != 0) { + if (get_obj_data(dsp_ip, dbip) != 0) { p = "object"; } else { RT_CK_DB_INTERNAL(dsp_ip->dsp_bip); @@ -4240,7 +4238,7 @@ } if (mat == NULL) mat = bn_mat_identity; - if (dsp_get_data(dsp_ip, ip, ep, mat, dbip)!=0) { + if (dsp_get_data(dsp_ip, mat, dbip)!=0) { IMPORT_FAIL("unable to load displacement map data"); } @@ -4273,6 +4271,7 @@ union record *rec; struct bu_vls str; + if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_DSP) return(-1); @@ -4280,7 +4279,6 @@ RT_DSP_CK_MAGIC(dsp_ip); BU_CK_VLS(&dsp_ip->dsp_name); - BU_CK_EXTERNAL(ep); ep->ext_nbytes = sizeof(union record)*DB_SS_NGRAN; ep->ext_buf = bu_calloc(1, ep->ext_nbytes, "dsp external"); @@ -4317,11 +4315,13 @@ * Apply modeling transformations as well. */ int -rt_dsp_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip, struct resource *resp, const int minor_type) +rt_dsp_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip, struct resource *resp, const int minor_type __attribute__((unused))) { struct rt_dsp_internal *dsp_ip; unsigned char *cp; + if (resp) RT_CK_RESOURCE(resp); + if (RT_G_DEBUG & DEBUG_HF) bu_log("rt_dsp_import4_v5()\n"); @@ -4405,7 +4405,7 @@ ep->ext_nbytes - (cp - (unsigned char *)ep->ext_buf)); if (mat == NULL) mat = bn_mat_identity; - if (dsp_get_data(dsp_ip, ip, ep, mat, dbip)!=0) { + if (dsp_get_data(dsp_ip, mat, dbip)!=0) { IMPORT_FAIL("unable to load displacement map data"); } @@ -4419,13 +4419,16 @@ * The name is added by the caller, in the usual place. */ int -rt_dsp_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip, struct resource *resp, const int minor_type) +rt_dsp_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip, struct resource *resp, const int minor_type __attribute__((unused))) { struct rt_dsp_internal *dsp_ip; unsigned long name_len; unsigned char *cp; int rem; + if (resp) RT_CK_RESOURCE(resp); + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_DSP) return(-1); dsp_ip = (struct rt_dsp_internal *)ip->idb_ptr; @@ -4518,8 +4521,8 @@ int rt_dsp_describe(struct bu_vls *str, const struct rt_db_internal *ip, - int verbose, - double mm2local, + int verbose __attribute__((unused)), + double mm2local __attribute__((unused)), struct resource *resp, struct db_i *db_ip) { @@ -4527,7 +4530,8 @@ (struct rt_dsp_internal *)ip->idb_ptr; struct bu_vls vls; - RT_CK_DBI(db_ip); + if (resp) RT_CK_RESOURCE(resp); + if (db_ip) RT_CK_DBI(db_ip); bu_vls_init(&vls); @@ -4572,6 +4576,7 @@ if (!resp) { resp = &rt_uniresource; } + if (resp) RT_CK_RESOURCE(resp); dsp_ip = (struct rt_dsp_internal *)ip->idb_ptr; RT_DSP_CK_MAGIC(dsp_ip); @@ -4600,13 +4605,15 @@ HIDDEN void -hook_verify(const struct bu_structparse *ip, +hook_verify(const struct bu_structparse *sp, const char *sp_name, genptr_t base, - char *p) + char *p __attribute__((unused))) { struct rt_dsp_internal *dsp_ip = (struct rt_dsp_internal *)base; + if (!sp || !sp_name || !base) return; + if (!strcmp(sp_name, "src")) { switch (dsp_ip->dsp_datasrc) { case RT_DSP_SRC_V4_FILE: @@ -4646,14 +4653,14 @@ const struct bu_structparse fake_dsp_printab[] = { - {"%c", 1, "src", DSP_O(dsp_datasrc), hook_verify }, - {"%V", 1, "name", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "w", DSP_O(dsp_xcnt), hook_verify }, - {"%d", 1, "n", DSP_O(dsp_ycnt), hook_verify }, - {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL }, - {"%c", 1, "cut", DSP_O(dsp_cuttype), hook_verify }, - {"%f", 16, "stom", DSP_AO(dsp_stom), hook_verify }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%c", 1, "src", DSP_O(dsp_datasrc), hook_verify, NULL, NULL }, + {"%V", 1, "name", DSP_O(dsp_name), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "w", DSP_O(dsp_xcnt), hook_verify, NULL, NULL }, + {"%d", 1, "n", DSP_O(dsp_ycnt), hook_verify, NULL, NULL }, + {"%i", 1, "sm", DSP_O(dsp_smooth), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%c", 1, "cut", DSP_O(dsp_cuttype), hook_verify, NULL, NULL }, + {"%f", 16, "stom", DSP_AO(dsp_stom), hook_verify, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; @@ -4763,7 +4770,7 @@ void -rt_dsp_make(const struct rt_functab *ftp, struct rt_db_internal *intern, double diameter) +rt_dsp_make(const struct rt_functab *ftp, struct rt_db_internal *intern, double diameter __attribute__((unused))) { struct rt_dsp_internal *dsp; @@ -4792,8 +4799,11 @@ * */ int -rt_dsp_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_dsp_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } @@ -4988,7 +4998,7 @@ { struct dsp_specific *dsp; point_t pt, tri_pt; - int x, y; + unsigned int x, y; int A[3], B[3], C[3], D[3]; struct dsp_rpp dsp_rpp; @@ -5009,8 +5019,8 @@ x = pt[X]; y = pt[Y]; - CLAMP(x, 0, XSIZ(dsp)-1); - CLAMP(y, 0, YSIZ(dsp)-1); + V_MIN(x, XSIZ(dsp)-1); + V_MIN(y, YSIZ(dsp)-1); if (RT_G_DEBUG & DEBUG_HF) bu_log("x:%d y:%d\n", x, y); Modified: brlcad/trunk/src/librt/primitives/ebm/ebm.c =================================================================== --- brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -63,12 +63,12 @@ #define RT_EBM_O(m) bu_offsetof(struct rt_ebm_internal, m) const struct bu_structparse rt_ebm_parse[] = { - {"%s", RT_EBM_NAME_LEN, "file", bu_offsetofarray(struct rt_ebm_internal, file), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "w", RT_EBM_O(xdim), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", RT_EBM_O(ydim), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "d", RT_EBM_O(tallness), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 16, "mat", bu_offsetofarray(struct rt_ebm_internal, mat), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%s", RT_EBM_NAME_LEN, "file", bu_offsetofarray(struct rt_ebm_internal, file), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "w", RT_EBM_O(xdim), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", RT_EBM_O(ydim), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "d", RT_EBM_O(tallness), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 16, "mat", bu_offsetofarray(struct rt_ebm_internal, mat), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/ehy/ehy.c =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -174,13 +174,13 @@ const struct bu_structparse rt_ehy_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_ehy_internal, ehy_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_ehy_internal, ehy_H[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_ehy_internal, ehy_Au[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_1", bu_offsetof(struct rt_ehy_internal, ehy_r1), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_2", bu_offsetof(struct rt_ehy_internal, ehy_r2), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "c", bu_offsetof(struct rt_ehy_internal, ehy_c), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_ehy_internal, ehy_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_ehy_internal, ehy_H[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_ehy_internal, ehy_Au[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_1", bu_offsetof(struct rt_ehy_internal, ehy_r1), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_2", bu_offsetof(struct rt_ehy_internal, ehy_r2), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "c", bu_offsetof(struct rt_ehy_internal, ehy_c), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/ell/ell.c =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -45,11 +45,11 @@ struct rt_i *rtip)); const struct bu_structparse rt_ell_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_ell_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_ell_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "B", bu_offsetof(struct rt_ell_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "C", bu_offsetof(struct rt_ell_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_ell_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_ell_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "B", bu_offsetof(struct rt_ell_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "C", bu_offsetof(struct rt_ell_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/epa/epa.c =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -173,12 +173,12 @@ const struct bu_structparse rt_epa_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_epa_internal, epa_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_epa_internal, epa_H[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_epa_internal, epa_Au[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_1", bu_offsetof(struct rt_epa_internal, epa_r1), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_2", bu_offsetof(struct rt_epa_internal, epa_r2), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_epa_internal, epa_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_epa_internal, epa_H[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_epa_internal, epa_Au[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_1", bu_offsetof(struct rt_epa_internal, epa_r1), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_2", bu_offsetof(struct rt_epa_internal, epa_r2), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -139,12 +139,12 @@ const struct bu_structparse rt_eto_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_eto_internal, eto_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "N", bu_offsetof(struct rt_eto_internal, eto_N[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "C", bu_offsetof(struct rt_eto_internal, eto_C[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r", bu_offsetof(struct rt_eto_internal, eto_r), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_d", bu_offsetof(struct rt_eto_internal, eto_rd), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_eto_internal, eto_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "N", bu_offsetof(struct rt_eto_internal, eto_N[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "C", bu_offsetof(struct rt_eto_internal, eto_C[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r", bu_offsetof(struct rt_eto_internal, eto_r), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_d", bu_offsetof(struct rt_eto_internal, eto_rd), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/grip/grip.c =================================================================== --- brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -56,10 +56,10 @@ #define GRIP_NULL ((struct grip_specific *)0) const struct bu_structparse rt_grp_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_grip_internal, center[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "N", bu_offsetof(struct rt_grip_internal, normal[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "L", bu_offsetof(struct rt_grip_internal, mag), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_grip_internal, center[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "N", bu_offsetof(struct rt_grip_internal, normal[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "L", bu_offsetof(struct rt_grip_internal, mag), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/half/half.c =================================================================== --- brlcad/trunk/src/librt/primitives/half/half.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/half/half.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -59,9 +59,9 @@ #define HALF_NULL ((struct half_specific *)0) const struct bu_structparse rt_hlf_parse[] = { - { "%f", 3, "N", bu_offsetof(struct rt_half_internal, eqn[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "d", bu_offsetof(struct rt_half_internal, eqn[W]), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "N", bu_offsetof(struct rt_half_internal, eqn[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "d", bu_offsetof(struct rt_half_internal, eqn[W]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/hf/hf.c =================================================================== --- brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -64,30 +64,30 @@ /* All fields valid in string solid */ const struct bu_structparse rt_hf_parse[] = { - {"%s", 128, "cfile", bu_offsetofarray(struct rt_hf_internal, cfile), BU_STRUCTPARSE_FUNC_NULL}, - {"%s", 128, "dfile", bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL}, - {"%s", 8, "fmt", bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL}, - {"%d", 1, "w", HF_O(w), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", HF_O(n), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "shorts", HF_O(shorts), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "file2mm", HF_O(file2mm), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 3, "v", HF_O(v[0]), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 3, "x", HF_O(x[0]), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 3, "y", HF_O(y[0]), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "xlen", HF_O(xlen), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "ylen", HF_O(ylen), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "zscale", HF_O(zscale), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%s", 128, "cfile", bu_offsetofarray(struct rt_hf_internal, cfile), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%s", 128, "dfile", bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%s", 8, "fmt", bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%d", 1, "w", HF_O(w), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", HF_O(n), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "shorts", HF_O(shorts), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "file2mm", HF_O(file2mm), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 3, "v", HF_O(v[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 3, "x", HF_O(x[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 3, "y", HF_O(y[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "xlen", HF_O(xlen), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "ylen", HF_O(ylen), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "zscale", HF_O(zscale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; /* Subset of fields found in cfile */ const struct bu_structparse rt_hf_cparse[] = { - {"%s", 128, "dfile", bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL}, - {"%s", 8, "fmt", bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL}, - {"%d", 1, "w", HF_O(w), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", HF_O(n), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "shorts", HF_O(shorts), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 1, "file2mm", HF_O(file2mm), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%s", 128, "dfile", bu_offsetofarray(struct rt_hf_internal, dfile), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%s", 8, "fmt", bu_offsetofarray(struct rt_hf_internal, fmt), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%d", 1, "w", HF_O(w), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", HF_O(n), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "shorts", HF_O(shorts), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 1, "file2mm", HF_O(file2mm), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/hyp/hyp.c =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -103,12 +103,12 @@ const struct bu_structparse rt_hyp_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_hyp_internal, hyp_Vi[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_hyp_internal, hyp_Hi[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_hyp_internal, hyp_A[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "b", bu_offsetof(struct rt_hyp_internal, hyp_b), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "bnr", bu_offsetof(struct rt_hyp_internal, hyp_bnr), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_hyp_internal, hyp_Vi[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_hyp_internal, hyp_Hi[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_hyp_internal, hyp_A[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "b", bu_offsetof(struct rt_hyp_internal, hyp_b), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "bnr", bu_offsetof(struct rt_hyp_internal, hyp_bnr), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/part/part.c =================================================================== --- brlcad/trunk/src/librt/primitives/part/part.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/part/part.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -212,11 +212,11 @@ #define RT_PARTICLE_SURF_HSPHERE 3 const struct bu_structparse rt_part_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_part_internal, part_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_part_internal, part_H[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_v", bu_offsetof(struct rt_part_internal, part_vrad), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r_h", bu_offsetof(struct rt_part_internal, part_hrad), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_part_internal, part_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_part_internal, part_H[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_v", bu_offsetof(struct rt_part_internal, part_vrad), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r_h", bu_offsetof(struct rt_part_internal, part_hrad), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/revolve/revolve.h =================================================================== --- brlcad/trunk/src/librt/primitives/revolve/revolve.h 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/revolve/revolve.h 2009-12-21 23:02:26 UTC (rev 36956) @@ -25,12 +25,12 @@ const struct bu_structparse rt_revolve_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_revolve_internal, v3d[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "axis", bu_offsetof(struct rt_revolve_internal, axis3d[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "R", bu_offsetof(struct rt_revolve_internal, r[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "ang", bu_offsetof(struct rt_revolve_internal, ang), BU_STRUCTPARSE_FUNC_NULL }, - { "%V", 1, "sk_name", bu_offsetof(struct rt_revolve_internal, sketch_name), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_revolve_internal, v3d[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "axis", bu_offsetof(struct rt_revolve_internal, axis3d[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "R", bu_offsetof(struct rt_revolve_internal, r[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "ang", bu_offsetof(struct rt_revolve_internal, ang), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%V", 1, "sk_name", bu_offsetof(struct rt_revolve_internal, sketch_name), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/rhc/rhc.c =================================================================== --- brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -192,12 +192,12 @@ const struct bu_structparse rt_rhc_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_rhc_internal, rhc_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_rhc_internal, rhc_H[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "B", bu_offsetof(struct rt_rhc_internal, rhc_B[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r", bu_offsetof(struct rt_rhc_internal, rhc_r), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "c", bu_offsetof(struct rt_rhc_internal, rhc_c), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_rhc_internal, rhc_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_rhc_internal, rhc_H[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "B", bu_offsetof(struct rt_rhc_internal, rhc_B[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r", bu_offsetof(struct rt_rhc_internal, rhc_r), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "c", bu_offsetof(struct rt_rhc_internal, rhc_c), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/rpc/rpc.c =================================================================== --- brlcad/trunk/src/librt/primitives/rpc/rpc.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/rpc/rpc.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -188,11 +188,11 @@ const struct bu_structparse rt_rpc_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_rpc_internal, rpc_V[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_rpc_internal, rpc_H[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "B", bu_offsetof(struct rt_rpc_internal, rpc_B[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "r", bu_offsetof(struct rt_rpc_internal, rpc_r), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_rpc_internal, rpc_V[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_rpc_internal, rpc_H[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "B", bu_offsetof(struct rt_rpc_internal, rpc_B[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "r", bu_offsetof(struct rt_rpc_internal, rpc_r), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/submodel/submodel.c =================================================================== --- brlcad/trunk/src/librt/primitives/submodel/submodel.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/submodel/submodel.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -52,10 +52,10 @@ #define RT_SUBMODEL_O(m) bu_offsetof(struct rt_submodel_internal, m) const struct bu_structparse rt_submodel_parse[] = { - {"%V", 1, "file", RT_SUBMODEL_O(file), BU_STRUCTPARSE_FUNC_NULL }, - {"%V", 1, "treetop", RT_SUBMODEL_O(treetop), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "meth", RT_SUBMODEL_O(meth), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%V", 1, "file", RT_SUBMODEL_O(file), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%V", 1, "treetop", RT_SUBMODEL_O(treetop), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "meth", RT_SUBMODEL_O(meth), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/superell/superell.c =================================================================== --- brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -47,13 +47,13 @@ const struct bu_structparse rt_superell_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_superell_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_superell_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "B", bu_offsetof(struct rt_superell_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "C", bu_offsetof(struct rt_superell_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "n", bu_offsetof(struct rt_superell_internal, n), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 1, "e", bu_offsetof(struct rt_superell_internal, e), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_superell_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_superell_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "B", bu_offsetof(struct rt_superell_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "C", bu_offsetof(struct rt_superell_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "n", bu_offsetof(struct rt_superell_internal, n), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 1, "e", bu_offsetof(struct rt_superell_internal, e), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -42,7 +42,7 @@ const struct bu_structparse rt_nul_parse[] = { - {""} + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/tgc/tgc.c =================================================================== --- brlcad/trunk/src/librt/primitives/tgc/tgc.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/tgc/tgc.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -76,13 +76,13 @@ #define ALPHA(x, y, c, d) ((x)*(x)*(c) + (y)*(y)*(d)) const struct bu_structparse rt_tgc_parse[] = { - { "%f", 3, "V", bu_offsetof(struct rt_tgc_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "H", bu_offsetof(struct rt_tgc_internal, h[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "A", bu_offsetof(struct rt_tgc_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "B", bu_offsetof(struct rt_tgc_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "C", bu_offsetof(struct rt_tgc_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL }, - { "%f", 3, "D", bu_offsetof(struct rt_tgc_internal, d[X]), BU_STRUCTPARSE_FUNC_NULL }, - { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL } + { "%f", 3, "V", bu_offsetof(struct rt_tgc_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "H", bu_offsetof(struct rt_tgc_internal, h[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "A", bu_offsetof(struct rt_tgc_internal, a[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "B", bu_offsetof(struct rt_tgc_internal, b[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "C", bu_offsetof(struct rt_tgc_internal, c[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { "%f", 3, "D", bu_offsetof(struct rt_tgc_internal, d[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + { {'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; Modified: brlcad/trunk/src/librt/primitives/tor/tor.c =================================================================== --- brlcad/trunk/src/librt/primitives/tor/tor.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/tor/tor.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -134,11 +134,11 @@ */ const struct bu_structparse rt_tor_parse[] = { - {"%f", 3, "V", bu_offsetof(struct rt_tor_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL}, - {"%f", 3, "H", bu_offsetof(struct rt_tor_internal, h[X]), BU_STRUCTPARSE_FUNC_NULL}, - {"%f", 1, "r_a", bu_offsetof(struct rt_tor_internal, r_a), BU_STRUCTPARSE_FUNC_NULL}, - {"%f", 1, "r_h", bu_offsetof(struct rt_tor_internal, r_h), BU_STRUCTPARSE_FUNC_NULL}, - {{'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL} + {"%f", 3, "V", bu_offsetof(struct rt_tor_internal, v[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%f", 3, "H", bu_offsetof(struct rt_tor_internal, h[X]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%f", 1, "r_a", bu_offsetof(struct rt_tor_internal, r_a), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {"%f", 1, "r_h", bu_offsetof(struct rt_tor_internal, r_h), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}, + {{'\0', '\0', '\0', '\0'}, 0, (char *)NULL, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL} }; Modified: brlcad/trunk/src/librt/primitives/vol/vol.c =================================================================== --- brlcad/trunk/src/librt/primitives/vol/vol.c 2009-12-21 22:55:22 UTC (rev 36955) +++ brlcad/trunk/src/librt/primitives/vol/vol.c 2009-12-21 23:02:26 UTC (rev 36956) @@ -65,15 +65,15 @@ #define VOL_O(m) bu_offsetof(struct rt_vol_internal, m) const struct bu_structparse rt_vol_parse[] = { - {"%s", RT_VOL_NAME_LEN, "file", bu_offsetofarray(struct rt_vol_internal, file), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "w", VOL_O(xdim), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "n", VOL_O(ydim), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "d", VOL_O(zdim), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "lo", VOL_O(lo), BU_STRUCTPARSE_FUNC_NULL }, - {"%d", 1, "hi", VOL_O(hi), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", ELEMENTS_PER_VECT, "size", bu_offsetofarray(struct rt_vol_internal, cellsize), BU_STRUCTPARSE_FUNC_NULL }, - {"%f", 16, "mat", bu_offsetofarray(struct rt_vol_internal, mat), BU_STRUCTPARSE_FUNC_NULL }, - {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } + {"%s", RT_VOL_NAME_LEN, "file", bu_offsetofarray(struct rt_vol_internal, file), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "w", VOL_O(xdim), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "n", VOL_O(ydim), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "d", VOL_O(zdim), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "lo", VOL_O(lo), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%d", 1, "hi", VOL_O(hi), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", ELEMENTS_PER_VECT, "size", bu_offsetofarray(struct rt_vol_internal, cellsize), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"%f", 16, "mat", bu_offsetofarray(struct rt_vol_internal, mat), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, + {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-21 23:43:02
|
Revision: 36958 http://brlcad.svn.sourceforge.net/brlcad/?rev=36958&view=rev Author: brlcad Date: 2009-12-21 23:42:53 +0000 (Mon, 21 Dec 2009) Log Message: ----------- more quellage, verbose compilation warnings about unused and unchecked params. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/ebm/ebm.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ell/ell.c brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/eto/eto.c Modified: brlcad/trunk/src/librt/primitives/ebm/ebm.c =================================================================== --- brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-21 23:22:00 UTC (rev 36957) +++ brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-21 23:42:53 UTC (rev 36958) @@ -633,6 +633,8 @@ union record *rec; struct bu_vls str; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EBM) return(-1); eip = (struct rt_ebm_internal *)ip->idb_ptr; @@ -776,6 +778,8 @@ struct rt_ebm_internal ebm; /* scaled version */ struct bu_vls str; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EBM) return(-1); eip = (struct rt_ebm_internal *)ip->idb_ptr; @@ -820,17 +824,19 @@ bu_vls_init(&substr); bu_vls_strcat(str, "extruded bitmap (EBM)\n\t"); - bu_vls_printf(&substr, " file=\"%s\" w=%d n=%d depth=%g\n mat=", - eip->file, eip->xdim, eip->ydim, INTCLAMP(eip->tallness*mm2local)); - bu_vls_vlscat(str, &substr); - for (i=0; i<15; i++) { + if (verbose) { + bu_vls_printf(&substr, " file=\"%s\" w=%d n=%d depth=%g\n mat=", + eip->file, eip->xdim, eip->ydim, INTCLAMP(eip->tallness*mm2local)); + bu_vls_vlscat(str, &substr); + for (i=0; i<15; i++) { + bu_vls_trunc2(&substr, 0); + bu_vls_printf(&substr, "%g, ", INTCLAMP(eip->mat[i])); + bu_vls_vlscat(str, &substr); + } bu_vls_trunc2(&substr, 0); - bu_vls_printf(&substr, "%g, ", INTCLAMP(eip->mat[i])); + bu_vls_printf(&substr, "%g\n", INTCLAMP(eip->mat[15])); bu_vls_vlscat(str, &substr); } - bu_vls_trunc2(&substr, 0); - bu_vls_printf(&substr, "%g\n", INTCLAMP(eip->mat[15])); - bu_vls_vlscat(str, &substr); bu_vls_free(&substr); @@ -892,6 +898,8 @@ vect_t diam; vect_t small1; + if (rtip) RT_CK_RTI(rtip); + eip = (struct rt_ebm_internal *)ip->idb_ptr; RT_EBM_CK_MAGIC(eip); @@ -1044,8 +1052,8 @@ void rt_ebm_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) { -/* register struct rt_ebm_specific *ebmp = - (struct rt_ebm_specific *)stp->st_specific; */ + struct rt_ebm_specific *ebmp = (struct rt_ebm_specific *)stp->st_specific; + if (!ebmp) return; bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; @@ -1061,6 +1069,9 @@ void rt_ebm_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) { + if (ap) RT_CK_APPLICATION(ap); + if (stp) RT_CK_SOLTAB(stp); + uvp->uv_u = hitp->hit_vpriv[X]; uvp->uv_v = hitp->hit_vpriv[Y]; @@ -1097,7 +1108,7 @@ * R T _ E B M _ P L O T */ int -rt_ebm_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_ebm_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { register struct rt_ebm_internal *eip; register int x, y; @@ -1357,7 +1368,7 @@ * R T _ E B M _ T E S S */ int -rt_ebm_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_ebm_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { struct rt_ebm_internal *eip; struct shell *s; @@ -1704,8 +1715,11 @@ * */ int -rt_ebm_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_ebm_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/ehy/ehy.c =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-21 23:22:00 UTC (rev 36957) +++ brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-21 23:42:53 UTC (rev 36958) @@ -585,6 +585,8 @@ vect_t pprime; fastf_t len; + if (ap) RT_CK_APPLICATION(ap); + /* * hit_point is on surface; project back to unit ehy, creating a * vector from vertex to hit point. @@ -649,7 +651,7 @@ * R T _ E H Y _ P L O T */ int -rt_ehy_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_ehy_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t c, dtol, f, mag_a, mag_h, ntol, r1, r2; fastf_t **ellipses, theta_prev, theta_new, rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); @@ -711,12 +713,11 @@ /* Convert rel to absolute by scaling by smallest side */ dtol = ttol->rel * 2 * r2; if (ttol->abs <= 0.0) { - if (dtol <= 0.0) + if (dtol <= 0.0) { /* No tolerance given, use a default */ dtol = 2 * 0.10 * r2; /* 10% */ - else - /* Use absolute-ized relative tolerance */ - ; + } + /* Use absolute-ized relative tolerance */ } else { /* Absolute tolerance was given, pick smaller */ if (ttol->rel <= 0.0 || dtol > ttol->abs) @@ -1014,12 +1015,11 @@ /* Convert rel to absolute by scaling by smallest side */ dtol = ttol->rel * 2 * r2; if (ttol->abs <= 0.0) { - if (dtol <= 0.0) + if (dtol <= 0.0) { /* No tolerance given, use a default */ dtol = 2 * 0.10 * r2; /* 10% */ - else - /* Use absolute-ized relative tolerance */ - ; + } + /* Use absolute-ized relative tolerance */ } else { /* Absolute tolerance was given, pick smaller */ if (ttol->rel <= 0.0 || dtol > ttol->abs) @@ -1419,6 +1419,8 @@ struct rt_ehy_internal *xip; union record *rp; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -1466,6 +1468,8 @@ struct rt_ehy_internal *xip; union record *ehy; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EHY) return(-1); xip = (struct rt_ehy_internal *)ip->idb_ptr; @@ -1528,6 +1532,7 @@ fastf_t vec[3*4]; BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 3*4); @@ -1574,6 +1579,8 @@ struct rt_ehy_internal *xip; fastf_t vec[3*4]; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EHY) return(-1); xip = (struct rt_ehy_internal *)ip->idb_ptr; @@ -1652,15 +1659,17 @@ INTCLAMP(MAGNITUDE(xip->ehy_H) * mm2local)); bu_vls_strcat(str, buf); - sprintf(buf, "\tA=%g\n", INTCLAMP(xip->ehy_r1 * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tA=%g\n", INTCLAMP(xip->ehy_r1 * mm2local)); + bu_vls_strcat(str, buf); - sprintf(buf, "\tB=%g\n", INTCLAMP(xip->ehy_r2 * mm2local)); - bu_vls_strcat(str, buf); + sprintf(buf, "\tB=%g\n", INTCLAMP(xip->ehy_r2 * mm2local)); + bu_vls_strcat(str, buf); + + sprintf(buf, "\tc=%g\n", INTCLAMP(xip->ehy_c * mm2local)); + bu_vls_strcat(str, buf); + } - sprintf(buf, "\tc=%g\n", INTCLAMP(xip->ehy_c * mm2local)); - bu_vls_strcat(str, buf); - return(0); } @@ -1693,8 +1702,11 @@ * */ int -rt_ehy_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_ehy_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return (0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/ell/ell.c =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-21 23:22:00 UTC (rev 36957) +++ brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-21 23:42:53 UTC (rev 36958) @@ -415,6 +415,8 @@ fastf_t k1, k2; /* distance constants of solution */ fastf_t root; /* root of radical */ + if (ap) RT_CK_APPLICATION(ap); + /* for each ray/ellipse pair */ for (i = 0; i < n; i++) { if (stp[i] == 0) continue; /* stp[i] == 0 signals skip ray */ @@ -625,7 +627,7 @@ * R T _ E L L _ P L O T */ int -rt_ell_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_ell_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { register int i; struct rt_ell_internal *eip; @@ -1100,6 +1102,8 @@ union record *rp; fastf_t vec[3*4]; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -1139,6 +1143,8 @@ struct rt_ell_internal *tip; union record *rec; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ELL && ip->idb_type != ID_SPH) return(-1); tip = (struct rt_ell_internal *)ip->idb_ptr; @@ -1174,6 +1180,7 @@ struct rt_ell_internal *eip; fastf_t vec[ELEMENTS_PER_VECT*4]; + if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); BU_CK_EXTERNAL(ep); @@ -1216,6 +1223,8 @@ struct rt_ell_internal *eip; fastf_t vec[ELEMENTS_PER_VECT*4]; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ELL && ip->idb_type != ID_SPH) return(-1); eip = (struct rt_ell_internal *)ip->idb_ptr; @@ -1636,10 +1645,13 @@ * @return -1 on failure */ int -rt_ell_params(struct pc_pc_set * pcs, const struct rt_db_internal *ip) +rt_ell_params(struct pc_pc_set *pcs, const struct rt_db_internal *ip) { struct rt_ell_internal *eip; eip = (struct rt_ell_internal *)ip->idb_ptr; + + if (!pcs) return (0); + #if 0 pcs->ps = bu_calloc(pcs->n_params, sizeof (struct pc_param), "pc_param"); pcs->cs = bu_calloc(pcs->n_constraints, sizeof (struct pc_constrnt), "pc_constrnt"); Modified: brlcad/trunk/src/librt/primitives/epa/epa.c =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-21 23:22:00 UTC (rev 36957) +++ brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-21 23:42:53 UTC (rev 36958) @@ -571,6 +571,8 @@ vect_t pprime; fastf_t len; + if (ap) RT_CK_APPLICATION(ap); + /* hit_point is on surface; project back to unit epa, creating a * vector from vertex to hit point. */ @@ -633,7 +635,7 @@ * R T _ E P A _ P L O T */ int -rt_epa_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_epa_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t dtol, f, mag_a, mag_h, ntol, r1, r2; fastf_t **ellipses, theta_new, theta_prev, rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); @@ -697,12 +699,11 @@ /* Convert rel to absolute by scaling by smallest side */ dtol = ttol->rel * 2 * r2; if (ttol->abs <= 0.0) { - if (dtol <= 0.0) + if (dtol <= 0.0) { /* No tolerance given, use a default */ dtol = 2 * 0.10 * r2; /* 10% */ - else - /* Use absolute-ized relative tolerance */ - ; + } + /* Use absolute-ized relative tolerance */ } else { /* Absolute tolerance was given, pick smaller */ if (ttol->rel <= 0.0 || dtol > ttol->abs) @@ -1073,12 +1074,11 @@ /* Convert rel to absolute by scaling by smallest side */ dtol = ttol->rel * 2 * r2; if (ttol->abs <= 0.0) { - if (dtol <= 0.0) + if (dtol <= 0.0) { /* No tolerance given, use a default */ dtol = 2 * 0.10 * r2; /* 10% */ - else - /* Use absolute-ized relative tolerance */ - ; + } + /* Use absolute-ized relative tolerance */ } else { /* Absolute tolerance was given, pick smaller */ if (ttol->rel <= 0.0 || dtol > ttol->abs) @@ -1461,6 +1461,8 @@ struct rt_epa_internal *xip; union record *rp; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -1508,6 +1510,8 @@ union record *epa; fastf_t mag_h; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EPA) return(-1); xip = (struct rt_epa_internal *)ip->idb_ptr; @@ -1568,6 +1572,7 @@ struct rt_epa_internal *xip; fastf_t vec[11]; + if (dbip) RT_CK_DBI(dbip); BU_CK_EXTERNAL(ep); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 11); @@ -1615,6 +1620,8 @@ fastf_t vec[11]; fastf_t mag_h; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EPA) return(-1); xip = (struct rt_epa_internal *)ip->idb_ptr; @@ -1692,11 +1699,13 @@ INTCLAMP(MAGNITUDE(xip->epa_H) * mm2local)); bu_vls_strcat(str, buf); - sprintf(buf, "\tA=%g\n", INTCLAMP(xip->epa_r1 * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tA=%g\n", INTCLAMP(xip->epa_r1 * mm2local)); + bu_vls_strcat(str, buf); - sprintf(buf, "\tB=%g\n", INTCLAMP(xip->epa_r2 * mm2local)); - bu_vls_strcat(str, buf); + sprintf(buf, "\tB=%g\n", INTCLAMP(xip->epa_r2 * mm2local)); + bu_vls_strcat(str, buf); + } return(0); } @@ -1730,8 +1739,11 @@ * */ int -rt_epa_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_epa_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-21 23:22:00 UTC (rev 36957) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-21 23:42:53 UTC (rev 36958) @@ -173,6 +173,8 @@ fastf_t ch, cv, dh, f, phi; struct rt_eto_internal *tip; + if (rtip) RT_CK_RTI(rtip); + tip = (struct rt_eto_internal *)ip->idb_ptr; RT_ETO_CK_MAGIC(tip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-22 01:35:29
|
Revision: 36964 http://brlcad.svn.sourceforge.net/brlcad/?rev=36964&view=rev Author: brlcad Date: 2009-12-22 01:35:21 +0000 (Tue, 22 Dec 2009) Log Message: ----------- eliminate the empty vshot() callbacks. now only primitives that actually do something have a non-null callback (which is presently arb8, ell, half, rec, sph, tgc, and tor). the rt_vshootray() caller tests for whether it's null and calls a shot stub if needed. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/librt/primitives/arbn/arbn.c brlcad/trunk/src/librt/primitives/bot/bot.c brlcad/trunk/src/librt/primitives/bspline/bspline.cpp brlcad/trunk/src/librt/primitives/cline/cline.c brlcad/trunk/src/librt/primitives/dsp/dsp.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ell/ell.c brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/eto/eto.c brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/grip/grip.c brlcad/trunk/src/librt/primitives/hyp/hyp.c brlcad/trunk/src/librt/primitives/nmg/nmg.c brlcad/trunk/src/librt/primitives/part/part.c brlcad/trunk/src/librt/primitives/pipe/pipe.c brlcad/trunk/src/librt/primitives/rec/rec.c brlcad/trunk/src/librt/primitives/revolve/revolve.c brlcad/trunk/src/librt/primitives/rhc/rhc.c brlcad/trunk/src/librt/primitives/rpc/rpc.c brlcad/trunk/src/librt/primitives/sketch/sketch.c brlcad/trunk/src/librt/primitives/sph/sph.c brlcad/trunk/src/librt/primitives/submodel/submodel.c brlcad/trunk/src/librt/primitives/superell/superell.c brlcad/trunk/src/librt/primitives/table.c brlcad/trunk/src/librt/primitives/tor/tor.c brlcad/trunk/src/librt/primitives/xxx/xxx.c Modified: brlcad/trunk/src/librt/primitives/arb8/arb8.c =================================================================== --- brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/arb8/arb8.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -859,9 +859,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; - - +#define RT_ARB8_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL /** * R T _ A R B _ V S H O T * @@ -922,11 +920,11 @@ /* ray is parallel to plane when dir.N == 0. * If it is outside the solid, stop now */ if (dxbdn > SQRT_SMALL_FASTF) { - SEG_MISS(segp[i]); /* MISS */ + RT_ARB8_SEG_MISS(segp[i]); /* MISS */ } } if (segp[i].seg_in.hit_dist > segp[i].seg_out.hit_dist) { - SEG_MISS(segp[i]); /* MISS */ + RT_ARB8_SEG_MISS(segp[i]); /* MISS */ } } /* for each ray/arb_face pair */ } /* for each arb_face */ @@ -942,10 +940,10 @@ if (segp[i].seg_in.hit_surfno == -1 || segp[i].seg_out.hit_surfno == -1) { - SEG_MISS(segp[i]); /* MISS */ + RT_ARB8_SEG_MISS(segp[i]); /* MISS */ } else if (segp[i].seg_in.hit_dist >= segp[i].seg_out.hit_dist || segp[i].seg_out.hit_dist >= INFINITY) { - SEG_MISS(segp[i]); /* MISS */ + RT_ARB8_SEG_MISS(segp[i]); /* MISS */ } } } Modified: brlcad/trunk/src/librt/primitives/arbn/arbn.c =================================================================== --- brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/arbn/arbn.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -256,21 +256,6 @@ /** - * R T _ A R B N _ V S H O T - */ -void -rt_arbn_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) -/* An array of solid pointers */ -/* An array of ray pointers */ -/* array of segs (results returned) */ -/* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ A R B N _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/bot/bot.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/bot/bot.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -356,27 +356,7 @@ } -#define RT_BOT_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ B O T _ V S H O T - * - * Vectorized version. - */ -void -rt_bot_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ B O T _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/bspline/bspline.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/bspline/bspline.cpp 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/bspline/bspline.cpp 2009-12-22 01:35:21 UTC (rev 36964) @@ -505,23 +505,6 @@ /** - * R T _ N U R B _ V S H O T - * - * Vectorized version. - */ -void -rt_nurb_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ N U R B _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/cline/cline.c =================================================================== --- brlcad/trunk/src/librt/primitives/cline/cline.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/cline/cline.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -333,28 +333,7 @@ } -#define RT_CLINE_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - /** - * R T _ C L I N E _ V S H O T - * - * Vectorized version. - */ -void -rt_cline_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - if (ap) RT_CK_APPLICATION(ap); - - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ C L I N E _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/dsp/dsp.c =================================================================== --- brlcad/trunk/src/librt/primitives/dsp/dsp.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/dsp/dsp.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -2632,29 +2632,6 @@ } -#define RT_DSP_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - -/** - * R T _ D S P _ V S H O T - * - * Vectorized version. - */ -void -rt_dsp_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - if (RT_G_DEBUG & DEBUG_HF) - bu_log("rt_dsp_vshot()\n"); - - (void)rt_vstub(stp, rp, segp, n, ap); -} - - /*********************************************************************** * * Compute the model-space normal at a gridpoint Modified: brlcad/trunk/src/librt/primitives/ehy/ehy.c =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -452,27 +452,7 @@ } -#define RT_EHY_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ E H Y _ V S H O T - * - * Vectorized version. - */ -void -rt_ehy_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ E H Y _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/ell/ell.c =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/ell/ell.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -390,8 +390,6 @@ #define RT_ELL_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** * R T _ E L L _ V S H O T * Modified: brlcad/trunk/src/librt/primitives/epa/epa.c =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -442,27 +442,7 @@ } -#define RT_EPA_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ E P A _ V S H O T - * - * Vectorized version. - */ -void -rt_epa_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ E P A _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -538,24 +538,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; /** - * R T _ E T O _ V S H O T - * - * This is the Becker vector version - */ -void -rt_eto_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ -} - - -/** * R T _ E T O _ N O R M * * Compute the normal to the eto, given a point on the eto centered at Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -953,26 +953,7 @@ } -#define RT_EXTRUDE_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - /** - * R T _ E X T R U D E _ V S H O T - * - * Vectorized version. - */ -void -rt_extrude_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ E X T R U D E _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/grip/grip.c =================================================================== --- brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -134,23 +134,6 @@ /** - * R T _ G R P _ V S H O T - * - * Vectorizing version. - */ -void -rt_grp_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - return; -} - - -/** * R T _ G R P _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. @@ -176,12 +159,6 @@ /** - * init solid - */ -#define RT_HALF_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - -/** * R T _ G R P _ U V * * For a hit on a face of an HALF, return the (u, v) coordinates of Modified: brlcad/trunk/src/librt/primitives/hyp/hyp.c =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -374,26 +374,7 @@ } -#define RT_HYP_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ H Y P _ V S H O T - * - * Vectorized version. - */ -void -rt_hyp_vshot(struct soltab *stp[], /* An array of solid pointers */ - struct xray *rp[], /* An array of ray pointers */ - struct seg segp[], /* array of segs (results returned) */ - int n, /* Number of ray/object pairs */ - struct application *ap) -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ H Y P _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/nmg/nmg.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/nmg/nmg.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -229,27 +229,7 @@ } -#define RT_NMG_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ N M G _ V S H O T - * - * Vectorized version. - */ -void -rt_nmg_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ N M G _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/part/part.c =================================================================== --- brlcad/trunk/src/librt/primitives/part/part.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/part/part.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -730,26 +730,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; - /** - * R T _ P A R T _ V S H O T - * - * Vectorized version. - */ -void -rt_part_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ P A R T _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/pipe/pipe.c =================================================================== --- brlcad/trunk/src/librt/primitives/pipe/pipe.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/pipe/pipe.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -1462,26 +1462,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; - /** - * R T_ P I P E _ V S H O T - * - * Vectorized version. - */ -void -rt_pipe_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) -/* An array of solid pointers */ -/* An array of ray pointers */ -/* array of segs (results returned) */ -/* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ P I P E _ C U R V E * * Return the curvature of the pipe. Modified: brlcad/trunk/src/librt/primitives/rec/rec.c =================================================================== --- brlcad/trunk/src/librt/primitives/rec/rec.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/rec/rec.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -558,7 +558,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; +#define RT_REC_SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; /** * R E C _ V S H O T * @@ -655,7 +655,7 @@ } if (hitp != &hits[2]) { - SEG_MISS(segp[i]); /* MISS */ + RT_REC_SEG_MISS(segp[i]); /* MISS */ } else { segp[i].seg_stp = stp[i]; Modified: brlcad/trunk/src/librt/primitives/revolve/revolve.c =================================================================== --- brlcad/trunk/src/librt/primitives/revolve/revolve.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/revolve/revolve.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -868,26 +868,7 @@ } -#define RT_REVOLVE_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ R E V O L V E _ V S H O T - * - * Vectorized version. - */ -void -rt_revolve_vshot(struct soltab *stp[], /* An array of solid pointers */ - struct xray *rp[], /* An array of ray pointers */ - struct seg segp[], /* array of segs (results returned) */ - int n, /* Number of ray/object pairs */ - struct application *ap) -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ R E V O L V E _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/rhc/rhc.c =================================================================== --- brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/rhc/rhc.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -513,26 +513,7 @@ } -#define RT_RHC_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - /** - * R T _ R H C _ V S H O T - * - * Vectorized version. - */ -void -rt_rhc_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ R H C _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/rpc/rpc.c =================================================================== --- brlcad/trunk/src/librt/primitives/rpc/rpc.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/rpc/rpc.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -488,26 +488,7 @@ } -#define RT_RPC_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - /** - * R T _ R P C _ V S H O T - * - * Vectorized version. - */ -void -rt_rpc_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ R P C _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/sketch/sketch.c =================================================================== --- brlcad/trunk/src/librt/primitives/sketch/sketch.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/sketch/sketch.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -168,27 +168,7 @@ } -#define RT_SKETCH_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ S K E T C H _ V S H O T - * - * Vectorized version. - */ -void -rt_sketch_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ S K E T C H _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/sph/sph.c =================================================================== --- brlcad/trunk/src/librt/primitives/sph/sph.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/sph/sph.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -263,7 +263,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; +#define RT_SPH_SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; /** * R T _ S P H _ V S H O T * @@ -298,13 +298,13 @@ /* ray origin is outside of sphere */ if (b < 0) { /* ray direction is away from sphere */ - SEG_MISS(segp[i]); /* No hit */ + RT_SPH_SEG_MISS(segp[i]); /* No hit */ continue; } root = b*b - magsq_ov + sph->sph_radsq; if (root <= 0) { /* no real roots */ - SEG_MISS(segp[i]); /* No hit */ + RT_SPH_SEG_MISS(segp[i]); /* No hit */ continue; } } else { Modified: brlcad/trunk/src/librt/primitives/submodel/submodel.c =================================================================== --- brlcad/trunk/src/librt/primitives/submodel/submodel.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/submodel/submodel.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -527,26 +527,7 @@ } -#define RT_SUBMODEL_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - /** - * R T _ S U B M O D E L _ V S H O T - * - * Vectorized version. - */ -void -rt_submodel_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ S U B M O D E L _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/superell/superell.c =================================================================== --- brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/superell/superell.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -534,23 +534,6 @@ /** - * R T _ S U P E R E L L _ V S H O T - * - * This is the Becker vector version. - */ -void -rt_superell_vshot(struct soltab **stp, struct xray **rp, struct seg *segp, int n, struct application *ap) - /* An array of solid pointers */ - /* An array of ray pointers */ - /* array of segs (results returned) */ - /* Number of ray/object pairs */ - -{ - return; -} - - -/** * R T _ S U P E R E L L _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -70,9 +70,8 @@ BU_EXTERN(int rt_##name##_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int free, struct db_i *dbip, struct resource *resp)); \ BU_EXTERN(int rt_##name##_params, (struct pc_pc_set *ps, const struct rt_db_internal *ip)); \ BU_EXTERN(int rt_##name##_mirror, (struct rt_db_internal *ip, const plane_t *plane)); \ - extern const struct bu_structparse rt_##name##_parse[]; + extern const struct bu_structparse rt_##name##_parse[] - RT_DECLARE_INTERFACE(nul); #define rt_tor_xform rt_generic_xform @@ -372,10 +371,6 @@ /* PNTS */ -/* XXX from shoot.c / vshoot.c */ -BU_EXTERN(void rt_vstub, (struct soltab *stp[], struct xray *rp[], - struct seg segp[], int n, struct application *ap)); - /* From here in table.c */ BU_EXTERN(int rt_generic_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, @@ -476,7 +471,7 @@ rt_ars_prep, rt_bot_shot, rt_ars_print, rt_bot_norm, rt_bot_piece_shot, rt_bot_piece_hitsegs, rt_ars_uv, rt_bot_curve, rt_bot_class, rt_bot_free, - rt_ars_plot, rt_vstub, rt_ars_tess, rt_nul_tnurb, + rt_ars_plot, rt_nul_vshot, rt_ars_tess, rt_nul_tnurb, rt_ars_import5, rt_ars_export5, rt_ars_import4, rt_ars_export4, rt_ars_ifree, rt_ars_describe, rt_ars_xform, NULL, @@ -518,7 +513,7 @@ rt_pg_prep, rt_pg_shot, rt_pg_print, rt_pg_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_pg_uv, rt_pg_curve, rt_pg_class, rt_pg_free, - rt_pg_plot, rt_vstub, rt_pg_tess, rt_nul_tnurb, + rt_pg_plot, rt_nul_vshot, rt_pg_tess, rt_nul_tnurb, rt_nul_import5, rt_nul_export5, rt_pg_import4, rt_pg_export4, rt_pg_ifree, rt_pg_describe, rt_pg_xform, NULL, @@ -532,7 +527,7 @@ rt_nurb_prep, rt_nurb_shot, rt_nurb_print, rt_nurb_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_nurb_uv, rt_nurb_curve, rt_nurb_class, rt_nurb_free, - rt_nurb_plot, rt_vstub, rt_nurb_tess, rt_nul_tnurb, + rt_nurb_plot, rt_nul_vshot, rt_nurb_tess, rt_nul_tnurb, rt_nurb_import5, rt_nurb_export5, rt_nurb_import4, rt_nurb_export4, rt_nurb_ifree, rt_nurb_describe, rt_nurb_xform, NULL, @@ -560,7 +555,7 @@ rt_nmg_prep, rt_nmg_shot, rt_nmg_print, rt_nmg_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_nmg_uv, rt_nmg_curve, rt_nmg_class, rt_nmg_free, - rt_nmg_plot, rt_nmg_vshot, rt_nmg_tess, rt_nul_tnurb, + rt_nmg_plot, rt_nul_vshot, rt_nmg_tess, rt_nul_tnurb, rt_nmg_import5, rt_nmg_export5, rt_nmg_import4, rt_nmg_export4, rt_nmg_ifree, rt_nmg_describe, rt_nmg_xform, NULL, @@ -574,7 +569,7 @@ rt_ebm_prep, rt_ebm_shot, rt_ebm_print, rt_ebm_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_ebm_uv, rt_ebm_curve, rt_ebm_class, rt_ebm_free, - rt_ebm_plot, rt_vstub, rt_ebm_tess, rt_nul_tnurb, + rt_ebm_plot, rt_nul_vshot, rt_ebm_tess, rt_nul_tnurb, rt_ebm_import5, rt_ebm_export5, rt_ebm_import4, rt_ebm_export4, rt_ebm_ifree, rt_ebm_describe, rt_ebm_xform, rt_ebm_parse, @@ -588,7 +583,7 @@ rt_vol_prep, rt_vol_shot, rt_vol_print, rt_vol_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_vol_uv, rt_vol_curve, rt_vol_class, rt_vol_free, - rt_vol_plot, rt_vstub, rt_vol_tess, rt_nul_tnurb, + rt_vol_plot, rt_nul_vshot, rt_vol_tess, rt_nul_tnurb, rt_vol_import5, rt_vol_export5, rt_vol_import4, rt_vol_export4, rt_vol_ifree, rt_vol_describe, rt_vol_xform, rt_vol_parse, @@ -602,7 +597,7 @@ rt_arbn_prep, rt_arbn_shot, rt_arbn_print, rt_arbn_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_arbn_uv, rt_arbn_curve, rt_arbn_class, rt_arbn_free, - rt_arbn_plot, rt_arbn_vshot, rt_arbn_tess, rt_nul_tnurb, + rt_arbn_plot, rt_nul_vshot, rt_arbn_tess, rt_nul_tnurb, rt_arbn_import5, rt_arbn_export5, rt_arbn_import4, rt_arbn_export4, rt_arbn_ifree, rt_arbn_describe, rt_arbn_xform, NULL, @@ -616,7 +611,7 @@ rt_pipe_prep, rt_pipe_shot, rt_pipe_print, rt_pipe_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_pipe_uv, rt_pipe_curve, rt_pipe_class, rt_pipe_free, - rt_pipe_plot, rt_pipe_vshot, rt_pipe_tess, rt_nul_tnurb, + rt_pipe_plot, rt_nul_vshot, rt_pipe_tess, rt_nul_tnurb, rt_pipe_import5, rt_pipe_export5, rt_pipe_import4, rt_pipe_export4, rt_pipe_ifree, rt_pipe_describe, rt_pipe_xform, NULL, @@ -632,7 +627,7 @@ rt_part_prep, rt_part_shot, rt_part_print, rt_part_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_part_uv, rt_part_curve, rt_part_class, rt_part_free, - rt_part_plot, rt_part_vshot, rt_part_tess, rt_nul_tnurb, + rt_part_plot, rt_nul_vshot, rt_part_tess, rt_nul_tnurb, rt_part_import5, rt_part_export5, rt_part_import4, rt_part_export4, rt_part_ifree, rt_part_describe, rt_part_xform, rt_part_parse, @@ -646,7 +641,7 @@ rt_rpc_prep, rt_rpc_shot, rt_rpc_print, rt_rpc_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_rpc_uv, rt_rpc_curve, rt_rpc_class, rt_rpc_free, - rt_rpc_plot, rt_rpc_vshot, rt_rpc_tess, rt_nul_tnurb, + rt_rpc_plot, rt_nul_vshot, rt_rpc_tess, rt_nul_tnurb, rt_rpc_import5, rt_rpc_export5, rt_rpc_import4, rt_rpc_export4, rt_rpc_ifree, rt_rpc_describe, rt_rpc_xform, rt_rpc_parse, @@ -660,7 +655,7 @@ rt_rhc_prep, rt_rhc_shot, rt_rhc_print, rt_rhc_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_rhc_uv, rt_rhc_curve, rt_rhc_class, rt_rhc_free, - rt_rhc_plot, rt_rhc_vshot, rt_rhc_tess, rt_nul_tnurb, + rt_rhc_plot, rt_nul_vshot, rt_rhc_tess, rt_nul_tnurb, rt_rhc_import5, rt_rhc_export5, rt_rhc_import4, rt_rhc_export4, rt_rhc_ifree, rt_rhc_describe, rt_rhc_xform, rt_rhc_parse, @@ -674,7 +669,7 @@ rt_epa_prep, rt_epa_shot, rt_epa_print, rt_epa_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_epa_uv, rt_epa_curve, rt_epa_class, rt_epa_free, - rt_epa_plot, rt_epa_vshot, rt_epa_tess, rt_nul_tnurb, + rt_epa_plot, rt_nul_vshot, rt_epa_tess, rt_nul_tnurb, rt_epa_import5, rt_epa_export5, rt_epa_import4, rt_epa_export4, rt_epa_ifree, rt_epa_describe, rt_epa_xform, rt_epa_parse, @@ -688,7 +683,7 @@ rt_ehy_prep, rt_ehy_shot, rt_ehy_print, rt_ehy_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_ehy_uv, rt_ehy_curve, rt_ehy_class, rt_ehy_free, - rt_ehy_plot, rt_ehy_vshot, rt_ehy_tess, rt_nul_tnurb, + rt_ehy_plot, rt_nul_vshot, rt_ehy_tess, rt_nul_tnurb, rt_ehy_import5, rt_ehy_export5, rt_ehy_import4, rt_ehy_export4, rt_ehy_ifree, rt_ehy_describe, rt_ehy_xform, rt_ehy_parse, @@ -702,7 +697,7 @@ rt_eto_prep, rt_eto_shot, rt_eto_print, rt_eto_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_eto_uv, rt_eto_curve, rt_eto_class, rt_eto_free, - rt_eto_plot, rt_eto_vshot, rt_eto_tess, rt_nul_tnurb, + rt_eto_plot, rt_nul_vshot, rt_eto_tess, rt_nul_tnurb, rt_eto_import5, rt_eto_export5, rt_eto_import4, rt_eto_export4, rt_eto_ifree, rt_eto_describe, rt_eto_xform, rt_eto_parse, @@ -716,7 +711,7 @@ rt_grp_prep, rt_grp_shot, rt_grp_print, rt_grp_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_grp_uv, rt_grp_curve, rt_grp_class, rt_grp_free, - rt_grp_plot, rt_grp_vshot, rt_grp_tess, rt_nul_tnurb, + rt_grp_plot, rt_nul_vshot, rt_grp_tess, rt_nul_tnurb, rt_grp_import5, rt_grp_export5, rt_grp_import4, rt_grp_export4, rt_grp_ifree, rt_grp_describe, rt_grp_xform, rt_grp_parse, @@ -744,7 +739,7 @@ rt_hf_prep, rt_hf_shot, rt_hf_print, rt_hf_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_hf_uv, rt_hf_curve, rt_hf_class, rt_hf_free, - rt_hf_plot, rt_vstub, rt_hf_tess, rt_nul_tnurb, + rt_hf_plot, rt_nul_vshot, rt_hf_tess, rt_nul_tnurb, rt_hf_import5, rt_hf_export5, rt_hf_import4, rt_hf_export4, rt_hf_ifree, rt_hf_describe, rt_hf_xform, rt_hf_parse, @@ -758,7 +753,7 @@ rt_dsp_prep, rt_dsp_shot, rt_dsp_print, rt_dsp_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_dsp_uv, rt_dsp_curve, rt_dsp_class, rt_dsp_free, - rt_dsp_plot, rt_vstub, rt_dsp_tess, rt_nul_tnurb, + rt_dsp_plot, rt_nul_vshot, rt_dsp_tess, rt_nul_tnurb, rt_dsp_import5, rt_dsp_export5, rt_dsp_import4, rt_dsp_export4, rt_dsp_ifree, rt_dsp_describe, rt_dsp_xform, rt_dsp_parse, @@ -772,7 +767,7 @@ rt_sketch_prep, rt_sketch_shot, rt_sketch_print, rt_sketch_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_sketch_uv, rt_sketch_curve, rt_sketch_class, rt_sketch_free, - rt_sketch_plot, rt_vstub, rt_nul_tess, rt_nul_tnurb, + rt_sketch_plot, rt_nul_vshot, rt_nul_tess, rt_nul_tnurb, rt_sketch_import5, rt_sketch_export5, rt_sketch_import4, rt_sketch_export4, rt_sketch_ifree, rt_sketch_describe, rt_sketch_xform, NULL, @@ -786,7 +781,7 @@ rt_extrude_prep, rt_extrude_shot, rt_extrude_print, rt_extrude_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_extrude_uv, rt_extrude_curve, rt_extrude_class, rt_extrude_free, - rt_extrude_plot, rt_extrude_vshot, rt_extrude_tess, rt_nul_tnurb, + rt_extrude_plot, rt_nul_vshot, rt_extrude_tess, rt_nul_tnurb, rt_extrude_import5, rt_extrude_export5, rt_extrude_import4, rt_extrude_export4, rt_extrude_ifree, rt_extrude_describe, rt_extrude_xform, NULL, @@ -800,7 +795,7 @@ rt_submodel_prep, rt_submodel_shot, rt_submodel_print, rt_submodel_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_submodel_uv, rt_submodel_curve, rt_submodel_class, rt_submodel_free, - rt_submodel_plot, rt_vstub, rt_submodel_tess, rt_nul_tnurb, + rt_submodel_plot, rt_nul_vshot, rt_submodel_tess, rt_nul_tnurb, rt_submodel_import5, rt_submodel_export5, rt_submodel_import4, rt_submodel_export4, rt_submodel_ifree, rt_submodel_describe, rt_submodel_xform, rt_submodel_parse, @@ -814,7 +809,7 @@ rt_cline_prep, rt_cline_shot, rt_cline_print, rt_cline_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_cline_uv, rt_cline_curve, rt_cline_class, rt_cline_free, - rt_cline_plot, rt_cline_vshot, rt_cline_tess, rt_nul_tnurb, + rt_cline_plot, rt_nul_vshot, rt_cline_tess, rt_nul_tnurb, rt_cline_import5, rt_cline_export5, rt_cline_import4, rt_cline_export4, rt_cline_ifree, rt_cline_describe, rt_cline_xform, rt_cline_parse, @@ -828,7 +823,7 @@ rt_bot_prep, rt_bot_shot, rt_bot_print, rt_bot_norm, rt_bot_piece_shot, rt_bot_piece_hitsegs, rt_bot_uv, rt_bot_curve, rt_bot_class, rt_bot_free, - rt_bot_plot, rt_bot_vshot, rt_bot_tess, rt_nul_tnurb, + rt_bot_plot, rt_nul_vshot, rt_bot_tess, rt_nul_tnurb, rt_bot_import5, rt_bot_export5, rt_bot_import4, rt_bot_export4, rt_bot_ifree, rt_bot_describe, rt_bot_xform, NULL, @@ -902,7 +897,7 @@ rt_superell_prep, rt_superell_shot, rt_superell_print, rt_superell_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, rt_superell_uv, rt_superell_curve, rt_superell_class, rt_superell_free, - rt_superell_plot, rt_superell_vshot, rt_superell_tess, rt_nul_tnurb, + rt_superell_plot, rt_nul_vshot, rt_superell_tess, rt_nul_tnurb, rt_superell_import5, rt_superell_export5, rt_superell_import4, rt_superell_export4, rt_superell_ifree, rt_superell_describe, rt_superell_xform, rt_superell_parse, Modified: brlcad/trunk/src/librt/primitives/tor/tor.c =================================================================== --- brlcad/trunk/src/librt/primitives/tor/tor.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/tor/tor.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -521,9 +521,7 @@ } -#define SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; - - +#define RT_TOR_SEG_MISS(SEG) (SEG).seg_stp=(struct soltab *) 0; /** * R T _ T O R _ V S H O T * @@ -669,7 +667,7 @@ reported=1; } } - SEG_MISS(segp[i]); /* MISS */ + RT_TOR_SEG_MISS(segp[i]); /* MISS */ } } @@ -701,9 +699,9 @@ /* Here, 'i' is number of points found */ if (num_zero == 0) { - SEG_MISS(segp[i]); /* MISS */ + RT_TOR_SEG_MISS(segp[i]); /* MISS */ } else if (num_zero != 2 && num_zero != 4) { - SEG_MISS(segp[i]); /* MISS */ + RT_TOR_SEG_MISS(segp[i]); /* MISS */ } } Modified: brlcad/trunk/src/librt/primitives/xxx/xxx.c =================================================================== --- brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 01:27:19 UTC (rev 36963) +++ brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 01:35:21 UTC (rev 36964) @@ -150,26 +150,7 @@ } -#define RT_XXX_SEG_MISS(SEG) (SEG).seg_stp=RT_SOLTAB_NULL - - /** - * R T _ X X X _ V S H O T - * - * Vectorized version. - */ -void -rt_xxx_vshot(struct soltab *stp[], /* An array of solid pointers */ - struct xray *rp[], /* An array of ray pointers */ - struct seg segp[], /* array of segs (results returned) */ - int n, /* Number of ray/object pairs */ - struct application *ap) -{ - rt_vstub(stp, rp, segp, n, ap); -} - - -/** * R T _ X X X _ N O R M * * Given ONE ray distance, return the normal and entry/exit point. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-22 03:14:42
|
Revision: 36965 http://brlcad.svn.sourceforge.net/brlcad/?rev=36965&view=rev Author: brlcad Date: 2009-12-22 03:14:30 +0000 (Tue, 22 Dec 2009) Log Message: ----------- more quellage. add more extesive parameter testing to the xxx template for the primitive-specific structure, add more data validation. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/eto/eto.c brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/table.c brlcad/trunk/src/librt/primitives/xxx/xxx.c Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -670,6 +670,8 @@ register struct eto_specific *eto = (struct eto_specific *)stp->st_specific; + if (ap) RT_CK_APPLICATION(ap); + /* take elliptical slice of eto at hit point */ VSET(Ru, hitp->hit_vpriv[X], hitp->hit_vpriv[Y], 0.); VUNITIZE(Ru); @@ -733,7 +735,7 @@ * eto_rd Semiminor axis length (scalar) of eto cross section */ int -rt_eto_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_eto_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t a, b; /* axis lengths of ellipse */ fastf_t ang, ch, cv, dh, dv, ntol, dtol, phi, theta; @@ -1195,6 +1197,8 @@ struct rt_eto_internal *tip; union record *rp; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -1239,6 +1243,8 @@ struct rt_eto_internal *tip; union record *eto; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ETO) return(-1); tip = (struct rt_eto_internal *)ip->idb_ptr; @@ -1288,6 +1294,7 @@ struct rt_eto_internal *tip; fastf_t vec[11]; + if (dbip) RT_CK_DBI(dbip); BU_CK_EXTERNAL(ep); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 11); @@ -1332,6 +1339,8 @@ struct rt_eto_internal *tip; fastf_t vec[11]; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ETO) return(-1); tip = (struct rt_eto_internal *)ip->idb_ptr; @@ -1404,11 +1413,13 @@ INTCLAMP(MAGNITUDE(tip->eto_C) * mm2local)); bu_vls_strcat(str, buf); - sprintf(buf, "\tr=%g\n", INTCLAMP(tip->eto_r * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tr=%g\n", INTCLAMP(tip->eto_r * mm2local)); + bu_vls_strcat(str, buf); - sprintf(buf, "\td=%g\n", INTCLAMP(tip->eto_rd * mm2local)); - bu_vls_strcat(str, buf); + sprintf(buf, "\td=%g\n", INTCLAMP(tip->eto_rd * mm2local)); + bu_vls_strcat(str, buf); + } return(0); } @@ -1440,8 +1451,11 @@ * */ int -rt_eto_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_eto_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -117,6 +117,8 @@ int vert_count; int curr_vert; + if (rtip) RT_CK_RTI(rtip); + eip = (struct rt_extrude_internal *)ip->idb_ptr; RT_EXTRUDE_CK_MAGIC(eip); skt = eip->skt; @@ -339,6 +341,13 @@ void rt_extrude_print(const struct soltab *stp) { + struct extrude_specific *extr=(struct extrude_specific *)stp->st_specific; + + VPRINT("u vector", extr->u_vec); + VPRINT("v vector", extr->v_vec); + VPRINT("h vector", extr->unit_h); + bn_mat_print("rotation matrix", extr->rot); + bn_mat_print("inverse rotation matrix", extr->irot); } @@ -1072,21 +1081,6 @@ /** - * R T _ E X T R U D E _ U V - * - * For a hit on the surface of an extrude, return the (u, v) - * coordinates of the hit point, 0 <= u, v <= 1. - * - * u = azimuth - * v = elevation - */ -void -rt_extrude_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) -{ -} - - -/** * R T _ E X T R U D E _ F R E E */ void @@ -1116,7 +1110,7 @@ * R T _ E X T R U D E _ P L O T */ int -rt_extrude_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_extrude_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { struct rt_extrude_internal *extrude_ip; struct curve *crv=(struct curve *)NULL; @@ -2130,6 +2124,8 @@ union record *rec; unsigned char *ptr; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EXTRUDE) return(-1); extrude_ip = (struct rt_extrude_internal *)ip->idb_ptr; @@ -2175,6 +2171,8 @@ unsigned char *ptr; int rem; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EXTRUDE) return(-1); @@ -2221,7 +2219,7 @@ const mat_t mat, const struct db_i *dbip, struct resource *resp, - const int minor_type) + const int minor_type __attribute__((unused))) { struct rt_extrude_internal *extrude_ip; struct rt_db_internal tmp_ip; @@ -2302,9 +2300,12 @@ V3INTCLAMPARGS(u), V3INTCLAMPARGS(v)); bu_vls_strcat(str, buf); - snprintf(buf, 256, "\tsketch name: %s\n", extrude_ip->sketch_name); - bu_vls_strcat(str, buf); + if (verbose) { + snprintf(buf, 256, "\tsketch name: %s\n", extrude_ip->sketch_name); + bu_vls_strcat(str, buf); + } + return(0); } @@ -2357,6 +2358,7 @@ struct rt_extrude_internal *eip, *eop; point_t tmp_vec; + if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); RT_CK_RESOURCE(resp) eip = (struct rt_extrude_internal *)ip->idb_ptr; @@ -2527,8 +2529,11 @@ * */ int -rt_extrude_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_extrude_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -780,7 +780,7 @@ 1, /* 27 Solid of extrusion */ rt_extrude_prep, rt_extrude_shot, rt_extrude_print, rt_extrude_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, - rt_extrude_uv, rt_extrude_curve, rt_extrude_class, rt_extrude_free, + rt_nul_uv, rt_extrude_curve, rt_extrude_class, rt_extrude_free, rt_extrude_plot, rt_nul_vshot, rt_extrude_tess, rt_nul_tnurb, rt_extrude_import5, rt_extrude_export5, rt_extrude_import4, rt_extrude_export4, rt_extrude_ifree, Modified: brlcad/trunk/src/librt/primitives/xxx/xxx.c =================================================================== --- brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -88,12 +88,13 @@ rt_xxx_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct rt_xxx_internal *xxx_ip; - register struct xxx_specific *xxx; - const struct bn_tol *tol = &rtip->rti_tol; + if (stp) RT_CK_SOLTAB(stp); RT_CK_DB_INTERNAL(ip); xxx_ip = (struct rt_xxx_internal *)ip->idb_ptr; RT_XXX_CK_MAGIC(xxx_ip); + + return 0; } @@ -103,8 +104,12 @@ void rt_xxx_print(const struct soltab *stp) { - register const struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + const struct xxx_specific *xxx; + + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); } @@ -121,11 +126,15 @@ int rt_xxx_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; - register struct seg *segp; - const struct bn_tol *tol = &ap->a_rt_i->rti_tol; + struct xxx_specific *xxx; + if (!stp) return -1; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return -1; + RT_CK_SOLTAB(stp); + + if (rp) RT_CK_RAY(rp); + /* the EXAMPLE_NEW_SEGMENT block shows how one might add a new result * if the ray did hit the primitive. the segment values would need to * be adjusted accordingly to match real values instead of -1. @@ -158,9 +167,13 @@ void rt_xxx_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); } @@ -173,9 +186,13 @@ void rt_xxx_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ @@ -194,8 +211,12 @@ void rt_xxx_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); } @@ -205,9 +226,13 @@ void rt_xxx_free(struct soltab *stp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + bu_free((char *)xxx, "xxx_specific"); } @@ -348,7 +373,7 @@ int rt_xxx_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_xxx_internal *xxx_ip = + struct rt_xxx_internal *xxx_ip = (struct rt_xxx_internal *)ip->idb_ptr; char buf[256]; @@ -374,7 +399,7 @@ void rt_xxx_ifree(struct rt_db_internal *ip, struct resource *resp) { - register struct rt_xxx_internal *xxx_ip; + struct rt_xxx_internal *xxx_ip; RT_CK_DB_INTERNAL(ip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-28 08:53:44
|
Revision: 37030 http://brlcad.svn.sourceforge.net/brlcad/?rev=37030&view=rev Author: brlcad Date: 2009-12-28 08:53:31 +0000 (Mon, 28 Dec 2009) Log Message: ----------- quell a slew of strict compilation warnings/errors adding in extra parameter validation and denoting unused attributes Modified Paths: -------------- brlcad/trunk/src/librt/primitives/grip/grip.c brlcad/trunk/src/librt/primitives/half/half.c brlcad/trunk/src/librt/primitives/hf/hf.c brlcad/trunk/src/librt/primitives/hyp/hyp.c brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/metaball/metaball_tri.c brlcad/trunk/src/librt/primitives/mirror.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/grip/grip.c =================================================================== --- brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -503,13 +503,13 @@ { struct rt_grip_internal *gip; + if (r) *r = NULL; + if (m) NMG_CK_MODEL(m); + RT_CK_DB_INTERNAL(ip); gip = (struct rt_grip_internal *)ip->idb_ptr; RT_GRIP_CK_MAGIC(gip); - if (r) *r = NULL; - if (m) NMG_CK_MODEL(m); - /* XXX tess routine needed */ return(-1); } Modified: brlcad/trunk/src/librt/primitives/half/half.c =================================================================== --- brlcad/trunk/src/librt/primitives/half/half.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/half/half.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -74,6 +74,8 @@ struct rt_half_internal *hip; register struct half_specific *halfp; + if (rtip) RT_CK_RTI(rtip); + hip = (struct rt_half_internal *)ip->idb_ptr; RT_HALF_CK_MAGIC(hip); @@ -211,6 +213,8 @@ fastf_t slant_factor; /* Direction dot Normal */ fastf_t norm_dist; + if (ap) RT_CK_APPLICATION(ap); + /* for each ray/halfspace pair */ for (i = 0; i < n; i++) { if (stp[i] == 0) continue; /* indicates "skip this pair" */ @@ -291,11 +295,12 @@ * direction orthogonal to normal, and indicate no curvature. */ void -rt_hlf_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_hlf_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { - register struct half_specific *halfp = - (struct half_specific *)stp->st_specific; + struct half_specific *halfp = (struct half_specific *)stp->st_specific; + if (hitp) RT_CK_HIT(hitp); + bn_vec_ortho(cvp->crv_pdir, halfp->half_eqn); cvp->crv_c1 = cvp->crv_c2 = 0; } @@ -313,8 +318,7 @@ void rt_hlf_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) { - register struct half_specific *halfp = - (struct half_specific *)stp->st_specific; + struct half_specific *halfp = (struct half_specific *)stp->st_specific; vect_t P_A; fastf_t f; @@ -427,7 +431,7 @@ * the plane, with the outward normal drawn shorter. */ int -rt_hlf_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_hlf_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct rt_half_internal *hip; vect_t cent; /* some point on the plane */ @@ -495,6 +499,8 @@ point_t orig_pt, pt; register double f, t; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); hip = (struct rt_half_internal *)ip->idb_ptr; RT_HALF_CK_MAGIC(hip); @@ -555,6 +561,8 @@ fastf_t orig_eqn[3*2]; register double f, t; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; if (rp->u_id != ID_SOLID) { @@ -611,6 +619,8 @@ struct rt_half_internal *hip; union record *rec; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_HALF) return(-1); hip = (struct rt_half_internal *)ip->idb_ptr; @@ -641,6 +651,8 @@ plane_t tmp_plane; register double f, t; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 4); @@ -696,6 +708,8 @@ struct rt_half_internal *hip; fastf_t scaled_dist; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_HALF) return -1; hip = (struct rt_half_internal *)ip->idb_ptr; @@ -736,10 +750,12 @@ RT_HALF_CK_MAGIC(hip); bu_vls_strcat(str, "halfspace\n"); - sprintf(buf, "\tN (%g, %g, %g) d=%g\n", - V3INTCLAMPARGS(hip->eqn), /* should have unit length */ - INTCLAMP(hip->eqn[W] * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tN (%g, %g, %g) d=%g\n", + V3INTCLAMPARGS(hip->eqn), /* should have unit length */ + INTCLAMP(hip->eqn[W] * mm2local)); + bu_vls_strcat(str, buf); + } return(0); } @@ -769,7 +785,7 @@ * R T _ H L F _ T E S S */ int -rt_hlf_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_hlf_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct rt_half_internal *vip; @@ -777,6 +793,9 @@ vip = (struct rt_half_internal *)ip->idb_ptr; RT_HALF_CK_MAGIC(vip); + if (r) *r = NULL; + if (m) NMG_CK_MODEL(m); + /* XXX tess routine needed */ return(-1); } @@ -787,8 +806,11 @@ * */ int -rt_hlf_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_hlf_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/hf/hf.c =================================================================== --- brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -365,7 +365,7 @@ static int -rt_hf_cell_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct hit *hitp, int xCell, int yCell) +hf_cell_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct hit *hitp, int xCell, int yCell) { register struct hf_specific *hfp = (struct hf_specific *)stp->st_specific; @@ -379,8 +379,10 @@ int fnd1, fnd2; register double hf2mm = hfp->hf_file2mm; + if (ap) RT_CK_APPLICATION(ap); + if (RT_G_DEBUG & DEBUG_HF) { - bu_log("rt_hf_cell_shot(%s): %d, %d\n", stp->st_name, + bu_log("hf_cell_shot(%s): %d, %d\n", stp->st_name, xCell, yCell); } { @@ -542,7 +544,7 @@ if (!fnd1 && !fnd2) return 0; if (RT_G_DEBUG & DEBUG_HF) { - bu_log("rt_hf_cell_shot: hit(%d).\n", fnd1+fnd2); + bu_log("hf_cell_shot: hit(%d).\n", fnd1+fnd2); } /* @@ -906,7 +908,7 @@ VSUB2(tmp, rp->r_pt, hf->hf_V); xCell = tmp[X]/hf->hf_Xlen*hf->hf_w; yCell = tmp[Y]/hf->hf_Ylen*hf->hf_n; - if ((r=rt_hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { + if ((r=hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { if ((nhits+=r)>MAXHITS) bu_bomb("g_hf.c: too many hits.\n"); hp+=r; } @@ -1075,7 +1077,7 @@ if (maxZ+deltaZ > lowest && minZ-deltaZ < highest) { int r; - if ((r=rt_hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { + if ((r=hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { if ((nhits+=r)>=MAXHITS) bu_bomb("g_hf.c: too many hits.\n"); hp+=r; } @@ -1139,7 +1141,7 @@ minZ-deltaZ < highest) { int r; /* DO HIT */ - if ((r=rt_hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { + if ((r=hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { if ((nhits+=r)>=MAXHITS) bu_bomb("g_hf.c: too many hits.\n"); hp+=r; } @@ -1316,7 +1318,7 @@ if (maxZ+deltaZ > lowest && minZ-deltaZ < highest) { int r; - if ((r=rt_hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { + if ((r=hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { if ((nhits+=r)>=MAXHITS) bu_bomb("g_hf.c: too many hits.\n"); hp+=r; } @@ -1380,7 +1382,7 @@ minZ-deltaZ < highest) { int r; /* DO HIT */ - if ((r=rt_hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { + if ((r=hf_cell_shot(stp, rp, ap, hp, xCell, yCell))) { if ((nhits+=r)>=MAXHITS) bu_bomb("g_hf.c: too many hits.\n"); hp+=r; } @@ -1496,8 +1498,13 @@ * Return the curvature of the hf. */ void -rt_hf_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_hf_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + struct hf_specific *hf = (struct hf_specific *)stp->st_specific; + if (!hf || !cvp || !hitp) + return; + RT_CK_HIT(hitp); + cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ @@ -1515,13 +1522,17 @@ * v = elevation */ void -rt_hf_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_hf_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - register struct hf_specific *hf = - (struct hf_specific *)stp->st_specific; + struct hf_specific *hf = (struct hf_specific *)stp->st_specific; vect_t delta; fastf_t r = 0; + if (ap) RT_CK_APPLICATION(ap); + if (!hf || !hitp || !uvp || !stp) + return; + RT_CK_HIT(hitp); + VSUB2(delta, hitp->hit_point, hf->hf_V); uvp->uv_u = delta[X] / hf->hf_Xlen; uvp->uv_v = delta[Y] / hf->hf_Ylen; @@ -1567,7 +1578,7 @@ * R T _ H F _ P L O T */ int -rt_hf_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_hf_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { struct rt_hf_internal *xip; register unsigned short *sp = (unsigned short *)NULL; @@ -1821,7 +1832,7 @@ * 0 OK. *r points to nmgregion that holds this tessellation. */ int -rt_hf_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_hf_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct rt_hf_internal *xip; @@ -1829,6 +1840,9 @@ xip = (struct rt_hf_internal *)ip->idb_ptr; RT_HF_CK_MAGIC(xip); + if (r) *r = NULL; + if (m) NMG_CK_MODEL(m); + return(-1); } @@ -1840,7 +1854,7 @@ * Apply modeling transformations as well. */ int -rt_hf_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_hf_import4(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { struct rt_hf_internal *xip; union record *rp; @@ -1853,6 +1867,8 @@ int count; int got; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -2018,6 +2034,8 @@ union record *rec; struct bu_vls str; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_HF) return(-1); xip = (struct rt_hf_internal *)ip->idb_ptr; @@ -2052,6 +2070,10 @@ int rt_hf_import5(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { + if (ip) RT_CK_DB_INTERNAL(ip); + if (!ep || !mat) return -1; + if (dbip) RT_CK_DBI(dbip); + bu_log("As of release 6.0 the HF primitive is superceded by the DSP primitive.\n"); bu_log("\tTo convert HF primitives to DSP, use 'dbupgrade'.\n"); /* The rt_hf_to_dsp() routine can also be used */ @@ -2060,8 +2082,12 @@ int -rt_hf_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) +rt_hf_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm __attribute__((unused)), const struct db_i *dbip) { + if (!ep) return -1; + if (ip) RT_CK_DB_INTERNAL(ip); + if (dbip) RT_CK_DBI(dbip); + bu_log("As of release 6.0 the HF primitive is superceded by the DSP primitive.\n"); bu_log("\tTo convert HF primitives to DSP, use 'dbupgrade'.\n"); /* The rt_hf_to_dsp() routine can also be used */ @@ -2086,8 +2112,10 @@ RT_HF_CK_MAGIC(xip); bu_vls_printf(str, "Height Field (HF) mm2local=%g\n", mm2local); - bu_vls_struct_print(str, rt_hf_parse, ip->idb_ptr); - bu_vls_strcat(str, "\n"); + if (verbose) { + bu_vls_struct_print(str, rt_hf_parse, ip->idb_ptr); + bu_vls_strcat(str, "\n"); + } return(0); } @@ -2126,8 +2154,11 @@ * */ int -rt_hf_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_hf_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/hyp/hyp.c =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -209,7 +209,6 @@ { register struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; register struct seg *segp; - const struct bn_tol *tol = &ap->a_rt_i->rti_tol; struct hit hits[5]; /* 4 potential hits (top, bottom, 2 sides) */ register struct hit *hitp; /* pointer to hitpoint */ @@ -510,9 +509,10 @@ void rt_hyp_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - register struct hyp_specific *hyp = - (struct hyp_specific *)stp->st_specific; + struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; + if (ap) RT_CK_APPLICATION(ap); + /* u = (angle from semi-major axis on basic hyperboloid) / (2*pi) */ uvp->uv_u = M_1_PI * 0.5 * (atan2(-hitp->hit_vpriv[X] * hyp->hyp_r2, hitp->hit_vpriv[Y] * hyp->hyp_r1) + M_PI); @@ -566,20 +566,10 @@ /** - * R T _ H Y P _ C L A S S - */ -int -rt_hyp_class(const struct soltab *stp, const vect_t min, const vect_t max, const struct bn_tol *tol) -{ - return(0); -} - - -/** * R T _ H Y P _ P L O T */ int -rt_hyp_plot(struct bu_list *vhead, struct rt_db_internal *incoming, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_hyp_plot(struct bu_list *vhead, struct rt_db_internal *incoming, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { register int i, j; /* loop indices */ struct rt_hyp_internal *hyp_in; @@ -754,12 +744,11 @@ /* Convert rel to absolute by scaling by smallest side */ dtol = ttol->rel * 2 * r2; if (ttol->abs <= 0.0) { - if (dtol <= 0.0) + if (dtol <= 0.0) { /* No tolerance given, use a default */ dtol = 2 * 0.10 * r2; /* 10% */ - else - /* Use absolute-ized relative tolerance */ - ; + } + /* else, use absolute-ized relative tolerance */ } else { /* Absolute tolerance was given, pick smaller */ if (ttol->rel <= 0.0 || dtol > ttol->abs) @@ -883,7 +872,7 @@ i = 0; nseg = 0; theta_prev = bn_twopi; - pos_a = pts_a; /*->next; /* skip over apex of hyp */ + pos_a = pts_a; /*->next; */ /* skip over apex of hyp */ pos_b = pts_b; /*->next; */ while (pos_a) { VSCALE(A, Au, pos_a->p[X]); /* semimajor axis */ @@ -1188,6 +1177,7 @@ RT_CK_DB_INTERNAL(ip); BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 3 * 4); @@ -1233,6 +1223,8 @@ struct rt_hyp_internal *hyp_ip; fastf_t vec[ELEMENTS_PER_VECT * 4]; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_HYP) return(-1); hyp_ip = (struct rt_hyp_internal *)ip->idb_ptr; @@ -1296,11 +1288,13 @@ INTCLAMP(hyp_ip->hyp_A[Z] * mm2local)); bu_vls_strcat(str, buf); - sprintf(buf, "\tMag B=%g\n", INTCLAMP(hyp_ip->hyp_b * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tMag B=%g\n", INTCLAMP(hyp_ip->hyp_b * mm2local)); + bu_vls_strcat(str, buf); - sprintf(buf, "\tNeck to Base Ratio=%g\n", INTCLAMP(hyp_ip->hyp_bnr * mm2local)); - bu_vls_strcat(str, buf); + sprintf(buf, "\tNeck to Base Ratio=%g\n", INTCLAMP(hyp_ip->hyp_bnr * mm2local)); + bu_vls_strcat(str, buf); + } return(0); } @@ -1338,6 +1332,9 @@ int rt_hyp_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -180,6 +180,8 @@ struct wdb_metaballpt *mbpt, *nmbpt; fastf_t minfstr = +INFINITY; + if (rtip) RT_CK_RTI(rtip); + mb = ip->idb_ptr; RT_METABALL_CK_MAGIC(mb); @@ -259,6 +261,8 @@ fastf_t rt_metaball_point_value_metaball(const point_t *p, const struct bu_list *points) { + if (!p || !points) bu_bomb("oops"); + bu_log("ERROR: rt_metaball_point_value_metaball() is not implemented"); /* Makes the compiler happy */ @@ -428,6 +432,8 @@ vect_t v; fastf_t a; + if (rp) RT_CK_RAY(rp); + VSETALL(hitp->hit_normal, 0.0); switch (mb->method) { @@ -460,8 +466,13 @@ * Return the curvature of the metaball. */ void -rt_metaball_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_metaball_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + struct rt_metaball_internal *metaball = (struct rt_metaball_internal *)stp->st_specific; + + if (!metaball || !cvp) return; + if (hitp) RT_CK_HIT(hitp); + bu_log("ERROR: rt_metaball_curve() is not implemented\n"); return; } @@ -477,8 +488,16 @@ * v = elevation */ void -rt_metaball_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_metaball_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { + struct rt_metaball_internal *metaball = (struct rt_metaball_internal *)stp->st_specific; + + if (ap) RT_CK_APPLICATION(ap); + if (stp) RT_CK_SOLTAB(stp); + if (hitp) RT_CK_HIT(hitp); + if (!uvp) return; + if (!metaball) return; + bu_log("ERROR: rt_metaball_uv() is not implemented\n"); return; } @@ -490,8 +509,7 @@ void rt_metaball_free(register struct soltab *stp) { - register struct rt_metaball_internal *metaball = - (struct rt_metaball_internal *)stp->st_specific; + struct rt_metaball_internal *metaball = (struct rt_metaball_internal *)stp->st_specific; bu_free((char *)metaball, "rt_metaball_internal"); } @@ -531,7 +549,7 @@ * R T _ M E T A B A L L _ P L O T */ int -rt_metaball_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_metaball_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct rt_metaball_internal *mb; struct wdb_metaballpt *mbpt; @@ -567,6 +585,8 @@ fastf_t *buf; int metaball_count = 0, i; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); metaball_count = bu_glong((unsigned char *)ep->ext_buf); buf = (fastf_t *)bu_malloc((metaball_count*5+1)*SIZEOF_NETWORK_DOUBLE, "rt_metaball_import5: buf"); @@ -621,6 +641,8 @@ int metaball_count = 0, i = 1; fastf_t *buf = NULL; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_METABALL) return(-1); @@ -661,7 +683,7 @@ * tab, and give parameter values. */ int -rt_metaball_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) +rt_metaball_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local __attribute__((unused))) { int metaball_count = 0; char buf[BUFSIZ]; @@ -757,8 +779,11 @@ * */ int -rt_metaball_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_metaball_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return 0; /* OK */ } @@ -768,19 +793,19 @@ * db get/g2asc */ int -rt_metaball_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) +rt_metaball_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr __attribute__((unused))) { - struct rt_metaball_internal *mb=(struct rt_metaball_internal *)intern->idb_ptr; - struct wdb_metaballpt *mbpt; + struct rt_metaball_internal *mb = (struct rt_metaball_internal *)intern->idb_ptr; + struct wdb_metaballpt *mbpt = NULL; RT_METABALL_CK_MAGIC(mb); /* write crap in */ - bu_vls_printf(log, "metaball %d %.25G {", mb->method, mb->threshold); + bu_vls_printf(logstr, "metaball %d %.25G {", mb->method, mb->threshold); for (BU_LIST_FOR(mbpt, wdb_metaballpt, &mb->metaball_ctrl_head)) - bu_vls_printf(log, "{%.25G %.25G %.25G %.25G %.25G}", + bu_vls_printf(logstr, "{%.25G %.25G %.25G %.25G %.25G}", V3ARGS(mbpt->coord), mbpt->fldstr, mbpt->sweat); - bu_vls_printf(log, "}"); + bu_vls_printf(logstr, "}"); return 0; } @@ -791,7 +816,7 @@ * used for db put/asc2g */ int -rt_metaball_adjust (struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv, struct resource *resp) +rt_metaball_adjust(struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) { struct rt_metaball_internal *mb; char *pts, *pend;; Modified: brlcad/trunk/src/librt/primitives/metaball/metaball_tri.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball_tri.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/metaball/metaball_tri.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -62,6 +62,9 @@ struct bu_vls times; struct wdb_metaballpt *mbpt; + if (r) *r = NULL; + if (m) NMG_CK_MODEL(m); + RT_CK_DB_INTERNAL(ip); mb = (struct rt_metaball_internal *)ip->idb_ptr; RT_METABALL_CK_MAGIC(mb); Modified: brlcad/trunk/src/librt/primitives/mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/mirror.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/mirror.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -40,7 +40,7 @@ /* FIXME: temporary until all mirror functions are migrated and the * functab is utilized. */ -#define RT_DECLARE_MIRROR(name) BU_EXTERN(int rt_##name##_mirror, (struct rt_db_internal *ip, const plane_t plane)); +#define RT_DECLARE_MIRROR(name) BU_EXTERN(int rt_##name##_mirror, (struct rt_db_internal *ip, const plane_t plane)) RT_DECLARE_MIRROR(tor); RT_DECLARE_MIRROR(tgc); Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-28 08:12:16 UTC (rev 37029) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-28 08:53:31 UTC (rev 37030) @@ -950,7 +950,7 @@ 1, /* 38 but "should" be 34 Hyperboloid */ rt_hyp_prep, rt_hyp_shot, rt_hyp_print, rt_hyp_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, - rt_hyp_uv, rt_hyp_curve, rt_hyp_class, rt_hyp_free, + rt_hyp_uv, rt_hyp_curve, rt_nul_class, rt_hyp_free, rt_hyp_plot, rt_nul_vshot, rt_hyp_tess, rt_nul_tnurb, rt_hyp_import5, rt_hyp_export5, rt_nul_import4, rt_nul_export4, rt_hyp_ifree, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-30 19:07:29
|
Revision: 37070 http://brlcad.svn.sourceforge.net/brlcad/?rev=37070&view=rev Author: brlcad Date: 2009-12-30 19:07:16 +0000 (Wed, 30 Dec 2009) Log Message: ----------- more slews of quellage and cleanup, dead code elimination, exact floating point comparisons, and param checking Modified Paths: -------------- brlcad/trunk/src/librt/primitives/bot/bot_mirror.c brlcad/trunk/src/librt/primitives/bot/g_bot_include.c brlcad/trunk/src/librt/primitives/brep/brep.cpp brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp brlcad/trunk/src/librt/primitives/bspline/bspline.cpp brlcad/trunk/src/librt/primitives/bspline/nurb_basis.c Modified: brlcad/trunk/src/librt/primitives/bot/bot_mirror.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot_mirror.c 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/bot/bot_mirror.c 2009-12-30 19:07:16 UTC (rev 37070) @@ -104,7 +104,6 @@ vectp_t np = &bot->normals[i*3]; vect_t n1; vect_t n2; - fastf_t ang; mat_t mat; VMOVE(n1, np); Modified: brlcad/trunk/src/librt/primitives/bot/g_bot_include.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/g_bot_include.c 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/bot/g_bot_include.c 2009-12-30 19:07:16 UTC (rev 37070) @@ -399,6 +399,8 @@ register int i; register fastf_t los; int surfno; + static const int IN = 0; + static const int OUT = 1; if (rp) RT_CK_RAY(rp); @@ -423,13 +425,13 @@ /* set in hit */ segp->seg_in = hits[i]; - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); /* set out hit */ segp->seg_out.hit_surfno = surfno; segp->seg_out.hit_dist = segp->seg_in.hit_dist + los; VMOVE(segp->seg_out.hit_vpriv, hits[i].hit_vpriv); - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); segp->seg_out.hit_private = segp->seg_in.hit_private; segp->seg_out.hit_rayp = &ap->a_ray; @@ -442,7 +444,7 @@ /* set in hit */ segp->seg_in.hit_surfno = surfno; VMOVE(segp->seg_in.hit_vpriv, hits[i].hit_vpriv); - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); segp->seg_in.hit_private = hits[i].hit_private; segp->seg_in.hit_dist = hits[i].hit_dist - (los*0.5); segp->seg_in.hit_rayp = &ap->a_ray; @@ -451,7 +453,7 @@ segp->seg_out.hit_surfno = surfno; segp->seg_out.hit_dist = segp->seg_in.hit_dist + los; VMOVE(segp->seg_out.hit_vpriv, hits[i].hit_vpriv); - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); segp->seg_out.hit_private = hits[i].hit_private; segp->seg_out.hit_rayp = &ap->a_ray; @@ -481,6 +483,8 @@ */ fastf_t rm_dist=0.0; int removed=0; + static const int IN = 0; + static const int OUT = 1; if (bot) RT_BOT_CK_MAGIC(bot); @@ -493,11 +497,11 @@ /* set in hit */ segp->seg_in = hits[0]; - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); /* set out hit */ segp->seg_out = hits[0]; - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); BU_LIST_INSERT(&(seghead->l), &(segp->l)); return(1); @@ -527,10 +531,8 @@ * duplicate, then it was likely on an edge, so remove the one * we left. */ - register int j; - for (i=0; i<nhits; i++) { - if (hits[i].hit_dist == rm_dist) { + if (NEAR_ZERO(hits[i].hit_dist - rm_dist, SMALL_FASTF)) { for (j=i; j<nhits-1; j++) hits[j] = hits[j+1]; nhits--; @@ -549,12 +551,12 @@ /* set in hit */ segp->seg_in = hits[i]; trip = (XGLUE(tri_specific_, TRI_TYPE) *)hits[i].hit_private; - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); /* set out hit */ segp->seg_out = hits[i+1]; trip = (XGLUE(tri_specific_, TRI_TYPE) *)hits[i+1].hit_private; - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); BU_LIST_INSERT(&(seghead->l), &(segp->l)); } @@ -585,6 +587,8 @@ struct bot_specific *bot = (struct bot_specific *)stp->st_specific; register struct seg *segp; register int i; + static const int IN = 0; + static const int OUT = 1; RT_CK_SOLTAB(stp); @@ -597,11 +601,11 @@ /* set in hit */ segp->seg_in = hits[i]; - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); /* set out hit */ segp->seg_out = hits[i]; - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); BU_LIST_INSERT(&(seghead->l), &(segp->l)); } /* Every hit turns into two, and makes a seg. No leftovers */ @@ -686,7 +690,6 @@ int changed=0; for (j=i; j<k; j++) { - int l; if (j%2) { if (hits[j].hit_vpriv[X] > 0) { @@ -823,7 +826,6 @@ } if ((nhits&1)) { - register int i; /* * If this condition exists, it is almost certainly due to the * dn==0 check above. Thus, we will make the last surface @@ -928,10 +930,10 @@ segp->seg_stp = stp; segp->seg_in = hits[i]; /* struct copy */ trip = (XGLUE(tri_specific_, TRI_TYPE) *)hits[i].hit_private; - BOT_UNORIENTED_NORM(&segp->seg_in, 0); + BOT_UNORIENTED_NORM(&segp->seg_in, IN); segp->seg_out = hits[i+1]; /* struct copy */ trip = (XGLUE(tri_specific_, TRI_TYPE) *)hits[i+1].hit_private; - BOT_UNORIENTED_NORM(&segp->seg_out, 1); + BOT_UNORIENTED_NORM(&segp->seg_out, OUT); BU_LIST_INSERT(&(seghead->l), &(segp->l)); } Modified: brlcad/trunk/src/librt/primitives/brep/brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/brep/brep.cpp 2009-12-30 19:07:16 UTC (rev 37070) @@ -35,9 +35,6 @@ #include <set> #include <utility> -#define BN_VMATH_PREFIX_INDICES 1 -#define ROOT_TOL 1.E-7 - #include "assert.h" #include "vmath.h" @@ -50,8 +47,14 @@ #include "brep_debug.h" -#define fastf_t double +#define BN_VMATH_PREFIX_INDICES 1 +#define ROOT_TOL 1.E-7 + +/* uncomment to enable debug plotting */ +/* #define PLOTTING 1 */ + + #ifdef __cplusplus extern "C" { #endif @@ -98,8 +101,6 @@ /* FIXME: fugly */ static int hit_count = 0; -//debugging -static int icount = 0; /******************************************************************************** * Auxiliary functions @@ -151,17 +152,17 @@ to.x = umax + 1; ON_Line ray(from, to); int intersections = 0; - for (int i = 0; i < face.LoopCount(); i++) { - ON_BrepLoop* loop = face.Loop(i); + // for (int i = 0; i < face.LoopCount(); i++) { + // ON_BrepLoop* loop = face.Loop(i); // for each trim - for (int j = 0; j < loop->m_ti.Count(); j++) { - ON_BrepTrim& trim = face.Brep()->m_T[loop->m_ti[j]]; - const ON_Curve* trimCurve = trim.TrimCurveOf(); + // for (int j = 0; j < loop->m_ti.Count(); j++) { + // ON_BrepTrim& trim = face.Brep()->m_T[loop->m_ti[j]]; + // const ON_Curve* trimCurve = trim.TrimCurveOf(); // intersections += brep_count_intersections(ray, trimCurve); - //ray.IntersectCurve(trimCurve, intersections, 0.0001); - //intersections += trimCurve->NumIntersectionsWith(ray); - } - } + // ray.IntersectCurve(trimCurve, intersections, 0.0001); + // intersections += trimCurve->NumIntersectionsWith(ray); + // } + // } /* If we base trimming on the number of intersections with, rhino * generated curves won't raytrace. In fact, we need to ignore @@ -410,8 +411,16 @@ * R T _ B R E P _ P R I N T */ void -rt_brep_print(register const struct soltab *stp) +rt_brep_print(const struct soltab *stp) { + struct brep_specific* bs; + + if (!stp) + return; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return; } @@ -548,7 +557,7 @@ void -brep_newton_iterate(const ON_Surface* surf, plane_ray& pr, pt2d_t R, ON_3dVector& su, ON_3dVector& sv, pt2d_t uv, pt2d_t out_uv) +brep_newton_iterate(plane_ray& pr, pt2d_t R, ON_3dVector& su, ON_3dVector& sv, pt2d_t uv, pt2d_t out_uv) { mat2d_t jacob = { VDOT(pr.n1, ((fastf_t*)su)), VDOT(pr.n1, ((fastf_t*)sv)), VDOT(pr.n2, ((fastf_t*)su)), VDOT(pr.n2, ((fastf_t*)sv)) }; @@ -600,7 +609,7 @@ found = false; break; } - brep_newton_iterate(surf, pr, Rcurr, su, sv, nuv, new_uv); + brep_newton_iterate(pr, Rcurr, su, sv, nuv, new_uv); //Check for closed surface wrap around if (surf->IsClosed(0)) { @@ -685,49 +694,6 @@ } -int -brep_edge_check(int reason, - const BBNode* sbv, - const ON_BrepFace* face, - const ON_Surface* surf, - const ON_Ray& r, - HitList& hits) -{ - /* if the intersection was not found for any reason, we need to - * check and see if we are close to any topological edges; we may - * have hit a crack... - * - * the proper way to do this is to only look at edges - * interesecting with the subsurface bounding box... but for now, - * we'll look at the edges associated with the face for the - * bounding box... - */ - - // XXX - optimize this - - set<ON_BrepEdge*> edges; - ON_3dPoint pt; - for (int i = 0; i < face->LoopCount(); i++) { - ON_BrepLoop* loop = face->Loop(i); - for (int j = 0; j < loop->TrimCount(); j++) { - ON_BrepTrim* trim = loop->Trim(j); - ON_BrepEdge* edge = trim->Edge(); - pair<set<ON_BrepEdge*>::iterator, bool> res = edges.insert(edge); - // if (res.second) { - // only check if its the first time we've seen this edge - const ON_Curve* curve = edge->EdgeCurveOf(); - //Sample s; - /*if (curve->CloseTo(ON_3dPoint(hits.back().point), BREP_EDGE_MISS_TOLERANCE, s)) { - TRACE1("CLOSE TO EDGE"); - hits.back().closeToEdge = true; - return BREP_INTERSECT_FOUND; - }*/ - } - } - return BREP_INTERSECT_TRIMMED; -} - - void utah_F(const ON_3dPoint &S, const ON_3dVector &p1, const double p1d, const ON_3dVector &p2, const double p2d, double &f1, double &f2) { @@ -937,7 +903,7 @@ void -utah_newton_solver(const BBNode* sbv, const ON_Surface* surf, const ON_Ray& r, ON_2dPoint &uv, double& t, ON_3dVector &N, bool& converged) +utah_newton_solver(const ON_Surface* surf, const ON_Ray& r, ON_2dPoint &uv, double& t, ON_3dVector &N, bool& converged) { int i; double j11, j12, j21, j22; @@ -1104,7 +1070,6 @@ // Someone needs to work on GetClosestPoint not to fail // It is failing on nurbs curves that aren't rational // For now if it fails we will use the approx. approach - double currentDistance; double shortestDistance; double t; ON_Interval domain = trimCurve->Domain(); @@ -1160,7 +1125,6 @@ utah_brep_intersect_test(const BBNode* sbv, const ON_BrepFace* face, const ON_Surface* surf, pt2d_t uv, ON_Ray& ray, HitList& hits) { ON_3dVector N[2]; - bool hit = false; double t[2]; ON_2dPoint ouv[2]; int found = BREP_INTERSECT_ROOT_DIVERGED; @@ -1260,7 +1224,7 @@ bool converged = false; fastf_t closesttrim; - utah_newton_solver(sbv, surf, ray, ouv, t, N, converged); + utah_newton_solver(surf, ray, ouv, t, N, converged); /* * DDR. The utah people are using this t_min which represents the * last point hit along the ray to ensure we are looking at points @@ -1329,15 +1293,13 @@ ON_3dVector sv; plane_ray pr; fastf_t closesttrim; + brep_get_plane_ray(ray, pr); + for (int i = 0; i < BREP_MAX_ITERATIONS; i++) { brep_r(surf, pr, uv, pt, su, sv, Rcurr); - //fastf_t d = v2mag(Rcurr); - //keith fastf_t d = DIST_PT_PT(pt, ray.m_origin); + fastf_t d = v2mag(Rcurr); - //keith - //if (d < BREP_INTERSECTION_ROOT_EPSILON) { - //keith if (NEAR_ZERO(d-Dlast, BREP_INTERSECTION_ROOT_EPSILON)) { if (d < BREP_INTERSECTION_ROOT_EPSILON) { TRACE1("R:"<<ON_PRINT2(Rcurr)); found = BREP_INTERSECT_FOUND; break; @@ -1346,12 +1308,13 @@ diverge_iter++; if (diverge_iter > 10) break; - //return brep_edge_check(found, sbv, face, surf, ray, hits); } - brep_newton_iterate(surf, pr, Rcurr, su, sv, uv, new_uv); + + brep_newton_iterate(pr, Rcurr, su, sv, uv, new_uv); move(uv, new_uv); Dlast = d; } + BRNode* trimBR = NULL; int trim_status = ((BBNode*)sbv)->isTrimmed(uv, trimBR, closesttrim); if ((found > 0) && (trim_status != 1)) { @@ -1366,15 +1329,6 @@ hits.back().oob = true; return BREP_INTERSECT_OOB; } - - -// if (sbv->doTrimming() && brep_pt_trimmed(uv, *face)) { -// hits.back().trimmed = true; -// TRACE1("Should be TRIMMED!"); -// // if the point was trimmed, see if it is close to the edge before removing it -// return brep_edge_check(BREP_INTERSECT_TRIMMED, sbv, face, surf, ray, hits); -// //return BREP_INTERSECT_TRIMMED; -// } } return found; @@ -1430,8 +1384,15 @@ int rt_brep_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) { - struct brep_specific* bs = (struct brep_specific*)stp->st_specific; + struct brep_specific* bs; + if (!stp) + return 0; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return 0; + /* First, test for intersections between the Surface Tree * hierarchy and the ray - if one or more leaf nodes are * intersected, there is potentially a hit and more evaluation is @@ -1452,7 +1413,7 @@ const ON_BrepFace* f = sbv->m_face; const ON_Surface* surf = f->SurfaceOf(); pt2d_t uv = {sbv->m_u.Mid(), sbv->m_v.Mid()}; - int status = utah_brep_intersect_test(sbv, f, surf, uv, r, all_hits); + utah_brep_intersect_test(sbv, f, surf, uv, r, all_hits); s++; } @@ -1859,19 +1820,8 @@ hits.pop_back(); } } - - /* - if (hits.size() > 1 && (hits.size() % 2) != 0) { - HitList::iterator i = hits.end(); - --i; - hits.erase(i); - } - if (hits.size() > 1 && (hits.size() % 2) != 0) { - HitList::iterator i = hits.begin(); - hits.erase(i); - } - */ +#if 0 if (false) { if (hits.size() > 1 && (hits.size() % 2) != 0) { bu_log("**** ERROR odd number of hits: %d\n", hits.size()); @@ -1946,7 +1896,7 @@ VMOVE(last_point, i->point); hitCount += 1; } -#if PLOTTING +#ifdef PLOTTING pcount++; if (pcount > -1) { point_t ray; @@ -1964,7 +1914,7 @@ MissList::iterator m = misses.begin(); for (HitList::iterator i = all_hits.begin(); i != all_hits.end(); ++i) { -#if PLOTTING +#ifdef PLOTTING if (pcount > -1) { // set the color of point and normal if (i->trimmed && i->closeToEdge) { @@ -1992,16 +1942,6 @@ } #endif - // if ((num == 0 && dot > 0) || sign(dot) == lastSign) { - // // remove hits with "bad" normals - // i = hits.erase(i); - // --i; - // TRACE("removed a hit!"); - // continue; - // } else { - // lastSign = sign(dot); - // } - TRACE("hit " << num << ": " << ON_PRINT3(i->point) << " [" << dot << "]"); while ((m != misses.end()) && (m->first == num)) { static int reasons = 0; @@ -2034,9 +1974,12 @@ ++m; } } +#endif bool hit = false; if (hits.size() > 1) { + +#if 0 if (false) { //TRACE2("screen xy: " << ap->a_x << ", " << ap->a_y); bu_log("**** ERROR odd number of hits: %d\n", hits.size()); @@ -2086,6 +2029,8 @@ bu_log("\n**********************\n"); } +#endif + //#define KODDHIT #ifdef KODDHIT //ugly debugging hack to raytrace single surface and not worry about odd hits static fastf_t diststep = 0.0; @@ -2186,9 +2131,18 @@ * Given ONE ray distance, return the normal and entry/exit point. */ void -rt_brep_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_brep_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { + struct brep_specific* bs; + if (!hitp || !stp || !rp) + return; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return; + + /* XXX todo */ } @@ -2198,8 +2152,17 @@ * Return the curvature of the nurb. */ void -rt_brep_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_brep_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + struct brep_specific* bs; + + if (!cvp || !hitp || !stp) + return; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return; + /* XXX todo */ } @@ -2234,6 +2197,16 @@ void rt_brep_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) { + struct brep_specific* bs; + + if (ap) RT_CK_APPLICATION(ap); + if (!stp) + return; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return; + uvp->uv_u = hitp->hit_vpriv[0]; uvp->uv_v = hitp->hit_vpriv[1]; } @@ -2246,7 +2219,16 @@ rt_brep_free(register struct soltab *stp) { TRACE1("rt_brep_free"); - struct brep_specific* bs = (struct brep_specific*)stp->st_specific; + + struct brep_specific* bs; + + if (!stp) + return; + RT_CK_SOLTAB(stp); + bs = (struct brep_specific*)stp->st_specific; + if (!bs) + return; + brep_specific_delete(bs); } @@ -2349,11 +2331,11 @@ * */ int -rt_brep_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_brep_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { TRACE1("rt_brep_plot"); struct rt_brep_internal* bi; - int i, j, k; + int i; RT_CK_DB_INTERNAL(ip); bi = (struct rt_brep_internal*)ip->idb_ptr; @@ -2430,11 +2412,11 @@ while (domainval < 1.0 && crudestep <= 100) { olddomainval = domainval; if (crudestep == 0) domainval = find_next_point(crv, domainval, 0.1, tol->dist*100, 0); - if (crudestep >= 1 || domainval == 0.0) { + if (crudestep >= 1 || NEAR_ZERO(domainval, SMALL_FASTF)) { crudestep++; domainval = olddomainval + (1.0 - olddomainval)/100*crudestep; } - ON_3dPoint p = crv->PointAt(dom.ParameterAt(domainval)); + p = crv->PointAt(dom.ParameterAt(domainval)); VMOVE(pt1, p); RT_ADD_VLIST(vhead, pt1, BN_VLIST_LINE_DRAW); } @@ -2540,20 +2522,17 @@ int rt_brep_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { - return -1; struct rt_brep_internal *bi; - struct shell *s; - struct vertex **verts; - struct faceuse **faces; - fastf_t *norms; - struct vertex **vertp[4]; - int nfaces; + if (!r || !m || !ip || !ttol || !tol) + return -1; RT_CK_DB_INTERNAL(ip); bi = (struct rt_brep_internal *)ip->idb_ptr; RT_BREP_CK_MAGIC(bi); - + + /* XXX - implement me */ + return -1; } @@ -2706,11 +2685,12 @@ * R T _ B R E P _ E X P O R T 5 */ int -rt_brep_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) +rt_brep_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm __attribute__((unused)), const struct db_i *dbip) { TRACE1("rt_brep_export5"); struct rt_brep_internal* bi; + if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_BREP) return -1; bi = (struct rt_brep_internal*)ip->idb_ptr; @@ -2756,11 +2736,17 @@ * R T _ B R E P _ I M P O R T 5 */ int -rt_brep_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_brep_import5(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { ON::Begin(); TRACE1("rt_brep_import5"); + + if (mat) { + bu_log("Importing with a matrix, but don't know what to do with it.. fix me in %s:%d\n", __FILE__, __LINE__); + } + struct rt_brep_internal* bi; + if (dbip) RT_CK_DBI(dbip); BU_CK_EXTERNAL(ep); RT_CK_DB_INTERNAL(ip); ip->idb_major_type = DB5_MAJORTYPE_BRLCAD; @@ -2813,7 +2799,7 @@ * R T _ B R E P _ D E S C R I B E */ int -rt_brep_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) +rt_brep_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local __attribute__((unused))) { BU_CK_VLS(str); RT_CK_DB_INTERNAL(ip); @@ -2830,15 +2816,17 @@ ON_String onstr = ON_String(wonstr); bu_vls_strcat(str, "Boundary Representation (BREP) object\n"); - const char *description = onstr.Array(); - // skip the first "ON_Brep:" line - while (description && description[0] && description[0] != '\n') { - description++; + if (verbose) { + const char *description = onstr.Array(); + // skip the first "ON_Brep:" line + while (description && description[0] && description[0] != '\n') { + description++; + } + if (description && description[0] && description[0] == '\n') { + description++; + } + bu_vls_strcat(str, description); } - if (description && description[0] && description[0] == '\n') { - description++; - } - bu_vls_strcat(str, description); return 0; } @@ -2848,7 +2836,7 @@ * R T _ B R E P _ T C L G E T */ int -rt_brep_tclget(Tcl_Interp *interp, const struct rt_db_internal *intern, const char *attr) +rt_brep_tclget(Tcl_Interp *, const struct rt_db_internal *, const char *) { return 0; } @@ -2858,7 +2846,7 @@ * R T _ B R E P _ T C L A D J U S T */ int -rt_brep_tcladjust(Tcl_Interp *interp, struct rt_db_internal *intern, int argc, char **argv) +rt_brep_tcladjust(Tcl_Interp *, struct rt_db_internal *, int, char **) { return 0; } @@ -2868,7 +2856,7 @@ * R T _ B R E P _ P A R A M S */ int -rt_brep_params(struct pc_pc_set *, const struct rt_db_internal *ip) +rt_brep_params(struct pc_pc_set *, const struct rt_db_internal *) { return 0; } Modified: brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp 2009-12-30 19:07:16 UTC (rev 37070) @@ -55,12 +55,7 @@ } #endif -/* FIXME: fugly */ -static int hit_count = 0; -//debugging -static int icount = 0; - /******************************************************************************** * Auxiliary functions ********************************************************************************/ @@ -138,7 +133,7 @@ */ //if ((!bb->m_trimmed) && (!bb->m_checkTrim)) { if (false) { - bb->GetBBox(min, max); + //bb->GetBBox(min, max); } else { VSET(min, bb->m_u[0]+0.001, bb->m_v[0]+0.001, 0.0); VSET(max, bb->m_u[1]-0.001, bb->m_v[1]-0.001, 0.0); @@ -249,13 +244,12 @@ if (true) { bb->GetBBox(min, max); } else { - VSET(min, bb->m_u[0]+0.001, bb->m_v[0]+0.001, 0.0); - VSET(max, bb->m_u[1]-0.001, bb->m_v[1]-0.001, 0.0); + // VSET(min, bb->m_u[0]+0.001, bb->m_v[0]+0.001, 0.0); + // VSET(max, bb->m_u[1]-0.001, bb->m_v[1]-0.001, 0.0); } BB_PLOT(min, max); M_COLOR_PLOT(YELLOW); - bool start=true; point_t a, b; ON_3dPoint p; BRNode* trimBR = NULL; @@ -301,7 +295,7 @@ } if (false) { - bb->GetBBox(min, max); + // bb->GetBBox(min, max); } else { VSET(min, bb->m_u[0]+0.001, bb->m_v[0]+0.001, 0.0); VSET(max, bb->m_u[1]-0.001, bb->m_v[1]-0.001, 0.0); @@ -393,7 +387,7 @@ void -plotUVDomain2d(ON_BrepFace &face, struct bn_vlblock *vbp, int plotres) +plotUVDomain2d(ON_BrepFace &face, struct bn_vlblock *vbp) { register struct bu_list *vhead; const ON_Surface* surf = face.SurfaceOf(); @@ -540,8 +534,6 @@ plotsurface(ON_Surface &surf, struct bn_vlblock *vbp, int isocurveres, int gridres) { register struct bu_list *vhead; - double umin, umax; - double vmin, vmax; double pt1[3], pt2[3]; ON_2dPoint from, to; @@ -579,8 +571,6 @@ plotsurfacenormals(ON_Surface &surf, struct bn_vlblock *vbp, int gridres) { register struct bu_list *vhead; - double umin, umax; - double vmin, vmax; double pt1[3], pt2[3]; ON_2dPoint from, to; @@ -609,7 +599,6 @@ plotcurve(ON_Curve &curve, struct bn_vlblock *vbp, int plotres) { register struct bu_list *vhead; - double umin, umax; double pt1[3], pt2[3]; ON_2dPoint from, to; @@ -874,11 +863,8 @@ int -brep_facetrim_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres, bool dim3d) +brep_facetrim_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int plotres, bool dim3d) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -889,7 +875,7 @@ for (index = 0; index < brep->m_F.Count(); index++) { ON_BrepFace& face = brep->m_F[index]; if (!dim3d) - plotUVDomain2d(face, vbp, plotres); + plotUVDomain2d(face, vbp); plottrim(face, vbp, plotres, dim3d); } } else if (index < brep->m_S.Count()) { @@ -898,7 +884,7 @@ ON_BrepFace& face = faces[index]; face.Dump(tl); if (!dim3d) - plotUVDomain2d(face, vbp, plotres); + plotUVDomain2d(face, vbp); plottrim(face, vbp, plotres, dim3d); } } @@ -907,11 +893,8 @@ int -brep_trim_direction_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres) +brep_trim_direction_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int plotres) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -936,11 +919,8 @@ int -brep_surface_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres) +brep_surface_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int plotres) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -963,11 +943,8 @@ int -brep_surface_normal_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres) +brep_surface_normal_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -990,11 +967,8 @@ int -brep_edge3d_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres) +brep_edge3d_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int plotres) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -1018,11 +992,8 @@ int -brep_trim_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, int index, int plotres, bool dim3d) +brep_trim_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, int index, int plotres, bool dim3d) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -1045,11 +1016,8 @@ int -brep_surfaceleafs_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, bool dim3d, int index, int plotres) +brep_surfaceleafs_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, bool dim3d, int index, int) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { @@ -1075,11 +1043,8 @@ int -brep_trimleafs_plot(struct bu_vls *vls, struct brep_specific* bs, struct rt_brep_internal* bi, struct bn_vlblock *vbp, bool dim3d, int index, int plotres) +brep_trimleafs_plot(struct bu_vls *, struct brep_specific* bs, struct rt_brep_internal*, struct bn_vlblock *vbp, bool dim3d, int index, int) { - register struct bu_list *vhead; - struct bn_vlblock *surface_leafs_vbp; - ON_TextLog tl(stderr); ON_Brep* brep = bs->brep; if (brep == NULL || !brep->IsValid(&tl)) { Modified: brlcad/trunk/src/librt/primitives/bspline/bspline.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/bspline/bspline.cpp 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/bspline/bspline.cpp 2009-12-30 19:07:16 UTC (rev 37070) @@ -228,7 +228,6 @@ int rt_nurb_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { - int i; struct nurb_specific *nurbs; struct rt_nurb_internal *sip; const struct bn_tol *tol = &rtip->rti_tol; @@ -644,10 +643,6 @@ rt_nurb_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { struct rt_nurb_internal *sip; - register int i; - register int j; - register fastf_t * vp; - int s; RT_CK_DB_INTERNAL(ip); sip = (struct rt_nurb_internal *) ip->idb_ptr; @@ -795,7 +790,7 @@ * R T _ N U R B _ T E S S */ int -rt_nurb_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_nurb_tess(struct nmgregion **, struct model *, struct rt_db_internal *, const struct rt_tess_tol *, const struct bn_tol *) { return(-1); } @@ -812,6 +807,8 @@ register int i; int s; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; if (rp->u_id != ID_BSOLID) { @@ -901,7 +898,7 @@ * R T _ N U R B _ E X P O R T */ int -rt_nurb_export4(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) +rt_nurb_export4(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm __attribute__((unused)), const struct db_i *dbip) { register int rec_ptr; struct rt_nurb_internal *sip; @@ -912,6 +909,8 @@ dbfloat_t *vp; int n; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_BSPLINE) return(-1); sip = (struct rt_nurb_internal *) ip->idb_ptr; @@ -1004,13 +1003,15 @@ * R T _ N U R B _ E X P O R T 5 */ int -rt_nurb_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) +rt_nurb_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm __attribute__((unused)), const struct db_i *dbip) { struct rt_nurb_internal *sip; int s; unsigned char *cp; int coords; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_BSPLINE) return(-1); sip = (struct rt_nurb_internal *) ip->idb_ptr; @@ -1080,6 +1081,7 @@ unsigned char *cp; fastf_t tmp_vec[4]; + if (dbip) RT_CK_DBI(dbip); BU_CK_EXTERNAL(ep); RT_CK_DB_INTERNAL(ip); @@ -1268,7 +1270,7 @@ int -rt_nurb_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) +rt_nurb_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { struct rt_nurb_internal *nurb=(struct rt_nurb_internal *)intern->idb_ptr; struct face_g_snurb *srf; @@ -1278,44 +1280,42 @@ RT_NURB_CK_MAGIC(nurb); if (attr == (char *)NULL) { - bu_vls_strcpy(log, "bspline"); - bu_vls_printf(log, " N %d S {", nurb->nsrf); + bu_vls_strcpy(logstr, "bspline"); + bu_vls_printf(logstr, " N %d S {", nurb->nsrf); for (i=0; i<nurb->nsrf; i++) { srf = nurb->srfs[i]; - bu_vls_printf(log, " { O {%d %d} s {%d %d} T %d u {", + bu_vls_printf(logstr, " { O {%d %d} s {%d %d} T %d u {", srf->order[0], srf->order[1], srf->s_size[0], srf->s_size[1], srf->pt_type/* !!! -- export this?, srf->u.k_size */); for (j=0; j<srf->u.k_size; j++) { - bu_vls_printf(log, " %.25G", srf->u.knots[j]); + bu_vls_printf(logstr, " %.25G", srf->u.knots[j]); } - bu_vls_printf(log, "} v {"/* !!! -- export this?, srf->v.k_size */); + bu_vls_printf(logstr, "} v {"/* !!! -- export this?, srf->v.k_size */); for (j=0; j<srf->v.k_size; j++) { - bu_vls_printf(log, " %.25G", srf->v.knots[j]); + bu_vls_printf(logstr, " %.25G", srf->v.knots[j]); } - bu_vls_strcat(log, "} P {"); + bu_vls_strcat(logstr, "} P {"); coords = RT_NURB_EXTRACT_COORDS(srf->pt_type); for (j=0; j<srf->s_size[0]*srf->s_size[1]; j++) { for (k=0; k<coords; k++) { - bu_vls_printf(log, " %.25G", + bu_vls_printf(logstr, " %.25G", srf->ctl_points[j*coords + k]); } } - bu_vls_strcat(log, " } }"); + bu_vls_strcat(logstr, " } }"); } - bu_vls_printf(log, " }"); + bu_vls_printf(logstr, " }"); return BRLCAD_OK; - } else { - bu_vls_printf(log, "Nurb has no attribute '%s'", attr); - return BRLCAD_ERROR; } - return BRLCAD_OK; + bu_vls_printf(logstr, "Nurb has no attribute '%s'", attr); + return BRLCAD_ERROR; } int -rt_nurb_adjust(struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) +rt_nurb_adjust(struct bu_vls *logstr, struct rt_db_internal *intern, int argc, char **argv) { struct rt_nurb_internal *nurb; int srf_no; @@ -1363,7 +1363,7 @@ tmp_len = 0; if (tcl_obj_to_int_array(brlcad_interp, srf_param_array[i+1], &order, &tmp_len) != 2) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: unable to parse surface\n"); return BRLCAD_ERROR; } @@ -1371,7 +1371,7 @@ tmp_len = 0; if (tcl_obj_to_int_array(brlcad_interp, srf_param_array[i+1], &s_size, &tmp_len) != 2) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: unable to parse surface\n"); return BRLCAD_ERROR; } @@ -1389,7 +1389,7 @@ if (!order || !s_size || !u_pts || !v_pts || u_size == 0 || v_size == 0 || pt_type == 0) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: Need all other details set before ctl points\n"); return BRLCAD_ERROR; } @@ -1412,7 +1412,7 @@ tmp2 = tmp_len; if (tcl_obj_to_fastf_array(brlcad_interp, srf_param_array[i+1], &srf->ctl_points, &tmp_len) != tmp2) { - bu_vls_printf(log, + bu_vls_printf(logstr, "ERROR: unable to parse surface\n"); return BRLCAD_ERROR; } @@ -1436,7 +1436,7 @@ * */ int -rt_nurb_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) +rt_nurb_params(struct pc_pc_set *, const struct rt_db_internal *) { return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/bspline/nurb_basis.c =================================================================== --- brlcad/trunk/src/librt/primitives/bspline/nurb_basis.c 2009-12-30 18:18:02 UTC (rev 37069) +++ brlcad/trunk/src/librt/primitives/bspline/nurb_basis.c 2009-12-30 19:07:16 UTC (rev 37070) @@ -85,7 +85,7 @@ den = ( *(kk + order - 1) - k1); - if ( den == 0.0) + if (NEAR_ZERO(den, SMALL_FASTF)) b1 = 0.0; else b1 = ((mu - k1) * @@ -93,7 +93,7 @@ den = ( k3 - k2); - if (den == 0.0) + if (NEAR_ZERO(den, SMALL_FASTF)) b2 = 0.0; else b2 = ((k3 - mu) * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-30 20:44:43
|
Revision: 37079 http://brlcad.svn.sourceforge.net/brlcad/?rev=37079&view=rev Author: brlcad Date: 2009-12-30 20:44:37 +0000 (Wed, 30 Dec 2009) Log Message: ----------- more param and unused var quelling, s/log/logstr/ too Modified Paths: -------------- brlcad/trunk/src/librt/primitives/cline/cline.c brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp Modified: brlcad/trunk/src/librt/primitives/cline/cline.c =================================================================== --- brlcad/trunk/src/librt/primitives/cline/cline.c 2009-12-30 20:44:00 UTC (rev 37078) +++ brlcad/trunk/src/librt/primitives/cline/cline.c 2009-12-30 20:44:37 UTC (rev 37079) @@ -1018,7 +1018,7 @@ int -rt_cline_get(struct bu_vls *log, const struct rt_db_internal *intern, const char *attr) +rt_cline_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { register struct rt_cline_internal *cli = (struct rt_cline_internal *)intern->idb_ptr; @@ -1026,20 +1026,20 @@ RT_CLINE_CK_MAGIC(cli); if (attr == (char *)NULL) { - bu_vls_strcpy(log, "cline"); - bu_vls_printf(log, " V {%.25G %.25G %.25G}", V3ARGS(cli->v)); - bu_vls_printf(log, " H {%.25G %.25G %.25G}", V3ARGS(cli->h)); - bu_vls_printf(log, " R %.25G T %.25G", cli->radius, cli->thickness); + bu_vls_strcpy(logstr, "cline"); + bu_vls_printf(logstr, " V {%.25G %.25G %.25G}", V3ARGS(cli->v)); + bu_vls_printf(logstr, " H {%.25G %.25G %.25G}", V3ARGS(cli->h)); + bu_vls_printf(logstr, " R %.25G T %.25G", cli->radius, cli->thickness); } else if (*attr == 'V') - bu_vls_printf(log, "%.25G %.25G %.25G", V3ARGS(cli->v)); + bu_vls_printf(logstr, "%.25G %.25G %.25G", V3ARGS(cli->v)); else if (*attr == 'H') - bu_vls_printf(log, "%.25G %.25G %.25G", V3ARGS(cli->h)); + bu_vls_printf(logstr, "%.25G %.25G %.25G", V3ARGS(cli->h)); else if (*attr == 'R') - bu_vls_printf(log, "%.25G", cli->radius); + bu_vls_printf(logstr, "%.25G", cli->radius); else if (*attr == 'T') - bu_vls_printf(log, "%.25G", cli->thickness); + bu_vls_printf(logstr, "%.25G", cli->thickness); else { - bu_vls_strcat(log, "ERROR: unrecognized attribute, must be V, H, R, or T!!!"); + bu_vls_strcat(logstr, "ERROR: unrecognized attribute, must be V, H, R, or T!!!"); return BRLCAD_ERROR; } @@ -1048,7 +1048,7 @@ int -rt_cline_adjust(struct bu_vls *log, struct rt_db_internal *intern, int argc, char **argv) +rt_cline_adjust(struct bu_vls *logstr, struct rt_db_internal *intern, int argc, char **argv) { struct rt_cline_internal *cli = (struct rt_cline_internal *)intern->idb_ptr; @@ -1064,14 +1064,14 @@ new = cli->v; if (tcl_list_to_fastf_array(brlcad_interp, argv[1], &new, &array_len) != array_len) { - bu_vls_printf(log, "ERROR: Incorrect number of coordinates for vector\n"); + bu_vls_printf(logstr, "ERROR: Incorrect number of coordinates for vector\n"); return BRLCAD_ERROR; } } else if (*argv[0] == 'H') { new = cli->h; if (tcl_list_to_fastf_array(brlcad_interp, argv[1], &new, &array_len) != array_len) { - bu_vls_printf(log, "ERROR: Incorrect number of coordinates for point\n"); + bu_vls_printf(logstr, "ERROR: Incorrect number of coordinates for point\n"); return BRLCAD_ERROR; } } else if (*argv[0] == 'R') @@ -1088,11 +1088,11 @@ int -rt_cline_form(struct bu_vls *log, const struct rt_functab *ftp) +rt_cline_form(struct bu_vls *logstr, const struct rt_functab *ftp) { RT_CK_FUNCTAB(ftp); - bu_vls_printf(log, + bu_vls_printf(logstr, "V {%%f %%f %%f} H {%%f %%f %%f} R %%f T %%f"); return BRLCAD_OK; Modified: brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-12-30 20:44:00 UTC (rev 37078) +++ brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp 2009-12-30 20:44:37 UTC (rev 37079) @@ -35,7 +35,7 @@ * R T _ D S P _ B R E P */ extern "C" void -rt_dsp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_dsp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { struct rt_dsp_internal *dsp_ip; struct bu_mapped_file *mf; @@ -55,9 +55,6 @@ *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; - ON_TextLog* dump = &dump_to_stdout; - switch (dsp_ip->dsp_datasrc) { case RT_DSP_SRC_V4_FILE: case RT_DSP_SRC_FILE: @@ -113,7 +110,7 @@ // Step 1 - create the bottom face. - point_t p_origin, p2, p3, p4; + point_t p_origin, p2, p3; ON_3dPoint plane_origin, plane_x_dir, plane_y_dir, pt2, pt3, pt4; VSETALL(p_origin, 0.0); @@ -137,7 +134,6 @@ // Second step, the "walls" ON_SimpleArray<ON_Curve *> boundary; - ON_3dPointArray *bezpoints = new ON_3dPointArray(256); // side 1 @@ -247,7 +243,7 @@ boundary.Append(s3c1); ON_Curve *s3c2 = new ON_LineCurve(s3pt2, s3pt3); boundary.Append(s3c2); - for (int x = 0; x < (dsp_ip->dsp_xcnt); x++) { + for (unsigned int x = 0; x < (dsp_ip->dsp_xcnt); x++) { ON_3dPoint *ctrlpt = new ON_3dPoint(x*1000, (dsp_ip->dsp_ycnt - 1)*1000, DSP(dsp_ip, x, dsp_ip->dsp_ycnt - 1)); bezpoints3->Append(*ctrlpt); } @@ -290,7 +286,7 @@ boundary.Append(s4c1); ON_Curve *s4c2 = new ON_LineCurve(s4pt2, s4pt3); boundary.Append(s4c2); - for (int y=0; y < (dsp_ip->dsp_ycnt); y++) { + for (unsigned int y=0; y < (dsp_ip->dsp_ycnt); y++) { ON_3dPoint *ctrlpt = new ON_3dPoint((dsp_ip->dsp_xcnt - 1)*1000, y*1000, DSP(dsp_ip, dsp_ip->dsp_xcnt - 1, y)); bezpoints4->Append(*ctrlpt); } @@ -316,8 +312,8 @@ ON_BezierSurface *bezsurf = new ON_BezierSurface(3, false, dsp_ip->dsp_xcnt, dsp_ip->dsp_ycnt); - for (int y=0; y < (dsp_ip->dsp_ycnt); y++) { - for (int x=0; x < (dsp_ip->dsp_xcnt); x++) { + for (unsigned int y=0; y < (dsp_ip->dsp_ycnt); y++) { + for (unsigned int x=0; x < (dsp_ip->dsp_xcnt); x++) { ON_3dPoint *ctrlpt = new ON_3dPoint(x*1000, y*1000, DSP(dsp_ip, x, y)); bezsurf->SetCV(x, y, *ctrlpt); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-30 22:06:38
|
Revision: 37082 http://brlcad.svn.sourceforge.net/brlcad/?rev=37082&view=rev Author: brlcad Date: 2009-12-30 22:06:30 +0000 (Wed, 30 Dec 2009) Log Message: ----------- mas quellerismos, floating point comparisons, unused vars/params Modified Paths: -------------- brlcad/trunk/src/librt/primitives/ebm/ebm.c brlcad/trunk/src/librt/primitives/ehy/ehy.c brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp brlcad/trunk/src/librt/primitives/epa/epa.c brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp brlcad/trunk/src/librt/primitives/eto/eto_brep.cpp brlcad/trunk/src/librt/primitives/extrude/extrude.c Modified: brlcad/trunk/src/librt/primitives/ebm/ebm.c =================================================================== --- brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/ebm/ebm.c 2009-12-30 22:06:30 UTC (rev 37082) @@ -83,8 +83,6 @@ BU_EXTERN(int rt_seg_planeclip, (struct seg *out_hd, struct seg *in_hd, vect_t out_norm, fastf_t in, fastf_t out, struct xray *rp, struct application *ap)); -BU_EXTERN(void rt_ebm_plate, (int x1, int y1, int x2, int y2, - double t, mat_t mat, struct bu_list *vhead)); /* * Codes to represent surface normals. In a bitmap, there are only 4 @@ -280,7 +278,7 @@ } if (RT_G_DEBUG&DEBUG_EBM)bu_log("g[X] = %d, g[Y] = %d\n", igrid[X], igrid[Y]); - if (rp->r_dir[X] == 0.0 && rp->r_dir[Y] == 0.0) { + if (NEAR_ZERO(rp->r_dir[X], SMALL_FASTF) && NEAR_ZERO(rp->r_dir[Y], SMALL_FASTF)) { register struct seg *segp; /* Ray is traveling exactly along Z axis. Just check the one @@ -316,7 +314,7 @@ } /* X setup */ - if (rp->r_dir[X] == 0.0) { + if (NEAR_ZERO(rp->r_dir[X], SMALL_FASTF)) { t[X] = INFINITY; delta[X] = 0; } else { @@ -327,7 +325,7 @@ delta[X] = ebmp->ebm_cellsize[X] * fabs(invdir[X]); } /* Y setup */ - if (rp->r_dir[Y] == 0.0) { + if (NEAR_ZERO(rp->r_dir[Y], SMALL_FASTF)) { t[Y] = INFINITY; delta[Y] = 0; } else { @@ -339,7 +337,7 @@ } #if 0 /* Z setup */ - if (rp->r_dir[Z] == 0.0) { + if (NEAR_ZERO(rp->r_dir[Z], SMALL_FASTF)) { t[Z] = INFINITY; } else { /* Consider igrid[Z] to be either 0 or 1 */ @@ -357,10 +355,10 @@ if (RT_G_DEBUG&DEBUG_EBM)bu_log("t[Y] = %g, delta[Y] = %g\n", t[Y], delta[Y]); /* Find face of entry into first cell -- max initial t value */ - if (t[X] == INFINITY) { + if (NEAR_ZERO(t[X] - INFINITY, SMALL_FASTF)) { in_index = Y; t0 = t[Y]; - } else if (t[Y] == INFINITY) { + } else if (NEAR_ZERO(t[Y] - INFINITY, SMALL_FASTF)) { in_index = X; t0 = t[X]; } else if (t[X] >= t[Y]) { @@ -1100,6 +1098,33 @@ } +/* either x1==x2, or y1==y2 */ +void +rt_ebm_plate(int x_1, int y_1, int x_2, int y_2, double t, register fastf_t *mat, register struct bu_list *vhead) +{ + point_t s, p; + point_t srot, prot; + + VSET(s, x_1, y_1, 0.0); + MAT4X3PNT(srot, mat, s); + RT_ADD_VLIST(vhead, srot, BN_VLIST_LINE_MOVE); + + VSET(p, x_1, y_1, t); + MAT4X3PNT(prot, mat, p); + RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); + + VSET(p, x_2, y_2, t); + MAT4X3PNT(prot, mat, p); + RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); + + p[Z] = 0; + MAT4X3PNT(prot, mat, p); + RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); + + RT_ADD_VLIST(vhead, srot, BN_VLIST_LINE_DRAW); +} + + /** * R T _ E B M _ P L O T */ @@ -1157,33 +1182,6 @@ } -/* either x1==x2, or y1==y2 */ -void -rt_ebm_plate(int x1, int y1, int x2, int y2, double t, register fastf_t *mat, register struct bu_list *vhead) -{ - point_t s, p; - point_t srot, prot; - - VSET(s, x1, y1, 0.0); - MAT4X3PNT(srot, mat, s); - RT_ADD_VLIST(vhead, srot, BN_VLIST_LINE_MOVE); - - VSET(p, x1, y1, t); - MAT4X3PNT(prot, mat, p); - RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); - - VSET(p, x2, y2, t); - MAT4X3PNT(prot, mat, p); - RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); - - p[Z] = 0; - MAT4X3PNT(prot, mat, p); - RT_ADD_VLIST(vhead, prot, BN_VLIST_LINE_DRAW); - - RT_ADD_VLIST(vhead, srot, BN_VLIST_LINE_DRAW); -} - - struct ebm_edge { struct bu_list l; @@ -1196,24 +1194,24 @@ /* either x1==x2, or y1==y2 */ static void -rt_ebm_edge(int x1, int y1, int x2, int y2, int left, struct ebm_edge *edges) +rt_ebm_edge(int x_1, int y_1, int x_2, int y_2, int left, struct ebm_edge *edges) { struct ebm_edge *new_edge; new_edge = (struct ebm_edge *)bu_malloc(sizeof(struct ebm_edge), "rt_ebm_tess: new_edge"); /* make all edges go from lower values to larger */ - if (y1 < y2 || x1 < x2) { - new_edge->x1 = x1; - new_edge->y1 = y1; - new_edge->x2 = x2; - new_edge->y2 = y2; + if (y_1 < y_2 || x_1 < x_2) { + new_edge->x1 = x_1; + new_edge->y1 = y_1; + new_edge->x2 = x_2; + new_edge->y2 = y_2; new_edge->left = left; } else { - new_edge->x1 = x2; - new_edge->y1 = y2; - new_edge->x2 = x1; - new_edge->y2 = y1; + new_edge->x1 = x_2; + new_edge->y1 = y_2; + new_edge->x2 = x_1; + new_edge->y2 = y_1; new_edge->left = (!left); } new_edge->v = (struct vertex *)NULL; Modified: brlcad/trunk/src/librt/primitives/ehy/ehy.c =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/ehy/ehy.c 2009-12-30 22:06:30 UTC (rev 37082) @@ -577,7 +577,7 @@ switch (hitp->hit_surfno) { case EHY_NORM_BODY: /* top plate, polar coords */ - if (pprime[Z] == -1.0) { + if (NEAR_ZERO(pprime[Z] + 1.0, SMALL_FASTF)) { /* i.e., == -1.0 */ /* bottom pt of body */ uvp->uv_u = 0; } else { @@ -634,16 +634,19 @@ rt_ehy_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t c, dtol, f, mag_a, mag_h, ntol, r1, r2; - fastf_t **ellipses, theta_prev, theta_new, rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); + fastf_t **ellipses, theta_prev, theta_new; int *pts_dbl, i, j, nseg; int jj, na, nb, nell, recalc_b; mat_t R; mat_t invR; point_t p1; - struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b, *rt_ptalloc(void); + struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b; struct rt_ehy_internal *xip; vect_t A, Au, B, Bu, Hu, V, Work; + struct rt_pt_node *rt_ptalloc(void); + fastf_t rt_ell_ang(fastf_t *, fastf_t, fastf_t, fastf_t, fastf_t); + RT_CK_DB_INTERNAL(ip); xip = (struct rt_ehy_internal *)ip->idb_ptr; RT_EHY_CK_MAGIC(xip); @@ -914,7 +917,7 @@ rt_ehy_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) { fastf_t c, dtol, f, mag_a, mag_h, ntol, r1, r2, cprime; - fastf_t **ellipses, theta_prev, theta_new, rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); + fastf_t **ellipses, theta_prev, theta_new; int *pts_dbl, face, i, j, nseg; int jj, na, nb, nell, recalc_b; mat_t R; @@ -924,7 +927,7 @@ mat_t SoR; struct rt_ehy_internal *xip; point_t p1; - struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b, *rt_ptalloc(void); + struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b; struct shell *s; struct faceuse **outfaceuses = NULL; struct faceuse *fu_top; @@ -935,6 +938,9 @@ vect_t A, Au, B, Bu, Hu, V; struct bu_ptbl vert_tab; + struct rt_pt_node *rt_ptalloc(void); + fastf_t rt_ell_ang(fastf_t *, fastf_t, fastf_t, fastf_t, fastf_t); + RT_CK_DB_INTERNAL(ip); xip = (struct rt_ehy_internal *)ip->idb_ptr; RT_EHY_CK_MAGIC(xip); Modified: brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/ehy/ehy_brep.cpp 2009-12-30 22:06:30 UTC (rev 37082) @@ -35,7 +35,7 @@ * R T _ E H Y _ B R E P */ extern "C" void -rt_ehy_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_ehy_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { struct rt_ehy_internal *eip; @@ -48,13 +48,13 @@ ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; - point_t p1_origin, p2_origin; + point_t p1_origin; ON_3dPoint plane1_origin, plane2_origin; ON_3dVector plane_x_dir, plane_y_dir; // First, find plane in 3 space corresponding to the bottom face of the EPA. - vect_t tmp, x_dir, y_dir; + vect_t x_dir, y_dir; VMOVE(x_dir, eip->ehy_Au); VCROSS(y_dir, eip->ehy_Au, eip->ehy_H); @@ -103,7 +103,7 @@ double MP = MX + intercept_length; double w = (MX/MP)/(1-MX/MP); - point_t ep1, ep2, ep3, tmppt; + point_t ep1, ep2, ep3; VSET(ep1, -eip->ehy_r1, 0, 0); VSET(ep2, 0, 0, w*intercept_dist); VSET(ep3, eip->ehy_r1, 0, 0); @@ -168,7 +168,7 @@ int surfindex = (*b)->m_S.Count(); ON_BrepFace& face = (*b)->NewFace(surfindex - 1); int faceindex = (*b)->m_F.Count(); - ON_BrepLoop* outerloop = (*b)->NewOuterLoop(faceindex-1); + (*b)->NewOuterLoop(faceindex-1); bu_log("Valid brep face: %d\n", face.IsValid(dump)); } Modified: brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp 2009-12-30 22:06:30 UTC (rev 37082) @@ -33,7 +33,7 @@ * R T _ E L L _ B R E P */ extern "C" void -rt_ell_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_ell_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { struct rt_ell_internal *eip; @@ -74,9 +74,9 @@ // Make final BREP structure (*b)->m_S.Append(ellcurvedsurf); int surfindex = (*b)->m_S.Count(); - ON_BrepFace& face = (*b)->NewFace(surfindex - 1); + (*b)->NewFace(surfindex - 1); int faceindex = (*b)->m_F.Count(); - ON_BrepLoop* outerloop = (*b)->NewOuterLoop(faceindex-1); + (*b)->NewOuterLoop(faceindex-1); } Modified: brlcad/trunk/src/librt/primitives/epa/epa.c =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/epa/epa.c 2009-12-30 22:06:30 UTC (rev 37082) @@ -562,7 +562,7 @@ switch (hitp->hit_surfno) { case EPA_NORM_BODY: /* top plate, polar coords */ - if (pprime[Z] == -1.0) { + if (NEAR_ZERO(pprime[Z] + 1.0, SMALL_FASTF)) { /* i.e., == -1.0 */ /* bottom pt of body */ uvp->uv_u = 0; } else { @@ -618,16 +618,19 @@ rt_epa_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t dtol, f, mag_a, mag_h, ntol, r1, r2; - fastf_t **ellipses, theta_new, theta_prev, rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); + fastf_t **ellipses, theta_new, theta_prev; int *pts_dbl, i, j, nseg; int jj, na, nb, nell, recalc_b; mat_t R; mat_t invR; struct rt_epa_internal *xip; point_t p1; - struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b, *rt_ptalloc(void); + struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b; vect_t A, Au, B, Bu, Hu, V, Work; + struct rt_pt_node *rt_ptalloc(void); + fastf_t rt_ell_ang(fastf_t *, fastf_t, fastf_t, fastf_t, fastf_t); + #ifndef NO_MAGIC_CHECKING RT_CK_DB_INTERNAL(ip); #endif Modified: brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/epa/epa_brep.cpp 2009-12-30 22:06:30 UTC (rev 37082) @@ -35,7 +35,7 @@ * R T _ E P A _ B R E P */ extern "C" void -rt_epa_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_epa_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { struct rt_epa_internal *eip; @@ -48,13 +48,13 @@ ON_TextLog dump_to_stdout; ON_TextLog* dump = &dump_to_stdout; - point_t p1_origin, p2_origin; + point_t p1_origin; ON_3dPoint plane1_origin, plane2_origin; ON_3dVector plane_x_dir, plane_y_dir; // First, find plane in 3 space corresponding to the bottom face of the EPA. - vect_t tmp, x_dir, y_dir; + vect_t x_dir, y_dir; VMOVE(x_dir, eip->epa_Au); VCROSS(y_dir, eip->epa_Au, eip->epa_H); @@ -183,9 +183,9 @@ (*b)->m_S.Append(epacurvedsurf); int surfindex = (*b)->m_S.Count(); - ON_BrepFace& face = (*b)->NewFace(surfindex - 1); + (*b)->NewFace(surfindex - 1); int faceindex = (*b)->m_F.Count(); - ON_BrepLoop* outerloop = (*b)->NewOuterLoop(faceindex-1); + (*b)->NewOuterLoop(faceindex-1); } Modified: brlcad/trunk/src/librt/primitives/eto/eto_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto_brep.cpp 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/eto/eto_brep.cpp 2009-12-30 22:06:30 UTC (rev 37082) @@ -34,10 +34,8 @@ * R T _ E T O _ B R E P */ extern "C" void -rt_eto_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_eto_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { - mat_t R; - mat_t S; struct rt_eto_internal *eip; *b = NULL; @@ -47,7 +45,7 @@ RT_ETO_CK_MAGIC(eip); point_t p_origin; - vect_t v1, v1a, x_dir, y_dir, halfx, halfy; + vect_t v1, v1a, x_dir, y_dir; ON_3dPoint plane_origin; ON_3dVector plane_x_dir, plane_y_dir; Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-30 21:40:28 UTC (rev 37081) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-30 22:06:30 UTC (rev 37082) @@ -1793,7 +1793,6 @@ get_indices(cur_seg, &loop_start, &loop_end); while (loop_end != loop_start) { - int j; int added_seg; added_seg = 0; @@ -1839,7 +1838,6 @@ for (i=0; i<BU_PTBL_END(&loops); i++) { struct bu_ptbl *loopa; - int j; loopa = (struct bu_ptbl *)BU_PTBL_GET(&loops, i); for (j=i+1; j<BU_PTBL_END(&loops); j++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-30 22:09:46
|
Revision: 37083 http://brlcad.svn.sourceforge.net/brlcad/?rev=37083&view=rev Author: brlcad Date: 2009-12-30 22:09:39 +0000 (Wed, 30 Dec 2009) Log Message: ----------- s/free/release/ to avoid shadowing the function Modified Paths: -------------- brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/half/half.c brlcad/trunk/src/librt/primitives/table.c Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-30 22:06:30 UTC (rev 37082) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-30 22:09:39 UTC (rev 37083) @@ -2339,7 +2339,7 @@ struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, - int free, + int release, struct db_i *dbip, struct resource *resp) { Modified: brlcad/trunk/src/librt/primitives/half/half.c =================================================================== --- brlcad/trunk/src/librt/primitives/half/half.c 2009-12-30 22:06:30 UTC (rev 37082) +++ brlcad/trunk/src/librt/primitives/half/half.c 2009-12-30 22:09:39 UTC (rev 37083) @@ -491,7 +491,7 @@ struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, - int free, + int release, struct db_i *dbip, struct resource *resp) { @@ -518,7 +518,7 @@ /* * We are done with the input solid so free it if required. */ - if (free && ip != op) + if (release && ip != op) rt_db_free_internal(ip); /* Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-30 22:06:30 UTC (rev 37082) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-30 22:09:39 UTC (rev 37083) @@ -70,7 +70,7 @@ BU_EXTERN(int rt_##name##_adjust, (struct bu_vls *logstr, struct rt_db_internal *intern, int argc, char **argv)); \ BU_EXTERN(int rt_##name##_describe, (struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local, struct resource *resp, struct db_i *db_i)); \ BU_EXTERN(void rt_##name##_make, (const struct rt_functab *ftp, struct rt_db_internal *intern)); \ - BU_EXTERN(int rt_##name##_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int free, struct db_i *dbip, struct resource *resp)); \ + BU_EXTERN(int rt_##name##_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int release, struct db_i *dbip, struct resource *resp)); \ BU_EXTERN(int rt_##name##_params, (struct pc_pc_set *ps, const struct rt_db_internal *ip)); \ BU_EXTERN(int rt_##name##_mirror, (struct rt_db_internal *ip, const plane_t *plane)); \ extern const struct bu_structparse rt_##name##_parse[] @@ -256,7 +256,7 @@ /* PNTS */ /* From here in table.c */ -BU_EXTERN(int rt_generic_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int free, struct db_i *dbip, struct resource *resp)); +BU_EXTERN(int rt_generic_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, int release, struct db_i *dbip, struct resource *resp)); /* Stub Tcl interfaces */ int rt_nul_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { @@ -998,7 +998,7 @@ struct db_i *db_i)); int NDEF(rt_nul_xform, (struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, - int free, struct db_i *dbip, struct resource *resp)); + int release, struct db_i *dbip, struct resource *resp)); int NDEF(rt_nul_params, (struct pc_pc_set * ps, const struct rt_db_internal *op)); void DEF(rt_nul_make, (const struct rt_functab *ftp, struct rt_db_internal *intern)); @@ -1167,7 +1167,7 @@ struct rt_db_internal *op, const mat_t mat, struct rt_db_internal *ip, - int free, + int release, struct db_i *dbip, struct resource *resp) { @@ -1190,7 +1190,7 @@ rt_functab[id].ft_name); return -1; /* FAIL */ } - if ((free || op == ip)) rt_db_free_internal(ip); + if ((release || op == ip)) rt_db_free_internal(ip); RT_INIT_DB_INTERNAL(op); if (rt_functab[id].ft_import4(op, &ext, mat, dbip, resp) < 0) { @@ -1207,7 +1207,7 @@ return -1; /* FAIL */ } - if ((free || op == ip)) { + if ((release || op == ip)) { if (ip->idb_avs.magic == BU_AVS_MAGIC) { /* grab the attributes before they are lost * by rt_db_free_internal or RT_INIT_DB_INTERNAL @@ -1220,7 +1220,7 @@ RT_INIT_DB_INTERNAL(op); - if (!free && op != ip) { + if (!release && op != ip) { /* just copy the attributes from ip to op */ if (ip->idb_avs.magic == BU_AVS_MAGIC) { bu_avs_init(&op->idb_avs, ip->idb_avs.count, "avs"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2009-12-31 02:27:24
|
Revision: 37085 http://brlcad.svn.sourceforge.net/brlcad/?rev=37085&view=rev Author: brlcad Date: 2009-12-31 02:27:16 +0000 (Thu, 31 Dec 2009) Log Message: ----------- major quellage, dead code elimination, unused params/vars, exact floating point comparisons. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/grip/grip.c brlcad/trunk/src/librt/primitives/half/half.c brlcad/trunk/src/librt/primitives/hf/hf.c brlcad/trunk/src/librt/primitives/hyp/hyp.c brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp brlcad/trunk/src/librt/primitives/metaball/metaball.c brlcad/trunk/src/librt/primitives/nmg/nmg.c brlcad/trunk/src/librt/primitives/nmg/nmg_bool.c brlcad/trunk/src/librt/primitives/nmg/nmg_ck.c brlcad/trunk/src/librt/primitives/nmg/nmg_class.c brlcad/trunk/src/librt/primitives/nmg/nmg_eval.c brlcad/trunk/src/librt/primitives/nmg/nmg_extrude.c brlcad/trunk/src/librt/primitives/sketch/sketch.c Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -2384,7 +2384,7 @@ VMOVE(eop->v_vec, tmp_vec); eop->keypoint = eip->keypoint; - if (free && ip != op) { + if (release && ip != op) { eop->skt = eip->skt; eip->skt = (struct rt_sketch_internal *)NULL; rt_db_free_internal(ip); Modified: brlcad/trunk/src/librt/primitives/grip/grip.c =================================================================== --- brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/grip/grip.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -228,8 +228,8 @@ { struct rt_grip_internal *gip; vect_t xbase, ybase; /* perpendiculars to normal */ - vect_t x1, x2; - vect_t y1, y2; + vect_t x_1, x_2; + vect_t y_1, y_2; vect_t tip; RT_CK_DB_INTERNAL(ip); @@ -246,26 +246,26 @@ VSCALE(xbase, xbase, gip->mag/4.0); VSCALE(ybase, ybase, gip->mag/4.0); - VADD2(x1, gip->center, xbase); - VSUB2(x2, gip->center, xbase); - VADD2(y1, gip->center, ybase); - VSUB2(y2, gip->center, ybase); + VADD2(x_1, gip->center, xbase); + VSUB2(x_2, gip->center, xbase); + VADD2(y_1, gip->center, ybase); + VSUB2(y_2, gip->center, ybase); - RT_ADD_VLIST(vhead, x1, BN_VLIST_LINE_MOVE); /* the base */ - RT_ADD_VLIST(vhead, y1, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, x2, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, y2, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, x1, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_1, BN_VLIST_LINE_MOVE); /* the base */ + RT_ADD_VLIST(vhead, y_1, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, y_2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_1, BN_VLIST_LINE_DRAW); VSCALE(tip, gip->normal, gip->mag); VADD2(tip, gip->center, tip); - RT_ADD_VLIST(vhead, x1, BN_VLIST_LINE_MOVE); /* the sides */ + RT_ADD_VLIST(vhead, x_1, BN_VLIST_LINE_MOVE); /* the sides */ RT_ADD_VLIST(vhead, tip, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, x2, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, y1, BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, x_2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, y_1, BN_VLIST_LINE_MOVE); RT_ADD_VLIST(vhead, tip, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, y2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, y_2, BN_VLIST_LINE_DRAW); return(0); } Modified: brlcad/trunk/src/librt/primitives/half/half.c =================================================================== --- brlcad/trunk/src/librt/primitives/half/half.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/half/half.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -261,8 +261,7 @@ void rt_hlf_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) { - register struct half_specific *halfp = - (struct half_specific *)stp->st_specific; + struct half_specific *halfp = (struct half_specific *)stp->st_specific; fastf_t f; RT_CK_SOLTAB(stp); @@ -436,8 +435,8 @@ struct rt_half_internal *hip; vect_t cent; /* some point on the plane */ vect_t xbase, ybase; /* perpendiculars to normal */ - vect_t x1, x2; - vect_t y1, y2; + vect_t x_1, x_2; + vect_t y_1, y_2; vect_t tip; RT_CK_DB_INTERNAL(ip); @@ -457,19 +456,19 @@ VSCALE(xbase, xbase, 1000); VSCALE(ybase, ybase, 1000); - VADD2(x1, cent, xbase); - VSUB2(x2, cent, xbase); - VADD2(y1, cent, ybase); - VSUB2(y2, cent, ybase); + VADD2(x_1, cent, xbase); + VSUB2(x_2, cent, xbase); + VADD2(y_1, cent, ybase); + VSUB2(y_2, cent, ybase); - RT_ADD_VLIST(vhead, x1, BN_VLIST_LINE_MOVE); /* the cross */ - RT_ADD_VLIST(vhead, x2, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, y1, BN_VLIST_LINE_MOVE); - RT_ADD_VLIST(vhead, y2, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, x2, BN_VLIST_LINE_DRAW); /* the box */ - RT_ADD_VLIST(vhead, y1, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, x1, BN_VLIST_LINE_DRAW); - RT_ADD_VLIST(vhead, y2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_1, BN_VLIST_LINE_MOVE); /* the cross */ + RT_ADD_VLIST(vhead, x_2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, y_1, BN_VLIST_LINE_MOVE); + RT_ADD_VLIST(vhead, y_2, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_2, BN_VLIST_LINE_DRAW); /* the box */ + RT_ADD_VLIST(vhead, y_1, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, x_1, BN_VLIST_LINE_DRAW); + RT_ADD_VLIST(vhead, y_2, BN_VLIST_LINE_DRAW); VSCALE(tip, hip->eqn, 500); VADD2(tip, cent, tip); @@ -502,6 +501,7 @@ if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); + RT_CK_RESOURCE(resp) hip = (struct rt_half_internal *)ip->idb_ptr; RT_HALF_CK_MAGIC(hip); RT_CK_DB_INTERNAL(op); Modified: brlcad/trunk/src/librt/primitives/hf/hf.c =================================================================== --- brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/hf/hf.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -273,10 +273,10 @@ * bounding boxes et so forth. */ if (hf->hf_shorts) { - register int max, min; - register int len; - register unsigned short *sp; - register int i; + int max, min; + int len; + unsigned short *sp; + int i; sp = (unsigned short *)hf->hf_mp->apbuf; min = max = *sp++; @@ -289,8 +289,8 @@ hf->hf_max = max * hf->hf_file2mm; } else { fastf_t max, min; - register int len; - register int i; + int len; + int i; fastf_t *fp; fp = (fastf_t *) hf->hf_mp->apbuf; @@ -376,7 +376,7 @@ vect_t tri_CA1st, tri_CA2nd; vect_t xvect, yvect, tri_A, tri_B, tri_C; int fnd1, fnd2; - register double hf2mm = hfp->hf_file2mm; + double hf2mm = hfp->hf_file2mm; if (ap) RT_CK_APPLICATION(ap); @@ -385,7 +385,7 @@ xCell, yCell); } { - register fastf_t scale; + fastf_t scale; scale = hfp->hf_Xlen/((double)hfp->hf_w-1); VSCALE(xvect, hfp->hf_X, scale); scale = hfp->hf_Ylen/((double)hfp->hf_n-1); @@ -424,7 +424,7 @@ VSUB2(tri_BA2nd, tri_B, tri_A); VCROSS(tri_wn2nd, tri_BA2nd, tri_CA2nd); } else { - register double *fp; + double *fp; fp = (double *)hfp->hf_mp->apbuf + yCell * hfp->hf_w + xCell; /* 0, 0 -> A */ @@ -667,7 +667,7 @@ #endif if (hf->hf_shorts) { - register unsigned short *sp; + unsigned short *sp; sp = (unsigned short *)hf->hf_mp->apbuf + CellY * hf->hf_w + CellX; left = *sp; @@ -678,7 +678,7 @@ } right = *sp; } else { - register double *fp; + double *fp; fp = (double *) hf->hf_mp->apbuf + CellY * hf->hf_w + CellX; left = *fp; @@ -913,7 +913,7 @@ } } else if (cosine*cosine > 0.5) { double tmp; - register double farZ, minZ, maxZ; + double farZ, minZ, maxZ; int xCell, yCell, signX, signY; double highest, lowest, error, delta; double deltaZ; @@ -1045,7 +1045,7 @@ lowest *= hf->hf_file2mm; highest *= hf->hf_file2mm; } else { - register double *fp; + double *fp; fp = (double *)hf->hf_mp->apbuf + yCell * hf->hf_w + xCell; /* 0, 0 */ @@ -1117,7 +1117,7 @@ lowest *= hf->hf_file2mm; highest *= hf->hf_file2mm; } else { - register double *fp; + double *fp; fp = (double *)hf->hf_mp->apbuf + yCell * hf->hf_w + xCell; /* 0, 0 */ @@ -1163,7 +1163,7 @@ /* OTHER HALF */ double tmp; - register double farZ, minZ, maxZ; + double farZ, minZ, maxZ; double deltaZ; int xCell, yCell, signX, signY; double highest, lowest, error, delta; @@ -1285,7 +1285,7 @@ lowest *= hf->hf_file2mm; highest *= hf->hf_file2mm; } else { - register double *fp; + double *fp; fp = (double *)hf->hf_mp->apbuf + yCell * hf->hf_w + xCell; /* 0, 0 */ @@ -1358,7 +1358,7 @@ lowest *= hf->hf_file2mm; highest *= hf->hf_file2mm; } else { - register double *fp; + double *fp; fp = (double *)hf->hf_mp->apbuf + yCell * hf->hf_w + xCell; /* 0, 0 */ @@ -1403,7 +1403,7 @@ /* Sort hits, near to Far */ { - register int i, j; + int i; struct hit tmp; for (i=0; i< nhits-1; i++) { for (j=i+1; j<nhits; j++) { @@ -1416,7 +1416,7 @@ } if (nhits & 1) { - register int i; + int i; static int nerrors = 0; hits[nhits] = hits[nhits-1]; /* struct copy*/ VREVERSE(hits[nhits].hit_normal, hits[nhits-1].hit_normal); @@ -1432,8 +1432,8 @@ /* nhits is even, build segments */ { - register struct seg *segp; - register int i; + struct seg *segp; + int i; for (i=0; i< nhits; i+=2) { RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -1456,7 +1456,7 @@ { register struct hf_specific *hf = (struct hf_specific *)stp->st_specific; - register int j; + int j; j = hitp->hit_surfno; @@ -1580,8 +1580,8 @@ rt_hf_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { struct rt_hf_internal *xip; - register unsigned short *sp = (unsigned short *)NULL; - register double *dp; + unsigned short *sp = (unsigned short *)NULL; + double *dp; vect_t xbasis; vect_t ybasis; vect_t zbasis; @@ -1719,7 +1719,7 @@ goal -= 4 + 2 * (xip->w + xip->n); /* Apply relative tolerance, if specified */ - if (ttol->rel) { + if (!NEAR_ZERO(ttol->rel, SMALL_FASTF)) { int rstep; rstep = xip->w; V_MAX(rstep, xip->n); Modified: brlcad/trunk/src/librt/primitives/hyp/hyp.c =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/hyp/hyp.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -131,7 +131,7 @@ rt_hyp_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct rt_hyp_internal *hyp_ip; - register struct hyp_specific *hyp; + struct hyp_specific *hyp; #ifndef NO_MAGIC_CHECKING const struct bn_tol *tol = &rtip->rti_tol; #endif @@ -177,7 +177,7 @@ void rt_hyp_print(const struct soltab *stp) { - register const struct hyp_specific *hyp = + const struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; VPRINT("V", hyp->hyp_V); @@ -207,11 +207,11 @@ int rt_hyp_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; - register struct seg *segp; + struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; + struct seg *segp; struct hit hits[5]; /* 4 potential hits (top, bottom, 2 sides) */ - register struct hit *hitp; /* pointer to hitpoint */ + struct hit *hitp; /* pointer to hitpoint */ vect_t dp; vect_t pp; @@ -312,8 +312,6 @@ /* 2 hits */ if (hits[0].hit_dist < hits[1].hit_dist) { /* entry is [0], exit is [1] */ - register struct seg *segp; - RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; segp->seg_in = hits[0]; /* struct copy */ @@ -321,7 +319,6 @@ BU_LIST_INSERT(&(seghead->l), &(segp->l)); } else { /* entry is [1], exit is [0] */ - register struct seg *segp; RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -381,7 +378,7 @@ void rt_hyp_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { - register struct hyp_specific *hyp = + struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; /* normal from basic hyperboloid and transformed normal */ @@ -430,7 +427,7 @@ void rt_hyp_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { - register struct hyp_specific *hyp = + struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; vect_t vert, horiz; point_t hp; @@ -558,7 +555,7 @@ void rt_hyp_free(struct soltab *stp) { - register struct hyp_specific *hyp = + struct hyp_specific *hyp = (struct hyp_specific *)stp->st_specific; bu_free((char *)hyp, "hyp_specific"); @@ -571,7 +568,7 @@ int rt_hyp_plot(struct bu_list *vhead, struct rt_db_internal *incoming, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { - register int i, j; /* loop indices */ + int i, j; /* loop indices */ struct rt_hyp_internal *hyp_in; struct hyp_specific *hyp_ip; vect_t majorAxis[8], /* vector offsets along major axis */ @@ -679,15 +676,13 @@ { fastf_t c, dtol, f, mag_a, mag_h, ntol, r1, r2, r3, cprime; fastf_t **ellipses, theta_prev, theta_new; - fastf_t rt_ell_ang(fastf_t *p1, fastf_t a, fastf_t b, fastf_t dtol, fastf_t ntol); int *pts_dbl, face, i, j, nseg; int jj, nell; mat_t invRoS; mat_t SoR; struct rt_hyp_internal *iip; struct hyp_specific *xip; - point_t p1; - struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b, *rt_ptalloc(void); + struct rt_pt_node *pos_a, *pos_b, *pts_a, *pts_b; struct shell *s; struct faceuse **outfaceuses = NULL; struct faceuse *fu_top; @@ -698,6 +693,9 @@ vect_t A, Au, B, Bu, Hu, V; struct bu_ptbl vert_tab; + struct rt_pt_node *rt_ptalloc(void); + fastf_t rt_ell_ang(fastf_t *, fastf_t, fastf_t, fastf_t, fastf_t); + RT_CK_DB_INTERNAL(ip); iip = (struct rt_hyp_internal *)ip->idb_ptr; RT_HYP_CK_MAGIC(iip); @@ -784,7 +782,7 @@ i = 1; { point_t p0, p1, p2; - fastf_t m, len, dist, ang0, ang2; + fastf_t mm, len, dist, ang0, ang2; vect_t v01, v02; /* vectors from p0->p1 and p0->p2 */ vect_t nLine, nHyp; struct rt_pt_node *add, *rt_ptalloc(void); @@ -797,14 +795,14 @@ VMOVE(p0, pos_a->p); VMOVE(p2, pos_a->next->p); /* either X or Y will be zero; so adding handles either case */ - m = (p2[Z] - p0[Z]) / ((p2[X]+p2[Y]) - (p0[X]+p0[Y])); - if (p0[X]) { - p1[X] = fabs(m*c*r1) / sqrt(m*m*c*c - 1.0); + mm = (p2[Z] - p0[Z]) / ((p2[X]+p2[Y]) - (p0[X]+p0[Y])); + if (!NEAR_ZERO(p0[X], SMALL_FASTF)) { + p1[X] = fabs(mm*c*r1) / sqrt(mm*mm*c*c - 1.0); p1[Y] = 0.0; p1[Z] = sqrt(p1[X]*p1[X] - r1*r1) / c; } else { p1[X] = 0.0; - p1[Y] = fabs(m*r2*r2*c) / sqrt(m*m*r2*r2*c*c - r1*r1); + p1[Y] = fabs(mm*r2*r2*c) / sqrt(mm*mm*r2*r2*c*c - r1*r1); p1[Z] = (r3/r2) * sqrt(p1[Y]*p1[Y] - r2*r2); } if (p0[Z] + p2[Z] < 0) p1[Z] = -p1[Z]; @@ -875,6 +873,8 @@ pos_a = pts_a; /*->next; */ /* skip over apex of hyp */ pos_b = pts_b; /*->next; */ while (pos_a) { + point_t p1; + VSCALE(A, Au, pos_a->p[X]); /* semimajor axis */ VSCALE(B, Bu, pos_b->p[Y]); /* semiminor axis */ VJOIN1(V, xip->hyp_V, -pos_a->p[Z], Hu); @@ -1262,7 +1262,7 @@ int rt_hyp_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_hyp_internal *hyp_ip = + struct rt_hyp_internal *hyp_ip = (struct rt_hyp_internal *)ip->idb_ptr; char buf[256]; @@ -1309,7 +1309,7 @@ void rt_hyp_ifree(struct rt_db_internal *ip) { - register struct rt_hyp_internal *hyp_ip; + struct rt_hyp_internal *hyp_ip; RT_CK_DB_INTERNAL(ip); Modified: brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp =================================================================== --- brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/hyp/hyp_brep.cpp 2009-12-31 02:27:16 UTC (rev 37085) @@ -34,7 +34,7 @@ * R T _ H Y P _ B R E P */ extern "C" void -rt_hyp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *tol) +rt_hyp_brep(ON_Brep **b, const struct rt_db_internal *ip, const struct bn_tol *) { struct rt_hyp_internal *eip; @@ -44,9 +44,6 @@ *b = ON_Brep::New(); - ON_TextLog dump_to_stdout; - ON_TextLog* dump = &dump_to_stdout; - point_t p1_origin, p2_origin; ON_3dPoint plane1_origin, plane2_origin; ON_3dVector plane_x_dir, plane_y_dir; @@ -54,7 +51,7 @@ // First, find planes corresponding to the top and bottom faces - initially // the hyp must be centered around the origin. - vect_t tmp, x_dir, y_dir; + vect_t x_dir, y_dir; VSET(x_dir, 1, 0, 0); VSET(y_dir, 0, 1, 0); @@ -133,7 +130,7 @@ double MP = MX + intercept_length; double w = (MX/MP)/(1-MX/MP); - point_t ep1, ep2, ep3, tmppt; + point_t ep1, ep2, ep3; VSET(ep1, -eip->hyp_b, 0, 0.5*MAGNITUDE(eip->hyp_Hi)); VSET(ep2, -MX, 0, 0); VSET(ep3, -eip->hyp_b, 0, -0.5*MAGNITUDE(eip->hyp_Hi)); @@ -186,7 +183,7 @@ ON_BrepFace& face = (*b)->NewFace(surfindex - 1); (*b)->FlipFace(face); int faceindex = (*b)->m_F.Count(); - ON_BrepLoop* outerloop = (*b)->NewOuterLoop(faceindex-1); + (*b)->NewOuterLoop(faceindex-1); } Modified: brlcad/trunk/src/librt/primitives/metaball/metaball.c =================================================================== --- brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/metaball/metaball.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -117,7 +117,7 @@ max[i] = mbpt->coord[i]; } /* return -1 if no points are defined. */ - if (min[X] == +INFINITY) + if (NEAR_ZERO(min[X] - INFINITY, SMALL_FASTF) || min[X] > INFINITY) return -1; /* compute the center of the generated box, call that the center */ Modified: brlcad/trunk/src/librt/primitives/nmg/nmg.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -78,7 +78,7 @@ rt_nmg_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct model *m; - register struct nmg_specific *nmg_s; + struct nmg_specific *nmg_s; struct nmgregion *rp; vect_t work; @@ -128,9 +128,9 @@ * R T _ N M G _ P R I N T */ void -rt_nmg_print(register const struct soltab *stp) +rt_nmg_print(const struct soltab *stp) { - register struct model *m = + struct model *m = (struct model *)stp->st_specific; NMG_CK_MODEL(m); @@ -149,7 +149,7 @@ * >0 HIT */ int -rt_nmg_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) +rt_nmg_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) /* info about the ray */ @@ -235,8 +235,19 @@ * Given ONE ray distance, return the normal and entry/exit point. */ void -rt_nmg_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_nmg_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { + struct half_specific *halfp; + + if (!hitp || !rp) + return; + + if (stp) RT_CK_SOLTAB(stp); + RT_CK_RAY(rp); + RT_CK_HIT(hitp); + + halfp = (struct half_specific *)stp->st_specific; + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); } @@ -247,8 +258,14 @@ * Return the curvature of the nmg. */ void -rt_nmg_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_nmg_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + if (!cvp || !hitp) + return; + + RT_CK_HIT(hitp); + if (stp) RT_CK_SOLTAB(stp); + cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ @@ -266,8 +283,12 @@ * v = elevation */ void -rt_nmg_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_nmg_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { + if (ap) RT_CK_APPLICATION(ap); + if (stp) RT_CK_SOLTAB(stp); + if (hitp) RT_CK_HIT(hitp); + if (!uvp) return; } @@ -275,9 +296,9 @@ * R T _ N M G _ F R E E */ void -rt_nmg_free(register struct soltab *stp) +rt_nmg_free(struct soltab *stp) { - register struct nmg_specific *nmg = + struct nmg_specific *nmg = (struct nmg_specific *)stp->st_specific; nmg_km(nmg->nmg_model); @@ -299,7 +320,7 @@ * R T _ N M G _ P L O T */ int -rt_nmg_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_nmg_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { struct model *m; @@ -326,7 +347,7 @@ * 0 OK. *r points to nmgregion that holds this tessellation. */ int -rt_nmg_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_nmg_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { struct model *lm; @@ -722,7 +743,7 @@ * manifest constant which identifies that structure kind. */ int -rt_nmg_magic_to_kind(register long int magic) +rt_nmg_magic_to_kind(long int magic) { switch (magic) { case NMG_MODEL_MAGIC: @@ -826,7 +847,7 @@ /* If zero, means literal array of values */ { - register unsigned char *cp; + unsigned char *cp; if (pt_type) count *= RT_NURB_EXTRACT_COORDS(pt_type); @@ -834,7 +855,7 @@ cp = rt_nmg_fastf_p; (void)bu_plong(cp + 0, DISK_DOUBLE_ARRAY_MAGIC); (void)bu_plong(cp + 4, count); - if (pt_type == 0 || scale == 1.0) { + if (pt_type == 0 || NEAR_ZERO(scale - 1.0, SMALL_FASTF)) { htond(cp + (4+4), (unsigned char *)fp, count); } else { fastf_t *new; @@ -843,7 +864,7 @@ new = (fastf_t *)bu_malloc(count*sizeof(fastf_t), "rt_nmg_export4_fastf"); if (RT_NURB_IS_PT_RATIONAL(pt_type)) { /* Don't scale the homogeneous (rational) coord */ - register int i; + int i; int nelem; /* # elements per tuple */ nelem = RT_NURB_EXTRACT_COORDS(pt_type); @@ -871,7 +892,7 @@ rt_nmg_import4_fastf(const unsigned char *base, struct nmg_exp_counts *ecnt, long int subscript, const matp_t mat, int len, int pt_type) { const unsigned char *cp; - register int count; + int count; fastf_t *ret; fastf_t *tmp; @@ -948,23 +969,23 @@ int rt_nmg_reindex(genptr_t p, struct nmg_exp_counts *ecnt) { - int index; + int idx; int ret=0; /* zero is NOT the default value, this is just to satisfy cray compilers */ /* If null pointer, return new subscript of zero */ if (p == 0) { ret = 0; - index = 0; /* sanity */ + idx = 0; /* sanity */ } else { - index = nmg_index_of_struct((unsigned long *)(p)); - if (index == -1) { + idx = nmg_index_of_struct((unsigned long *)(p)); + if (idx == -1) { ret = DISK_INDEX_LISTHEAD; /* FLAG: special list head */ - } else if (index < -1) { + } else if (idx < -1) { bu_bomb("rt_nmg_reindex(): unable to obtain struct index\n"); } else { - ret = ecnt[index].new_subscript; - if (ecnt[index].kind < 0) { - bu_log("rt_nmg_reindex(p=x%x), p->index=%d, ret=%d, kind=%d\n", p, index, ret, ecnt[index].kind); + ret = ecnt[idx].new_subscript; + if (ecnt[idx].kind < 0) { + bu_log("rt_nmg_reindex(p=x%x), p->index=%d, ret=%d, kind=%d\n", p, idx, ret, ecnt[idx].kind); bu_bomb("rt_nmg_reindex() This index not found in ecnt[]\n"); } /* ret == 0 on supressed loop_g ptrs, etc */ @@ -972,12 +993,12 @@ bu_log("rt_nmg_reindex(p=x%x) %s, p->index=%d, ret=%d, maxindex=%d\n", p, bu_identify_magic(*(long *)p), - index, ret, ecnt[0].byte_offset); + idx, ret, ecnt[0].byte_offset); bu_bomb("rt_nmg_reindex() subscript out of range\n"); } } } -/*bu_log("rt_nmg_reindex(p=x%x), p->index=%d, ret=%d\n", p, index, ret);*/ +/*bu_log("rt_nmg_reindex(p=x%x), p->index=%d, ret=%d\n", p, idx, ret);*/ return(ret); } @@ -986,7 +1007,7 @@ #define INDEX(o, i, elem) \ (void)bu_plong(&(o)->elem[0], rt_nmg_reindex((genptr_t)((i)->elem), ecnt)) #define INDEXL(oo, ii, elem) { \ - register long _f = rt_nmg_reindex((genptr_t)((ii)->elem.forw), ecnt); \ + long _f = rt_nmg_reindex((genptr_t)((ii)->elem.forw), ecnt); \ if (_f == DISK_INDEX_NULL) bu_log("Warning rt_nmg_edisk: reindex forw to null?\n"); \ (void)bu_plong((oo)->elem.forw, _f); \ (void)bu_plong((oo)->elem.back, rt_nmg_reindex((genptr_t)((ii)->elem.back), ecnt)); } @@ -1001,7 +1022,7 @@ * Scale geometry by 'local2mm' */ void -rt_nmg_edisk(genptr_t op, genptr_t ip, struct nmg_exp_counts *ecnt, int index, double local2mm) +rt_nmg_edisk(genptr_t op, genptr_t ip, struct nmg_exp_counts *ecnt, int idx, double local2mm) /* base of disk array */ /* ptr to in-memory structure */ @@ -1009,8 +1030,8 @@ { int oindex; /* index in op */ - oindex = ecnt[index].per_struct_index; - switch (ecnt[index].kind) { + oindex = ecnt[idx].per_struct_index; + switch (ecnt[idx].kind) { case NMG_KIND_MODEL: { struct model *m = (struct model *)ip; struct disk_model *d; @@ -1316,7 +1337,7 @@ } return; } - bu_log("rt_nmg_edisk kind=%d unknown\n", ecnt[index].kind); + bu_log("rt_nmg_edisk kind=%d unknown\n", ecnt[idx].kind); } #undef INDEX #undef INDEXL @@ -1329,7 +1350,7 @@ */ #define INDEX(o, i, ty, elem) (i)->elem = (struct ty *)ptrs[bu_glong((o)->elem)] #define INDEXL_HD(oo, ii, elem, hd) { \ - register int sub; \ + int sub; \ if ((sub = bu_glong((oo)->elem.forw)) < 0) \ (ii)->elem.forw = &(hd); \ else (ii)->elem.forw = (struct bu_list *)ptrs[sub]; \ @@ -1340,8 +1361,8 @@ /* For use with the edgeuse l2 / edge_g eu2_hd secondary list */ /* The subscripts will point to the edgeuse, not the edgeuse's l2 rt_list */ #define INDEXL_HD2(oo, ii, elem, hd) { \ - register int sub; \ - register struct edgeuse *eu2; \ + int sub; \ + struct edgeuse *eu2; \ if ((sub = bu_glong((oo)->elem.forw)) < 0) { \ (ii)->elem.forw = &(hd); \ } else { \ @@ -1366,7 +1387,7 @@ * Transform geometry by given matrix. */ int -rt_nmg_idisk(genptr_t op, genptr_t ip, struct nmg_exp_counts *ecnt, int index, unsigned long **ptrs, const fastf_t *mat, const unsigned char *basep) +rt_nmg_idisk(genptr_t op, genptr_t ip, struct nmg_exp_counts *ecnt, int idx, unsigned long **ptrs, const fastf_t *mat, const unsigned char *basep) /* ptr to in-memory structure */ /* base of disk array */ @@ -1376,7 +1397,7 @@ int iindex; /* index in ip */ iindex = 0; - switch (ecnt[index].kind) { + switch (ecnt[idx].kind) { case NMG_KIND_MODEL: { struct model *m = (struct model *)op; struct disk_model *d; @@ -1722,7 +1743,7 @@ } return 0; } - bu_log("rt_nmg_idisk kind=%d unknown\n", ecnt[index].kind); + bu_log("rt_nmg_idisk kind=%d unknown\n", ecnt[idx].kind); return -1; } @@ -1936,9 +1957,9 @@ * appropriate. */ void -rt_nmg_i2alloc(struct nmg_exp_counts *ecnt, unsigned char *cp, int *kind_counts, int maxindex) +rt_nmg_i2alloc(struct nmg_exp_counts *ecnt, unsigned char *cp, int *kind_counts) { - register int kind; + int kind; int nkind; int subscript; int offset; @@ -1983,7 +2004,7 @@ * 0 indicates that a null pointer should be used. */ int -rt_nmg_import4_internal(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, int rebound, const struct bn_tol *tol) +rt_nmg_import4_internal(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, int rebound, const struct bn_tol *tol) { struct model *m; union record *rp; @@ -2041,7 +2062,7 @@ /* Locate the variably sized fastf_t arrays. ecnt[] has room. */ cp = (unsigned char *)(rp+1); /* start at first granule in */ - rt_nmg_i2alloc(ecnt, cp, kind_counts, maxindex); + rt_nmg_i2alloc(ecnt, cp, kind_counts); /* Import each structure, in turn */ for (i=1; i < maxindex; i++) { @@ -2306,13 +2327,15 @@ * Apply modeling transformations as well. */ int -rt_nmg_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_nmg_import4(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { struct model *m; union record *rp; struct bn_tol tol; BU_CK_EXTERNAL(ep); + if (dbip) RT_CK_DBI(dbip); + rp = (union record *)ep->ext_buf; /* Check record type */ if (rp->u_id != DBID_NMG) { @@ -2350,7 +2373,7 @@ int rt_nmg_import5(struct rt_db_internal *ip, struct bu_external *ep, - register const mat_t mat, + const mat_t mat, const struct db_i *dbip) { struct model *m; @@ -2363,9 +2386,11 @@ unsigned long **real_ptrs; unsigned long **ptrs; struct nmg_exp_counts *ecnt; - register int i; + int i; static unsigned long bad_magic = 0x999; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); dp = (genptr_t)ep->ext_buf; @@ -2407,7 +2432,7 @@ m = rt_nmg_ialloc(ptrs, ecnt, kind_counts); - rt_nmg_i2alloc(ecnt, dp, kind_counts, maxindex); + rt_nmg_i2alloc(ecnt, dp, kind_counts); /* Now import each structure, in turn */ for (i=1; i < maxindex; i++) { @@ -2449,6 +2474,8 @@ { struct model *m; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_NMG) return(-1); m = (struct model *)ip->idb_ptr; @@ -2482,9 +2509,11 @@ int tot_size; int kind; int double_count; - register int i; + int i; int subscript, fastf_byte_count; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_NMG) return -1; m = (struct model *)ip->idb_ptr; @@ -2643,9 +2672,9 @@ * tab, and give parameter values. */ int -rt_nmg_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) +rt_nmg_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local __attribute__((unused))) { - register struct model *m = + struct model *m = (struct model *)ip->idb_ptr; NMG_CK_MODEL(m); @@ -2667,7 +2696,7 @@ void rt_nmg_ifree(struct rt_db_internal *ip) { - register struct model *m; + struct model *m; RT_CK_DB_INTERNAL(ip); if (ip->idb_ptr) { @@ -2683,7 +2712,7 @@ int rt_nmg_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { - register struct model *m=(struct model *)intern->idb_ptr; + struct model *m=(struct model *)intern->idb_ptr; struct bu_ptbl verts; struct nmgregion *r; struct shell *s; @@ -2839,7 +2868,6 @@ while (argc >= 2) { struct vertex ***face_verts; - struct faceuse *fu; if (!strcmp(argv[0], "V")) { /* vertex list handled above */ @@ -2939,7 +2967,7 @@ void -rt_nmg_make(const struct rt_functab *ftp, struct rt_db_internal *intern, double d) +rt_nmg_make(const struct rt_functab *ftp, struct rt_db_internal *intern) { struct model *m; @@ -2955,8 +2983,11 @@ * R T _ N M G _ P A R A M S */ int -rt_nmg_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_nmg_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_bool.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_bool.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_bool.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -57,7 +57,7 @@ int debug_file_count=0; static void -nmg_dangling_handler(long int *longp, genptr_t state, int first) +nmg_dangling_handler(long int *longp, genptr_t state, int unused __attribute__((unused))) { register struct faceuse *fu = (struct faceuse *)longp; register struct dangling_faceuse_state *sp = @@ -569,27 +569,11 @@ debug_file_count++; if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); - nmg_vshell(&rB->s_hd, rB); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif -#if VERBOSE_VERIFY - bu_log("\n==================== Shell A:\n"); - nmg_pr_s_briefly(sA, 0); - bu_log("\n==================== Shell B:\n"); - nmg_pr_s_briefly(sB, 0); - bu_log("\n====================\n"); -#endif } -#if 0 - nmg_s_radial_check(sA, tol); - nmg_s_radial_check(sB, tol); -#endif nmg_shell_coplanar_face_merge(sA, tol, 1); nmg_shell_coplanar_face_merge(sB, tol, 1); @@ -645,32 +629,18 @@ } if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); - nmg_vshell(&rB->s_hd, rB); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif -#if VERBOSE_VERIFY - bu_log("\n==================== Shell A: ====== before crackshells\n"); - nmg_pr_s_briefly(sA, 0); - bu_log("\n==================== Shell B:\n"); - nmg_pr_s_briefly(sB, 0); - bu_log("\n====================\n"); -#endif } -#if 1 if (rt_g.NMG_debug & DEBUG_BOOL) { char file_name[256]; sprintf(file_name, "before%d.g", debug_file_count); nmg_stash_model_to_file(file_name, m, "Before crackshells"); } -#endif /* Perform shell/shell intersections */ nmg_crackshells(sA, sB, tol); @@ -736,28 +706,16 @@ (void)nmg_model_edge_fuse(m, tol); if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); - nmg_vshell(&rB->s_hd, rB); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif -#if VERBOSE_VERIFY - bu_log("\n==================== Shell A: ====== before mesh_shell_shell\n"); - nmg_pr_s_briefly(sA, 0); - bu_log("\n==================== Shell B:\n"); - nmg_pr_s_briefly(sB, 0); - bu_log("\n====================\n"); -#endif if ((i = nmg_model_fuse(m, tol)) > 0) { bu_log("NOTICE: nmg_bool: fused %d entities while cracking shells\n", i); bu_bomb("nmg_bool() entities unfused after nmg_crackshells()\n"); } } -#if 1 + /* Temporary search */ if (nmg_has_dangling_faces((unsigned long *)rA, (char *)NULL)) bu_log("Dangling faces detected in rA before classification\n"); @@ -765,30 +723,14 @@ bu_log("Dangling faces detected in rB before classification\n"); if (nmg_has_dangling_faces((unsigned long *)m, (char *)NULL)) bu_log("Dangling faces detected in model before classification\n"); -#endif if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); - nmg_vshell(&rB->s_hd, rB); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif -#if VERBOSE_VERIFY - bu_log("\n==================== Shell A: ====== after mesh_shell_shell\n"); - nmg_pr_s_briefly(sA, 0); - bu_log("\n==================== Shell B:\n"); - nmg_pr_s_briefly(sB, 0); - bu_log("\n====================\n"); -#endif + } -#if 0 - nmg_s_radial_check(sA, tol); - nmg_s_radial_check(sB, tol); -#endif /* * Before splitting, join up small loop fragments into large @@ -801,17 +743,7 @@ sprintf(file_name, "notjoined%d.g", debug_file_count); nmg_stash_model_to_file(file_name, m, "Before s_join_touchingloops"); } -#if 0 - nmg_s_join_touchingloops(sA, tol); - nmg_s_join_touchingloops(sB, tol); - if (rt_g.NMG_debug & DEBUG_BOOL) { - char file_name[256]; - sprintf(file_name, "joined%d.g", debug_file_count); - nmg_stash_model_to_file(file_name, m, "After s_join_touchingloops"); - } -#endif - /* Re-build bounding boxes, edge geometry, as needed. */ nmg_shell_a(sA, tol); nmg_shell_a(sB, tol); @@ -858,38 +790,12 @@ bu_log("nmg_bool() WARNING: sB unclosed before classification. Boldly pressing on.\n"); if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); - nmg_vshell(&rB->s_hd, rB); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif } -#if 0 - /* Reindex structures before classification or evaluation. */ - nmg_m_reindex(m, 0); - - /* - * Allocate storage for classlist[]. - * Get all 8 lists at once, and just build pointers for the rest. - * XXX In some cases, number of items may grow - * XXX (e.g. added vu's, loops) as things are demoted, etc. - * XXX Try to accomodate here by reserving some extra table space. - * - * XXX The classlist really only needs to be an unsigned char, - * XXX not a long*. - */ - nelem = (m->maxindex)*4+1; /* includes extra space */ - classlist[0] = (long *)bu_calloc(8 * nelem + 1, - sizeof(long), "nmg_bool classlist[8]"); - for (i = 1; i < 8; i++) { - classlist[i] = classlist[0] + i * nelem; - } -#endif nmg_class_nothing_broken = 1; if (rt_g.NMG_debug & (DEBUG_GRAPHCL|DEBUG_PL_LOOP)) { nmg_show_broken_classifier_stuff((unsigned long *)sA, &classlist[0], @@ -924,26 +830,24 @@ nmg_show_broken_classifier_stuff((unsigned long *)sA, &classlist[0], 1, 0, "sA classed"); nmg_show_broken_classifier_stuff((unsigned long *)sB, &classlist[4], 1, 0, "sB classed"); } -#if 1 + if (rt_g.NMG_debug & DEBUG_BOOL) { bu_log("Just before nmg_evaluate_boolean:\nShell A:\n"); nmg_pr_s_briefly(sA, 0); bu_log("Shell B:\n"); nmg_pr_s_briefly(sB, 0); } -#endif + nmg_s_radial_check(sA, tol); nmg_s_radial_check(sB, tol); nmg_evaluate_boolean(sA, sB, oper, classlist, tol); -#if 1 if (rt_g.NMG_debug & DEBUG_BOOL) { bu_log("Just after nmg_evaluate_boolean:\nShell A:\n"); nmg_pr_s_briefly(sA, 0); bu_log("Shell B:\n"); nmg_pr_s_briefly(sB, 0); } -#endif if (rt_g.NMG_debug & DEBUG_VERIFY) { nmg_vmodel(m); @@ -989,14 +893,13 @@ (void) nmg_unbreak_region_edges(&sA->l.magic); -#if 1 if (rt_g.NMG_debug & DEBUG_BOOL) { bu_log("Just after nmg_simplify_shell:\nShell A:\n"); nmg_pr_s_briefly(sA, 0); bu_log("Shell B:\n"); nmg_pr_s_briefly(sB, 0); } -#endif + /* Bounding boxes may have changed */ nmg_shell_a(sA, tol); @@ -1021,14 +924,10 @@ bu_log("Returning from NMG_BOOL\n"); } if (rt_g.NMG_debug & DEBUG_VERIFY) { -#if 0 - nmg_vshell(&rA->s_hd, rA); -#else /* Sometimes the tessllations of non-participating regions * are damaged during a boolean operation. Check everything. */ nmg_vmodel(m); -#endif } nmg_kill_wire_edges(sA); @@ -1051,10 +950,8 @@ NMG_CK_REGION(rA); NMG_CK_REGION(rB); -#if 1 nmg_region_v_unique(rA, tol); nmg_region_v_unique(rB, tol); -#endif s = nmg_bool(BU_LIST_FIRST(shell, &rA->s_hd), BU_LIST_FIRST(shell, &rB->s_hd), @@ -1103,7 +1000,7 @@ * This routine must be prepared to run in parallel. */ union tree * -nmg_booltree_leaf_tess(struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data) +nmg_booltree_leaf_tess(struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data __attribute__((unused))) { struct model *m; struct nmgregion *r1; @@ -1165,7 +1062,7 @@ * This routine must be prepared to run in parallel. */ union tree * -nmg_booltree_leaf_tnurb(struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data) +nmg_booltree_leaf_tnurb(struct db_tree_state *tsp, struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data __attribute__((unused))) { struct nmgregion *r1; union tree *curtree; Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_ck.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_ck.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_ck.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -465,8 +465,7 @@ NMG_CK_FACE_G_EITHER(fg); if (fg->magic == NMG_FACE_G_PLANE_MAGIC) { - if (fg->N[X]==0.0 && fg->N[Y]==0.0 && fg->N[Z]==0.0 && - fg->N[H]!=0.0) { + if (VNEAR_ZERO(fg->N, SMALL_FASTF) && !NEAR_ZERO(fg->N[H], SMALL_FASTF)) { bu_log("bad NMG plane equation %fX + %fY + %fZ = %f\n", fg->N[X], fg->N[Y], fg->N[Z], fg->N[H]); bu_bomb("nmg_vfg() Bad NMG geometry\n"); @@ -942,7 +941,7 @@ snprintf(errstr, len, "%sFace_g %8lx\n", str, (unsigned long)f); NMG_CK_FACE_G_PLANE(fg); - if (fg->N[X]==0.0 && fg->N[Y]==0.0 && fg->N[Z]==0.0 && fg->N[H]!=0.0) { + if (VNEAR_ZERO(fg->N, SMALL_FASTF) && !NEAR_ZERO(fg->N[H], SMALL_FASTF)) { snprintf(&errstr[strlen(errstr)], len-strlen(errstr), "nmg_ck_fg() bad NMG plane equation %fX + %fY + %fZ = %f\n", fg->N[X], fg->N[Y], fg->N[Z], fg->N[H]); @@ -1661,7 +1660,7 @@ HIDDEN void -nmg_ck_v_in_fus(long *vp, genptr_t state, int first) +nmg_ck_v_in_fus(long *vp, genptr_t state, int unused __attribute__((unused))) { register struct v_ck_state *sp = (struct v_ck_state *)state; register struct vertex *v = (struct vertex *)vp; Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_class.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_class.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_class.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -73,9 +73,6 @@ }; -static void joint_hitmiss2 BU_ARGS((struct neighbor *closest, - const struct edgeuse *eu, const point_t pt, - int code)); static void nmg_class_pt_e BU_ARGS((struct neighbor *closest, const point_t pt, const struct edgeuse *eu, const struct bn_tol *tol)); @@ -134,7 +131,7 @@ * nmg_class_pt_e */ static void -joint_hitmiss2(struct neighbor *closest, const struct edgeuse *eu, const fastf_t *pt, int code) +joint_hitmiss2(struct neighbor *closest, const struct edgeuse *eu, int code) { const struct edgeuse *eu_rinf; @@ -322,7 +319,7 @@ if (rt_g.NMG_debug & DEBUG_CLASSIFY) { bu_log("\t\tThe point is ON the edge, calling joint_hitmiss2()\n"); } - joint_hitmiss2(closest, eu, pt, code); + joint_hitmiss2(closest, eu, code); return; } else { if (rt_g.NMG_debug & DEBUG_CLASSIFY) { @@ -1457,7 +1454,7 @@ struct edgeuse *eu, *p; struct loopuse *q_lu; struct vertexuse *vu; - long magic1; + unsigned long magic1; char *reason = "Unknown"; int seen_error = 0; int status = 0; Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_eval.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_eval.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_eval.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -50,7 +50,7 @@ HIDDEN void nmg_eval_shell BU_ARGS((struct shell *s, struct nmg_bool_state *bs)); -HIDDEN void nmg_eval_plot BU_ARGS((struct nmg_bool_state *bs, int num, int delay)); +HIDDEN void nmg_eval_plot BU_ARGS((struct nmg_bool_state *bs, int num)); #define BACTION_KILL 1 @@ -103,7 +103,7 @@ dot = VDOT(fu_peqn, lu_peqn); - if (dot == 0.0) + if (NEAR_ZERO(dot, tolp->perp)) return; /* can't determine geometric orientation */ @@ -386,7 +386,7 @@ * For each face in the shell, process all the loops in the face, * and then handle the face and all loops as a unit. */ - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ fu = BU_LIST_FIRST(faceuse, &s->fu_hd); while (BU_LIST_NOT_HEAD(fu, &s->fu_hd)) { NMG_CK_FACEUSE(fu); @@ -420,7 +420,7 @@ /* loop of single vertex */ (void)nmg_klu(lu); } else if (nmg_demote_lu(lu) == 0) { - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ } lu = nextlu; continue; @@ -452,7 +452,7 @@ nmg_kfu(fu); /* kill face & mate, dequeue from shell */ if (rt_g.NMG_debug & DEBUG_VERIFY) nmg_vshell(&s->r_p->s_hd, s->r_p); - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ fu = nextfu; continue; } @@ -471,7 +471,7 @@ * Each loop is either a wire-loop, or a vertex-with-self-loop. * Only consider wire loops here. */ - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ lu = BU_LIST_FIRST(loopuse, &s->lu_hd); while (BU_LIST_NOT_HEAD(lu, &s->lu_hd)) { NMG_CK_LOOPUSE(lu); @@ -490,7 +490,7 @@ /* Demote the loopuse into wire edges */ /* kill loop & mate */ if (nmg_demote_lu(lu) == 0) - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ lu = nextlu; continue; case BACTION_RETAIN: @@ -506,7 +506,7 @@ /* * For each wire-edge in the shell, ... */ - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ eu = BU_LIST_FIRST(edgeuse, &s->eu_hd); while (BU_LIST_NOT_HEAD(eu, &s->eu_hd)) { NMG_CK_EDGEUSE(eu); @@ -520,7 +520,7 @@ case BACTION_KILL: /* Demote the edegeuse (and mate) into vertices */ if (nmg_demote_eu(eu) == 0) - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ eu = nexteu; continue; case BACTION_RETAIN: @@ -543,7 +543,7 @@ * be demoted into vertex-with-self-loop objects above, * which will be processed here. */ - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ lu = BU_LIST_FIRST(loopuse, &s->lu_hd); while (BU_LIST_NOT_HEAD(lu, &s->lu_hd)) { NMG_CK_LOOPUSE(lu); @@ -584,7 +584,7 @@ switch (nmg_eval_action(&vu->v_p->magic, bs)) { case BACTION_KILL: nmg_kvu(vu); - nmg_eval_plot(bs, nmg_eval_count++, 0); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ s->vu_p = (struct vertexuse *)0; /* sanity */ break; case BACTION_RETAIN: @@ -595,7 +595,7 @@ } if (rt_g.NMG_debug & DEBUG_VERIFY) nmg_vshell(&s->r_p->s_hd, s->r_p); - nmg_eval_plot(bs, nmg_eval_count++, 1); /* debug */ + nmg_eval_plot(bs, nmg_eval_count++); /* debug */ } @@ -608,7 +608,7 @@ * module. */ HIDDEN void -nmg_eval_plot(struct nmg_bool_state *bs, int num, int delay) +nmg_eval_plot(struct nmg_bool_state *bs, int num) { FILE *fp; char fname[128]; Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_extrude.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_extrude.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -97,7 +97,7 @@ * Translate a face using a vector's magnitude and direction. */ void -nmg_translate_face(struct faceuse *fu, const fastf_t *Vec, const struct bn_tol *tol) +nmg_translate_face(struct faceuse *fu, const fastf_t *Vec) { int cnt, /* Number of vertices in face. */ cur, @@ -192,11 +192,14 @@ { fastf_t cosang; int nfaces; - struct faceuse *fu2, *nmg_dup_face(struct faceuse *fu, struct shell *s), **outfaces; - int face_count=2; + struct faceuse *fu2; + struct faceuse **outfaces; struct loopuse *lu, *lu2; plane_t n; + int face_count=2; + struct faceuse *nmg_dup_face(struct faceuse *, struct shell *); + #define MIKE_TOL 0.0001 NMG_CK_FACEUSE(fu); @@ -214,9 +217,9 @@ if (NEAR_ZERO(cosang, MIKE_TOL)) bu_bomb("extrude_nmg_face: extrusion cannot be parallel to face\n"); if (cosang > 0.) - nmg_translate_face(fu, Vec, tol); + nmg_translate_face(fu, Vec); else if (cosang < 0.) - nmg_translate_face(fu2->fumate_p, Vec, tol); + nmg_translate_face(fu2->fumate_p, Vec); nfaces = verts_in_nmg_face(fu); outfaces = (struct faceuse **)bu_calloc(nfaces+2, sizeof(struct faceuse *) , @@ -561,9 +564,9 @@ dist[1]>=0.0 && dist[1]<=1.0) { point_t pt; - if (dist[1] == 0.0) + if (NEAR_ZERO(dist[1], SMALL_FASTF)) v = eu2->vu_p->v_p; - else if (dist[1] == 1.0) + else if (NEAR_ZERO(dist[1] - 1.0, SMALL_FASTF)) /* i.e., == 1.0 */ v = eu2->eumate_p->vu_p->v_p; else { VJOIN1(pt, eu1->vu_p->v_p->vg_p->coord, dist[0], v1); @@ -579,9 +582,9 @@ if (dist[1]>0.0 && dist[1]<1.0 && dist[0]>=0.0 && dist[0]<=1.0) { point_t pt; - if (dist[0] == 0.0) + if (NEAR_ZERO(dist[0], SMALL_FASTF)) v = eu1->vu_p->v_p; - else if (dist[0] == 1.0) + else if (NEAR_ZERO(dist[0] - 1.0, SMALL_FASTF)) /* i.e., == 1.0 */ v = eu2->eumate_p->vu_p->v_p; else { VJOIN1(pt, eu2->vu_p->v_p->vg_p->coord, dist[1], v2); @@ -760,9 +763,9 @@ if (dist[0]>0.0 && dist[0]<1.0 && dist[1]>=0.0 && dist[1]<=1.0) { - if (dist[1] == 0.0) + if (NEAR_ZERO(dist[1], SMALL_FASTF)) v = eu2->vu_p->v_p; - else if (dist[1] == 1.0) + else if (NEAR_ZERO(dist[1] - 1.0, SMALL_FASTF)) /* i.e., == 1.0 */ v = eu2->eumate_p->vu_p->v_p; else { VJOIN1(pt, eu1->vu_p->v_p->vg_p->coord , @@ -781,9 +784,9 @@ if (dist[1] > 0.0 && dist[1] < 1.0 && dist[0]>=0.0 && dist[0]<=1.0) { - if (dist[0] == 0.0) + if (NEAR_ZERO(dist[0], SMALL_FASTF)) v = eu1->vu_p->v_p; - else if (dist[0] == 1.0) + else if (NEAR_ZERO(dist[0] - 1.0, SMALL_FASTF)) /* i.e., == 1.0 */ v = eu1->eumate_p->vu_p->v_p; else { VJOIN1(pt, eu2->vu_p->v_p->vg_p->coord, dist[1], v2); Modified: brlcad/trunk/src/librt/primitives/sketch/sketch.c =================================================================== --- brlcad/trunk/src/librt/primitives/sketch/sketch.c 2009-12-31 02:22:21 UTC (rev 37084) +++ brlcad/trunk/src/librt/primitives/sketch/sketch.c 2009-12-31 02:27:16 UTC (rev 37085) @@ -142,7 +142,7 @@ * R T _ S K E T C H _ P R I N T */ void -rt_sketch_print(register const struct soltab *stp) +rt_sketch_print(const struct soltab *stp) { } @@ -158,13 +158,20 @@ * >0 HIT */ int -rt_sketch_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) +rt_sketch_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { + if (!stp || !rp || !ap) + return 0; + + RT_CK_SOLTAB(stp); + RT_CK_RAY(rp); + RT_CK_APPLICATION(ap); + /* can't hit 'em as they're not solid geometry, so no surfno, not * hit point, nada. */ - return(0); /* MISS */ + return 0; /* MISS */ } @@ -174,9 +181,15 @@ * Given ONE ray distance, return the normal and entry/exit point. */ void -rt_sketch_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_sketch_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { + if (!hitp || !rp) + return; + RT_CK_HIT(hitp); + if (stp) RT_CK_SOLTAB(stp); + RT_CK_RAY(rp); + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); } @@ -187,8 +200,14 @@ * Return the curvature of the sketch. */ void -rt_sketch_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_sketch_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + if (!cvp || !hitp) + return; + + RT_CK_HITP(hitp); + if (stp) RT_CK_SOLTAB(stp); + cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ @@ -205,7 +224,7 @@ * u = azimuth, v = elevation */ void -rt_sketch_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_sketch_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { } @@ -214,7 +233,7 @@ * R T _ S K E T C H _ F R E E */ void -rt_sketch_free(register struct soltab *stp) +rt_sketch_free(struct soltab *stp) { } @@ -916,7 +935,7 @@ * Apply modeling transformations as well. */ int -rt_sketch_import4(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_sketch_import4(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { struct rt_sketch_internal *sketch_ip; union record *rp; @@ -1254,7 +1273,7 @@ * Apply modeling transformations as well. */ int -rt_sketch_import5(struct rt_db_internal *ip, const struct bu_external *ep, register const fastf_t *mat, const struct db_i *dbip) +rt_sketch_import5(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { struct rt_sketch_internal *sketch_ip; vect_t v; @@ -1595,7 +1614,7 @@ int rt_sketch_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_sketch_internal *sketch_ip = + struct rt_sketch_internal *sketch_ip = (struct rt_sketch_internal *)ip->idb_ptr; int i; int seg_no; @@ -1840,7 +1859,7 @@ void rt_sketch_ifree(struct rt_db_internal *ip) { - register struct rt_sketch_internal *sketch_ip; + struct rt_sketch_internal *sketch_ip; struct curve *crv; RT_CK_DB_INTERNAL(ip); @@ -2048,7 +2067,7 @@ int rt_sketch_get(struct bu_vls *logstr, const struct rt_db_internal *intern, const char *attr) { - register struct rt_sketch_internal *skt=(struct rt_sketch_internal *)intern->idb_ptr; + struct rt_sketch_internal *skt=(struct rt_sketch_internal *)intern->idb_ptr; int i; struct curve *crv; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2010-01-02 13:38:48
|
Revision: 37098 http://brlcad.svn.sourceforge.net/brlcad/?rev=37098&view=rev Author: brlcad Date: 2010-01-02 13:38:38 +0000 (Sat, 02 Jan 2010) Log Message: ----------- quell verbose warnings. remove register keyword, quell and check parameters. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/poly/poly.c brlcad/trunk/src/librt/primitives/rec/rec.c Modified: brlcad/trunk/src/librt/primitives/poly/poly.c =================================================================== --- brlcad/trunk/src/librt/primitives/poly/poly.c 2010-01-02 08:00:56 UTC (rev 37097) +++ brlcad/trunk/src/librt/primitives/poly/poly.c 2010-01-02 13:38:38 UTC (rev 37098) @@ -62,7 +62,7 @@ rt_pg_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct rt_pg_internal *pgp; - register int i; + int i; int p; pgp = (struct rt_pg_internal *)ip->idb_ptr; @@ -127,7 +127,7 @@ HIDDEN int rt_pgface(struct soltab *stp, fastf_t *ap, fastf_t *bp, fastf_t *cp, const struct bn_tol *tol) { - register struct tri_specific *trip; + struct tri_specific *trip; vect_t work; fastf_t m1, m2, m3, m4; @@ -169,9 +169,9 @@ * R T _ P G _ P R I N T */ void -rt_pg_print(register const struct soltab *stp) +rt_pg_print(const struct soltab *stp) { - register const struct tri_specific *trip = + const struct tri_specific *trip = (struct tri_specific *)stp->st_specific; if (trip == TRI_NULL) { @@ -200,13 +200,13 @@ * >0 HIT */ int -rt_pg_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) +rt_pg_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct tri_specific *trip = + struct tri_specific *trip = (struct tri_specific *)stp->st_specific; #define MAXHITS 128 /* # surfaces hit, must be even */ struct hit hits[MAXHITS]; - register struct hit *hp; + struct hit *hp; int nhits; nhits = 0; @@ -289,7 +289,7 @@ in the hit list. */ { - register int i, j; + int i, j; for (i=0; i<nhits-1; i++) { fastf_t dist; @@ -312,7 +312,7 @@ nhits = 0; if (nhits&1) { - register int i; + int i; static int nerrors = 0; /* message counter */ /* * If this condition exists, it is almost certainly due to @@ -399,8 +399,8 @@ /* nhits is even, build segments */ { - register struct seg *segp; - register int i; + struct seg *segp; + int i; for (i=0; i < nhits; i += 2) { RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -419,11 +419,11 @@ void rt_pg_free(struct soltab *stp) { - register struct tri_specific *trip = + struct tri_specific *trip = (struct tri_specific *)stp->st_specific; while (trip != TRI_NULL) { - register struct tri_specific *nexttri = trip->tri_forw; + struct tri_specific *nexttri = trip->tri_forw; bu_free((char *)trip, "pg tri_specific"); trip = nexttri; @@ -435,8 +435,14 @@ * R T _ P G _ N O R M */ void -rt_pg_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_pg_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { + if (!hitp || !stp || !rp) + return; + RT_CK_HIT(hitp); + RT_CK_SOLTAB(stp); + RT_CK_RAY(rp); + /* Normals computed in rt_pg_shot, nothing to do here */ } @@ -445,8 +451,14 @@ * R T _ P G _ U V */ void -rt_pg_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_pg_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { + if (ap) RT_CK_APPLICATION(ap); + if (stp) RT_CK_SOLTAB(stp); + if (hitp) RT_CK_HIT(hitp); + if (!uvp) + return; + /* Do nothing. Really, should do what ARB does. */ uvp->uv_u = uvp->uv_v = 0; uvp->uv_du = uvp->uv_dv = 0; @@ -467,10 +479,10 @@ * R T _ P G _ P L O T */ int -rt_pg_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_pg_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { - register int i; - register int p; /* current polygon number */ + int i; + int p; /* current polygon number */ struct rt_pg_internal *pgp; RT_CK_DB_INTERNAL(ip); @@ -478,7 +490,7 @@ RT_PG_CK_MAGIC(pgp); for (p = 0; p < pgp->npoly; p++) { - register struct rt_pg_face_internal *pp; + struct rt_pg_face_internal *pp; pp = &pgp->poly[p]; RT_ADD_VLIST(vhead, &pp->verts[3*(pp->npts-1)], @@ -498,10 +510,10 @@ * Convert to vlist, draw as polygons. */ int -rt_pg_plot_poly(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_pg_plot_poly(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol __attribute__((unused))) { - register int i; - register int p; /* current polygon number */ + int i; + int p; /* current polygon number */ struct rt_pg_internal *pgp; RT_CK_DB_INTERNAL(ip); @@ -509,7 +521,7 @@ RT_PG_CK_MAGIC(pgp); for (p = 0; p < pgp->npoly; p++) { - register struct rt_pg_face_internal *pp; + struct rt_pg_face_internal *pp; vect_t aa, bb, norm; pp = &pgp->poly[p]; @@ -535,8 +547,13 @@ * R T _ P G _ C U R V E */ void -rt_pg_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_pg_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { + if (!cvp || !hitp) + return; + RT_CK_HIT(hitp); + if (stp) RT_CK_SOLTAB(stp); + bn_vec_ortho(cvp->crv_pdir, hitp->hit_normal); cvp->crv_c1 = cvp->crv_c2 = 0; } @@ -546,14 +563,14 @@ * R T _ P G _ T E S S */ int -rt_pg_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_pg_tess(struct nmgregion **r, struct model *m, struct rt_db_internal *ip, const struct rt_tess_tol *ttol __attribute__((unused)), const struct bn_tol *tol) { - register int i; + int i; struct shell *s; struct vertex **verts; /* dynamic array of pointers */ struct vertex ***vertp;/* dynamic array of ptrs to pointers */ struct faceuse *fu; - register int p; /* current polygon number */ + int p; /* current polygon number */ struct rt_pg_internal *pgp; RT_CK_DB_INTERNAL(ip); @@ -571,7 +588,7 @@ vertp[i] = &verts[i]; for (p = 0; p < pgp->npoly; p++) { - register struct rt_pg_face_internal *pp; + struct rt_pg_face_internal *pp; pp = &pgp->poly[p]; @@ -628,10 +645,12 @@ { struct rt_pg_internal *pgp; union record *rp; - register int i; + int i; int rno; /* current record number */ int p; /* current polygon index */ + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; if (rp->u_id != ID_P_HEAD) { @@ -660,7 +679,7 @@ if (mat == NULL) mat = bn_mat_identity; for (p=0; p < pgp->npoly; p++) { - register struct rt_pg_face_internal *pp; + struct rt_pg_face_internal *pp; pp = &pgp->poly[p]; rno = p+1; @@ -702,10 +721,12 @@ { struct rt_pg_internal *pgp; union record *rec; - register int i; + int i; int rno; /* current record number */ int p; /* current polygon index */ + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_POLY) return(-1); pgp = (struct rt_pg_internal *)ip->idb_ptr; @@ -719,7 +740,7 @@ rec[0].p.p_id = ID_P_HEAD; for (p=0; p < pgp->npoly; p++) { - register struct rt_pg_face_internal *pp; + struct rt_pg_face_internal *pp; rno = p+1; pp = &pgp->poly[p]; @@ -745,6 +766,11 @@ int rt_pg_import5(struct rt_db_internal *ip, const struct bu_external *ep, const fastf_t *mat, const struct db_i *dbip) { + if (ip) RT_CK_DB_INTERNAL(ip); + if (!ep || !mat) + return -1; + if (dbip) RT_CK_DBI(dbip); + bu_log("As of release 6.0 the polysolid is superceded by the BOT primitive.\n"); bu_log("\tTo convert polysolids to BOT primitives, use 'dbupgrade'.\n"); /* The rt_pg_to_bot() routine can also be used. */ @@ -753,8 +779,13 @@ int -rt_pg_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm, const struct db_i *dbip) +rt_pg_export5(struct bu_external *ep, const struct rt_db_internal *ip, double local2mm __attribute__((unused)), const struct db_i *dbip) { + if (!ep) + return -1; + if (ip) RT_CK_DB_INTERNAL(ip); + if (dbip) RT_CK_DBI(dbip); + bu_log("As of release 6.0 the polysolid is superceded by the BOT primitive.\n"); bu_log("\tTo convert polysolids to BOT primitives, use 'dbupgrade'.\n"); /* The rt_pg_to_bot() routine can also be used. */ @@ -772,8 +803,8 @@ int rt_pg_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register int j; - register struct rt_pg_internal *pgp = + int j; + struct rt_pg_internal *pgp = (struct rt_pg_internal *)ip->idb_ptr; char buf[256]; int i; @@ -801,8 +832,8 @@ /* Print out all the vertices of all the faces */ for (i=0; i < pgp->npoly; i++) { - register fastf_t *v = pgp->poly[i].verts; - register fastf_t *n = pgp->poly[i].norms; + fastf_t *v = pgp->poly[i].verts; + fastf_t *n = pgp->poly[i].norms; sprintf(buf, "\tPolygon %d: (%d pts)\n", i, pgp->poly[i].npts); @@ -833,8 +864,8 @@ void rt_pg_ifree(struct rt_db_internal *ip) { - register struct rt_pg_internal *pgp; - register int i; + struct rt_pg_internal *pgp; + int i; RT_CK_DB_INTERNAL(ip); @@ -860,8 +891,11 @@ * */ int -rt_pg_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_pg_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/rec/rec.c =================================================================== --- brlcad/trunk/src/librt/primitives/rec/rec.c 2010-01-02 08:00:56 UTC (rev 37097) +++ brlcad/trunk/src/librt/primitives/rec/rec.c 2010-01-02 13:38:38 UTC (rev 37098) @@ -176,7 +176,7 @@ rt_rec_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct rt_tgc_internal *tip; - register struct rec_specific *rec; + struct rec_specific *rec; double magsq_h, magsq_a, magsq_b, magsq_c, magsq_d; double mag_h, mag_a, mag_b; mat_t R; @@ -186,6 +186,12 @@ vect_t work; fastf_t f; + if (!stp || !ip) + return -1; + RT_CK_SOLTAB(stp); + RT_CK_DB_INTERNAL(ip); + if (rtip) RT_CK_RTI(rtip); + tip = (struct rt_tgc_internal *)ip->idb_ptr; RT_TGC_CK_MAGIC(tip); @@ -272,7 +278,7 @@ { fastf_t dx, dy, dz; /* For bounding sphere */ vect_t P, w1; - fastf_t f, tmp, z; + fastf_t tmp, z; /* X */ VSET(P, 1.0, 0, 0); /* bounding plane normal */ @@ -365,9 +371,9 @@ * R E C _ P R I N T */ void -rt_rec_print(register const struct soltab *stp) +rt_rec_print(const struct soltab *stp) { - register const struct rec_specific *rec = + const struct rec_specific *rec = (struct rec_specific *)stp->st_specific; VPRINT("V", rec->rec_V); @@ -396,16 +402,16 @@ * >0 HIT */ int -rt_rec_shot(struct soltab *stp, register struct xray *rp, struct application *ap, struct seg *seghead) +rt_rec_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct rec_specific *rec = + struct rec_specific *rec = (struct rec_specific *)stp->st_specific; vect_t dprime; /* D' */ vect_t pprime; /* P' */ fastf_t k1, k2; /* distance constants of solution */ vect_t xlated; /* translated vector */ struct hit hits[4]; /* 4 potential hit points */ - register struct hit *hitp; /* pointer to hit point */ + struct hit *hitp; /* pointer to hit point */ int nhits = 0; /* Number of hit points */ hitp = &hits[0]; @@ -487,7 +493,7 @@ hit: if (hits[0].hit_dist < hits[1].hit_dist) { /* entry is [0], exit is [1] */ - register struct seg *segp; + struct seg *segp; RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -496,7 +502,7 @@ BU_LIST_INSERT(&(seghead->l), &(segp->l)); } else { /* entry is [1], exit is [0] */ - register struct seg *segp; + struct seg *segp; RT_GET_SEG(segp, ap->a_resource); segp->seg_stp = stp; @@ -572,18 +578,20 @@ /* Number of ray/object pairs */ { - register int i; - register struct rec_specific *rec; + int i; + struct rec_specific *rec; vect_t dprime; /* D' */ vect_t pprime; /* P' */ fastf_t k1, k2; /* distance constants of solution */ vect_t xlated; /* translated vector */ struct hit hits[3]; /* 4 potential hit points */ - register struct hit *hitp; /* pointer to hit point */ + struct hit *hitp; /* pointer to hit point */ fastf_t b; /* coeff of polynomial */ fastf_t root; /* root of radical */ fastf_t dx2dy2; + if (ap) RT_CK_APPLICATION(ap); + /* for each ray/right_eliptical_cylinder pair */ for (i = 0; i < n; i++) { if (stp[i] == 0) continue; /* stp[i] == 0 signals skip ray */ @@ -688,9 +696,9 @@ * hit_surfno is a flag indicating if normal needs to be computed or not. */ void -rt_rec_norm(register struct hit *hitp, struct soltab *stp, register struct xray *rp) +rt_rec_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { - register struct rec_specific *rec = + struct rec_specific *rec = (struct rec_specific *)stp->st_specific; VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); @@ -724,9 +732,9 @@ * Normal must have been computed before calling this routine. */ void -rt_rec_curve(register struct curvature *cvp, register struct hit *hitp, struct soltab *stp) +rt_rec_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { - register struct rec_specific *rec = + struct rec_specific *rec = (struct rec_specific *)stp->st_specific; vect_t uu; fastf_t ax, bx, q; @@ -766,9 +774,9 @@ * v is the displacement along H. */ void -rt_rec_uv(struct application *ap, struct soltab *stp, register struct hit *hitp, register struct uvcoord *uvp) +rt_rec_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - register struct rec_specific *rec = + struct rec_specific *rec = (struct rec_specific *)stp->st_specific; vect_t work; @@ -776,6 +784,8 @@ fastf_t len; fastf_t ratio; + if (ap) RT_CK_APPLICATION(ap); + /* hit_point is on surface; project back to unit cylinder, * creating a vector from vertex to hit point. */ @@ -835,8 +845,11 @@ * */ int -rt_rec_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_rec_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + ps = ps; /* quellage */ + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } @@ -847,7 +860,7 @@ void rt_rec_free(struct soltab *stp) { - register struct rec_specific *rec = + struct rec_specific *rec = (struct rec_specific *)stp->st_specific; bu_free((char *)rec, "rec_specific"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |