Collection of useful utilities for Java games and apps. A lot of interesting utilities that could maybe still find some use if you work with Java...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mightyutils/src/mightypork/utils/math/angles/Angles.java

59 lines
1.2 KiB

package mightypork.utils.math.angles;
/**
* Common angles functionality
*
* @author Ondřej Hruška (MightyPork)
*/
class Angles {
/**
* Delta of two angles (positive or negative - positive is CCW)
*
* @param alpha first angle
* @param beta second angle
* @param fullAngle value of full angle
* @return delta of the two angles
*/
public static double delta(double alpha, double beta, double fullAngle)
{
while (Math.abs(alpha - beta) > fullAngle / 2D) {
alpha = norm(alpha + fullAngle / 2D, fullAngle);
beta = norm(beta + fullAngle / 2D, fullAngle);
}
return beta - alpha;
}
/**
* Difference of two angles (same as delta, but always positive)
*
* @param alpha first angle
* @param beta second angle
* @param fullAngle value of full angle
* @return delta of the two angles
*/
public static double diff(double alpha, double beta, double fullAngle)
{
return Math.abs(delta(alpha, beta, fullAngle));
}
/**
* Normalize angle to 0-full range
*
* @param angle angle
* @param fullAngle full angle
* @return angle normalized
*/
public static double norm(double angle, double fullAngle)
{
while (angle < 0)
angle += fullAngle;
while (angle > fullAngle)
angle -= fullAngle;
return angle;
}
}