quat.createFromAxisAngle((float) norm.x, (float) norm.y, (float) norm.z, (float) alpha);
quat.createMatrix(matrix);
Matrix mMatrix = new Matrix(matrix);
direction = mMatrix.multvector(direction);
up = mMatrix.multvector(up);
}
void strafeUpDown(float factor) {
/* reduce speed when the surface is near */
float surfacedist = (float)(viewer.length()-1);