hi,
about the vRotate bug, i found a fix for it which makes a lot of sense to me, it will actually make all rotations more accurate, even with the old cube's calculations, and will fix the bug with my calculations as a side-effect... ;-)
in paint.c lines 59-63 (applyScreenTransform) you do:
matrixRotate (transform,
sAttrib->vRotate,
1.0f - sAttrib->xRotate / 90.0f,
0.0f,
sAttrib->xRotate / 90.0f);
you use this rotation axis and not just x axis because you need to use the "old" x axis - the axis that was before the x-rotation changed it.
the formula you use, however, isn't accurate, and with negative xRotate values the rotation become wrong (hence the bugs with my patches).
after doing some simple calculations, the correct way to do this rotation is to use this line instead:
matrixRotate (transform, sAttrib->vRotate,
cos(sAttrib->xRotate * DEG2RAD),
0.0f,
sin(sAttrib->xRotate * DEG2RAD));
(where DEG2RAD is #define DEG2RAD (M_PI / 180.0f) and copied from matrix.c)
with this formula, all xRotate values are "supported" (negative, positive, >90 etc), and the axis itself is always more accurate, so i think it'd make sense to change it, even without the new cube's calculations.
thanks,
Roi