package uk.co.flyingsquirrels.utils; import org.jbox2d.common.Vec2; import static java.lang.Math.*; public class MathUtils { public static float map(float mapMe, float fromLow, float fromHigh, float toLow, float toHigh) { float interp = (mapMe - fromLow) / (fromHigh - fromLow); return (interp * toHigh + (1.0f - interp) * toLow); } public static double toRadians(double degrees) { return Math.toRadians(degrees); } public static double toDegrees(double radians) { return Math.toDegrees(radians); } public static float toRadians(float degrees) { return Double.valueOf(Math.toRadians(degrees)).floatValue(); } public static float toDegrees(float radians) { return Double.valueOf(Math.toDegrees(radians)).floatValue(); } public static double clamp(double value, double min, double max) { return min(max(value, min), max); } public static float clamp(float value, float min, float max) { return Double.valueOf(min(max(value, min), max)).floatValue(); } static double barrelClamp(double value, double maxAbs) { double increment = maxAbs * 2; while (value > maxAbs) { value -= increment; } while (value < -maxAbs) { value += increment; } return value; } public static float clampAngle(float value) { return Double.valueOf(barrelClamp(value, Math.PI)).floatValue(); } public static Vec2 rotate(Vec2 vector, double angle) { float x = Double.valueOf(cos(angle) * vector.x - sin(angle) * vector.y) .floatValue(); float y = Double.valueOf(sin(angle) * vector.x + cos(angle) * vector.y) .floatValue(); return new Vec2(x, y); } }