This commit is for historic purposes and will be reverend shortly.
static gboolean _update_errors_cb(gpointer _opengl)
{
GisOpenGL *opengl = _opengl;
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);
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)
{
*/
void roam_triangle_update_errors(RoamTriangle *triangle, RoamSphere *sphere)
{
/* Update points */
roam_point_update_projection(triangle->p.l, sphere->view);
roam_point_update_projection(triangle->p.m, sphere->view);
/* 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;
}
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 roam_sphere_split_merge(RoamSphere *sphere)
{
gint iters = 0, max_iters = 500;
//gint target = 500;
if (!sphere->view)
//gint target = 500;
if (!sphere->view)
gdouble proj[16];
gint view[4];
gint version;
gdouble proj[16];
gint view[4];
gint version;