double width = GTK_WIDGET(opengl)->allocation.width;
double height = GTK_WIDGET(opengl)->allocation.height;
- double ang = atan(height/FOV_DIST);
+ double ang = atan((height/2)/FOV_DIST)*2;
double atmos = 100000;
double near = MAX(elev*0.75 - atmos, 50); // View 100km of atmosphere
double far = elev + 2*EARTH_R + atmos; // on both sides of the earth
gdouble lat, lon, elev, scale, rx, ry, rz;
grits_viewer_get_location(GRITS_VIEWER(viewer), &lat, &lon, &elev);
grits_viewer_get_rotation(GRITS_VIEWER(viewer), &rx, &ry, &rz);
- scale = (elev/EARTH_R/40) * (sin(deg2rad(ABS(rx)))*4+1);
+ scale = (elev/EARTH_R/14.1) * (sin(deg2rad(ABS(rx)))*4+1);
switch (viewer->drag_mode) {
- case GRITS_DRAG_PAN: grits_viewer_pan(viewer, -y*scale, x*scale, 0); break;
+ case GRITS_DRAG_PAN: grits_viewer_pan(viewer, -y*scale*0.782, x*scale, 0); break;
case GRITS_DRAG_ZOOM: grits_viewer_zoom(viewer, pow(2, -y/500)); break;
- case GRITS_DRAG_TILT: grits_viewer_rotate(viewer, y/30, 0, x/20); break;
+ case GRITS_DRAG_TILT: grits_viewer_rotate(viewer, y/10, 0, x/10); break;
}
viewer->drag_x = event->x;
viewer->drag_y = event->y;
viewer->time = time(NULL);
viewer->location[0] = 40;
viewer->location[1] = -100;
- viewer->location[2] = 4*EARTH_R;
+ viewer->location[2] = EARTH_R;
viewer->rotation[0] = 0;
viewer->rotation[1] = 0;
viewer->rotation[2] = 0;