+static double drag_transform_conv_x_z= 0;
+static double drag_transform_conv_y_z= 0;
+
+static void drag_transform_prep(const XButtonEvent *e) {
+ static const double factor= 2.5;
+ drag_transform_conv_x_z= MAX( MIN(e->y * factor / wheight - (factor/2),
+ 1.0), -1.0);
+ drag_transform_conv_y_z= MAX( MIN(e->x * factor / wwidth - (factor/2),
+ 1.0), -1.0);
+ printf("drag_transform_conv_{x,y}_z = %g,%g\n",
+ drag_transform_conv_x_z, drag_transform_conv_y_z);
+}
+
+static void make_z_rotation(double rotz[D3][D3], double cz, double sz) {
+ rotz[0][0]= cz; rotz[0][1]= sz; rotz[0][2]= 0;
+ rotz[1][0]= -sz; rotz[1][1]= cz; rotz[1][2]= 0;
+ rotz[2][0]= 0; rotz[2][1]= 0; rotz[2][2]= 1;
+}
+