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);
}
}