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);
*/
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);
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;
}
/**
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)