[libgis] Test pure distance based errors
- From: Andy Spencer <andys src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgis] Test pure distance based errors
- Date: Mon, 1 Nov 2010 04:46:14 +0000 (UTC)
commit 2303ef60aac043b63daec4a70a9ee7d70e0ce62f
Author: Andy Spencer <andy753421 gmail com>
Date: Mon Nov 1 03:54:15 2010 +0000
Test pure distance based errors
This commit is for historic purposes and will be reverend shortly.
src/gis-opengl.c | 6 ++++++
src/roam.c | 15 ++++++++++++++-
src/roam.h | 1 +
3 files changed, 21 insertions(+), 1 deletions(-)
---
diff --git a/src/gis-opengl.c b/src/gis-opengl.c
index e5f6468..3b4355b 100644
--- a/src/gis-opengl.c
+++ b/src/gis-opengl.c
@@ -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);
diff --git a/src/roam.c b/src/roam.c
index 0f4995e..aa488fc 100644
--- a/src/roam.c
+++ b/src/roam.c
@@ -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)
diff --git a/src/roam.h b/src/roam.h
index aec4b21..7c7371d 100644
--- a/src/roam.h
+++ b/src/roam.h
@@ -53,6 +53,7 @@ struct _RoamView {
gdouble proj[16];
gint view[4];
gint version;
+ gdouble pos[3];
};
/*************
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]