Revision: 55714
http://sourceforge.net/p/brlcad/code/55714
Author: r_weiss
Date: 2013-06-11 21:55:33 +0000 (Tue, 11 Jun 2013)
Log Message:
-----------
Simplified the "gqa" command logic for testing if the volume/weight estimate is
within volume/weight tolerance.
Modified Paths:
--------------
brlcad/trunk/src/libged/gqa.c
Modified: brlcad/trunk/src/libged/gqa.c
===================================================================
--- brlcad/trunk/src/libged/gqa.c 2013-06-11 21:18:40 UTC (rev 55713)
+++ brlcad/trunk/src/libged/gqa.c 2013-06-11 21:55:33 UTC (rev 55714)
@@ -1779,34 +1779,33 @@
int obj;
for (obj = 0; obj < num_objects; obj++) {
- int view = 0;
+ int view;
+ double tmp;
+
if (verbose)
bu_vls_printf(_ged_current_gedp->ged_result_str, "object %d\n",
obj);
+
/* compute weight of object for given view */
- val = obj_tbl[obj].o_weight[view] =
- obj_tbl[obj].o_lenDensity[view] * (state->area[view] /
state->shots[view]);
-
low = INFINITY;
hi = -INFINITY;
- /* compute the per-view weight of this object */
- for (view=1; view < num_views; view++) {
- obj_tbl[obj].o_weight[view] =
- obj_tbl[obj].o_lenDensity[view] *
- (state->area[view] / state->shots[view]);
-
- delta = fabs(val - obj_tbl[obj].o_weight[view]);
- if (delta < low) low = delta;
- if (delta > hi) hi = delta;
+ tmp = 0.0;
+ for (view = 0; view < num_views; view++) {
+ val = obj_tbl[obj].o_weight[view] =
+ obj_tbl[obj].o_lenDensity[view] * (state->area[view] /
state->shots[view]);
+ V_MIN(low, val);
+ V_MAX(hi, val);
+ tmp += val;
}
delta = hi - low;
if (verbose)
- bu_vls_printf(_ged_current_gedp->ged_result_str, "\t%s weight
%g %s +%g -%g\n",
- obj_tbl[obj].o_name,
- val / units[WGT]->val,
- units[WGT]->name,
- fabs(hi / units[WGT]->val),
- fabs(low / units[WGT]->val));
+ bu_vls_printf(_ged_current_gedp->ged_result_str,
+ "\t%s running avg weight %g %s hi=(%g) low=(%g)\n",
+ obj_tbl[obj].o_name,
+ (tmp / num_views) / units[WGT]->val,
+ units[WGT]->name,
+ hi / units[WGT]->val,
+ low / units[WGT]->val);
if (delta > weight_tolerance) {
/* this object differs too much in each view, so we
@@ -1831,31 +1830,29 @@
/* for each object, compute the volume for all views */
for (obj = 0; obj < num_objects; obj++) {
+ int view;
+ double tmp;
/* compute volume of object for given view */
- int view = 0;
- val = obj_tbl[obj].o_volume[view] =
- obj_tbl[obj].o_len[view] * (state->area[view] /
state->shots[view]);
-
low = INFINITY;
hi = -INFINITY;
- /* compute the per-view volume of this object */
- for (view=1; view < num_views; view++) {
- obj_tbl[obj].o_volume[view] =
+ tmp = 0.0;
+ for (view = 0; view < num_views; view++) {
+ val = obj_tbl[obj].o_volume[view] =
obj_tbl[obj].o_len[view] * (state->area[view] /
state->shots[view]);
-
- delta = fabs(val - obj_tbl[obj].o_volume[view]);
- if (delta < low) low = delta;
- if (delta > hi) hi = delta;
+ V_MIN(low, val);
+ V_MAX(hi, val);
+ tmp += val;
}
delta = hi - low;
if (verbose)
- bu_vls_printf(_ged_current_gedp->ged_result_str, "\t%s volume
%g %s +(%g) -(%g)\n",
- obj_tbl[obj].o_name,
- val / units[VOL]->val, units[VOL]->name,
- hi / units[VOL]->val,
- fabs(low / units[VOL]->val));
+ bu_vls_printf(_ged_current_gedp->ged_result_str,
+ "\t%s running avg volume %g %s hi=(%g) low=(%g)\n",
+ obj_tbl[obj].o_name,
+ (tmp / num_views) / units[VOL]->val, units[VOL]->name,
+ hi / units[VOL]->val,
+ low / units[VOL]->val);
if (delta > volume_tolerance) {
/* this object differs too much in each view, so we
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits