]> Pileus Git - grits/commitdiff
Test pure distance based errors
authorAndy Spencer <andy753421@gmail.com>
Mon, 1 Nov 2010 03:54:15 +0000 (03:54 +0000)
committerAndy Spencer <andy753421@gmail.com>
Mon, 1 Nov 2010 03:54:15 +0000 (03:54 +0000)
This commit is for historic purposes and will be reverend shortly.

src/gis-opengl.c
src/roam.c
src/roam.h

index e5f64680f4126803f5ada816f71294df0e9381cf..3b4355bf297c5775f0f0f2eabaf492fdd1c45ce5 100644 (file)
@@ -249,6 +249,12 @@ static gboolean on_key_press(GisOpenGL *opengl, GdkEventKey *event, gpointer _)
 static gboolean _update_errors_cb(gpointer _opengl)
 {
        GisOpenGL *opengl = _opengl;
+       gdouble lat, lon, elev;
+       gis_viewer_get_location(GIS_VIEWER(opengl), &lat, &lon, &elev);
+       lle2xyz(lat, lon, elev,
+               &opengl->sphere->view->pos[0],
+               &opengl->sphere->view->pos[1],
+               &opengl->sphere->view->pos[2]);
        g_mutex_lock(opengl->sphere_lock);
        roam_sphere_update_errors(opengl->sphere);
        g_mutex_unlock(opengl->sphere_lock);
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)
index aec4b218719800563293acf5f7dafd270b449a10..7c7371dff434d9833f10b981b60317e0685dc143 100644 (file)
@@ -53,6 +53,7 @@ struct _RoamView {
        gdouble proj[16];
        gint view[4];
        gint version;
+       gdouble pos[3];
 };
 
 /*************