static int ncut, currentbuffer, x11depth, x11screen;
XVisualInfo visinfo;
-static struct { double scale, eyes_apart; } sizeadj= { 0.3, 0.0 };
-static double scale_wmindim;
+static double sizeadj_scale= 0.3, eyes_apart, scale_wmindim;
static double eye_z= -10, eye_x=0;
static double cut_z= -9;
XA( XFillRectangle(display,pixmap,dmwhite.fillgc,0,0,wwidth,wheight) );
- if (sizeadj.eyes_apart > 0) {
- const double preferred=100, beyond=200;
+ if (eyes_apart > 0) {
+ const double preferred=0.05, beyond=0.07;
- eye_x= sizeadj.eyes_apart < preferred ? sizeadj.eyes_apart :
- sizeadj.eyes_apart < beyond ? preferred :
- sizeadj.eyes_apart - (beyond - preferred);
- eye_x /= scale_wmindim;
+ eye_x= eyes_apart < preferred ? eyes_apart :
+ eyes_apart < beyond ? preferred :
+ eyes_apart - (beyond - preferred);
+ eye_x /= sizeadj_scale;
drawtriangles(&dmblue);
eye_x= -eye_x;
drawtriangles(&dmred);
}
static void show(void) {
- scale_wmindim= sizeadj.scale * wmindim;
+ scale_wmindim= sizeadj_scale * wmindim;
read_input();
transform_coordinates();
generate_display_list();
DRAG_SAVING(rotate, transform);
static void drag_sizeadj_delta(double dx, double dy) {
- const double min_eyes_apart= -200;
- sizeadj.scale *= pow(3.0, dy);
-
- sizeadj.eyes_apart += dx * wmaxdim;
- if (sizeadj.eyes_apart < min_eyes_apart) sizeadj.eyes_apart= min_eyes_apart;
- printf("sizeadj eyes_apart %g\n", sizeadj.eyes_apart);
+ sizeadj_scale *= pow(3.0, -dy);
+ show();
+}
+DRAG_SAVING(sizeadj, sizeadj_scale);
+
+static void drag_3d_delta(double dx, double dy) {
+ const double min_eyes_apart= -0.02;
+ eyes_apart += dx * 0.1;
+ if (eyes_apart < min_eyes_apart) eyes_apart= min_eyes_apart;
+ printf("sizeadj eyes_apart %g\n", eyes_apart);
show();
}
-DRAG_SAVING(sizeadj, sizeadj);
+DRAG_SAVING(3d, eyes_apart);
static const Drag *drag= &drag_none;
switch (e->button) {
case Button1: drag= &drag_rotate; break;
case Button2: drag= &drag_sizeadj; break;
- case Button3: drag= &drag_3d; break;
+ case Button3: drag= &drag_3d; break;
default: printf("unknown drag start %d\n", e->button);
}
printf("drag=%s press button=%lu start %d,%d\n",