+ rp->PX += rp->VX;
+ rp->PY += rp->VY;
+
+ if (rp->PY < -1) {
+ rp->PY += (-1) - (rp->PY);
+ rp->VY = -rp->VY;
+ bounced = 1;
+ }
+ if (rp->PY > 1) {
+ rp->PY -= (rp->PY) - 1;
+ rp->VY = -rp->VY;
+ bounced = 1;
+ }
+ if (rp->PX < -1) {
+ rp->PX += (-1) - (rp->PX);
+ rp->VX = -rp->VX;
+ bounced = 1;
+ }
+ if (rp->PX > 1) {
+ rp->PX -= (rp->PX) - 1;
+ rp->VX = -rp->VX;
+ bounced = 1;
+ }
+ if (bounced) {
+ rp->VX += ((float) LRAND() / (float) RAND_MAX) * 0.02 - 0.01;
+ rp->VX += ((float) LRAND() / (float) RAND_MAX) * 0.02 - 0.01;
+ if (rp->VX > 0.06)
+ rp->VX = 0.06;
+ if (rp->VY > 0.06)
+ rp->VY = 0.06;
+ if (rp->VX < -0.06)
+ rp->VX = -0.06;
+ if (rp->VY < -0.06)
+ rp->VY = -0.06;
+ }
+ if (!MI_IS_ICONIC(mi)) {
+ glTranslatef(rp->PX, rp->PY, 0);