Revision: 53357
          http://brlcad.svn.sourceforge.net/brlcad/?rev=53357&view=rev
Author:   n_reed
Date:     2012-10-25 17:25:13 +0000 (Thu, 25 Oct 2012)
Log Message:
-----------
be smarter at picking number of sample points

Modified Paths:
--------------
    brlcad/trunk/src/librt/primitives/tgc/tgc.c

Modified: brlcad/trunk/src/librt/primitives/tgc/tgc.c
===================================================================
--- brlcad/trunk/src/librt/primitives/tgc/tgc.c 2012-10-25 16:55:33 UTC (rev 
53356)
+++ brlcad/trunk/src/librt/primitives/tgc/tgc.c 2012-10-25 17:25:13 UTC (rev 
53357)
@@ -1830,7 +1830,6 @@
 static int
 tgc_points_per_ellipse(const struct rt_db_internal *ip, const struct 
rt_view_info *info)
 {
-    int num_points;
     struct rt_tgc_internal *tgc;
     fastf_t samples_per_mm, avg_axis_len, avg_axis_samples;
 
@@ -1838,23 +1837,13 @@
     tgc = (struct rt_tgc_internal *)ip->idb_ptr;
     RT_TGC_CK_MAGIC(tgc);
 
-    avg_axis_len = 2.0 * sqrt((MAGSQ(tgc->a) + MAGSQ(tgc->b) + MAGSQ(tgc->c) +
-               MAGSQ(tgc->d)) / 4.0);
+    avg_axis_len = (2.0 * (MAGNITUDE(tgc->a) + MAGNITUDE(tgc->b) +
+               MAGNITUDE(tgc->c) + MAGNITUDE(tgc->d))) / 4.0;
 
     samples_per_mm = sqrt(info->view_samples) / info->view_size;
     avg_axis_samples = samples_per_mm * avg_axis_len;
 
-    num_points = sqrt(avg_axis_samples);
-
-    if (num_points % 2 != 0) {
-       ++num_points;
-    }
-
-    if (num_points < 8) {
-       num_points = 8;
-    }
-
-    return num_points;
+    return pow(avg_axis_samples * M_PI, .55);
 }
 
 int
@@ -1871,6 +1860,16 @@
 
     points_per_ellipse = tgc_points_per_ellipse(ip, info);
 
+    if (points_per_ellipse < 4) {
+       point_t p;
+
+       VADD2(p, tip->v, tip->h);
+       RT_ADD_VLIST(info->vhead, tip->v, BN_VLIST_LINE_MOVE);
+       RT_ADD_VLIST(info->vhead, p, BN_VLIST_LINE_DRAW);
+
+       return 0;
+    }
+
     VMOVE(ellipse1.center, tip->v);
     VMOVE(ellipse1.axis_a, tip->a);
     VMOVE(ellipse1.axis_b, tip->b);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to