]> Pileus Git - grits/blobdiff - src/roam.c
Test pure distance based errors
[grits] / src / roam.c
index 0f4995e0b56593d7bf3dc03f4d65015afb847e8e..aa488fcc560a7d033b5c321d52a0f12e1afa6fa6 100644 (file)
@@ -361,6 +361,7 @@ static gboolean roam_triangle_backface(RoamTriangle *triangle, RoamSphere *spher
  */
 void roam_triangle_update_errors(RoamTriangle *triangle, RoamSphere *sphere)
 {
+#if 0
        /* Update points */
        roam_point_update_projection(triangle->p.l, sphere->view);
        roam_point_update_projection(triangle->p.m, sphere->view);
@@ -395,6 +396,17 @@ void roam_triangle_update_errors(RoamTriangle *triangle, RoamSphere *sphere)
                    roam_triangle_backface(triangle->t.r, sphere))
                        triangle->error *= 500;
        }
+#endif
+
+       /* For pure distance based errors */
+       (void)roam_triangle_visible;
+       (void)roam_triangle_backface;
+       RoamPoint *l = triangle->p.l;
+       RoamPoint *m = triangle->p.m;
+       RoamPoint *r = triangle->p.r;
+       double base = distd((gdouble*)l, (gdouble*)r);
+       double dist = distd((gdouble*)m, (gdouble*)sphere->view->pos);
+       triangle->error = base/dist;
 }
 
 /**
@@ -777,8 +789,9 @@ void roam_sphere_merge_one(RoamSphere *sphere)
 gint roam_sphere_split_merge(RoamSphere *sphere)
 {
        gint iters = 0, max_iters = 500;
+       gint target = 10000;
        //gint target = 4000;
-       gint target = 2000;
+       //gint target = 2000;
        //gint target = 500;
 
        if (!sphere->view)