code: public final void setAxisAngle(double x1, double y1, double z1, double angle) {
  		double mag,amag;
  		// Quat = cos(theta/2) + sin(theta/2)(roation_axis) 
  		amag = Math.sqrt(x1*x1 + y1*y1 + z1*z1);
  		if (amag < EPS ) {
  			this.w = 0.0f;
  			this.x = 0.0f;
  			this.y = 0.0f;
  			this.z = 0.0f;
  		}
  		else {  
  			amag = 1.0f/amag; 
  			mag = Math.sin(angle/2.0);
  			this.w = Math.cos(angle/2.0);
  			this.x = x1*amag*mag;
  			this.y = y1*amag*mag;
  			this.z = z1*amag*mag;
  		}
  	}
docs: Sets the value of this quaternion to the equivalent rotation
  of the Axis-Angle arguments.
  @param x1 is the x coordinate of the rotation axis
  @param y1 is the y coordinate of the rotation axis
  @param z1 is the z coordinate of the rotation axis
  @param angle is the rotation around the axis.