Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/ By: md_5 <git@md-5.net>
This commit is contained in:
147
paper-api/src/main/java/org/bukkit/util/EulerAngle.java
Normal file
147
paper-api/src/main/java/org/bukkit/util/EulerAngle.java
Normal file
@@ -0,0 +1,147 @@
|
||||
package org.bukkit.util;
|
||||
|
||||
/**
|
||||
* EulerAngle is used to represent 3 angles, one for each
|
||||
* axis (x, y, z). The angles are in radians
|
||||
*/
|
||||
public class EulerAngle {
|
||||
|
||||
/**
|
||||
* A EulerAngle with every axis set to 0
|
||||
*/
|
||||
public static final EulerAngle ZERO = new EulerAngle(0, 0, 0);
|
||||
|
||||
private final double x;
|
||||
private final double y;
|
||||
private final double z;
|
||||
|
||||
/**
|
||||
* Creates a EularAngle with each axis set to the
|
||||
* passed angle in radians
|
||||
*
|
||||
* @param x the angle for the x axis in radians
|
||||
* @param y the angle for the x axis in radians
|
||||
* @param z the angle for the x axis in radians
|
||||
*/
|
||||
public EulerAngle(double x, double y, double z) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the angle on the x axis in radians
|
||||
*
|
||||
* @return the angle in radians
|
||||
*/
|
||||
public double getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the angle on the y axis in radians
|
||||
*
|
||||
* @return the angle in radians
|
||||
*/
|
||||
public double getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the angle on the z axis in radians
|
||||
*
|
||||
* @return the angle in radians
|
||||
*/
|
||||
public double getZ() {
|
||||
return z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a EulerAngle which is the result of changing
|
||||
* the x axis to the passed angle
|
||||
*
|
||||
* @param x the angle in radians
|
||||
* @return the resultant EulerAngle
|
||||
*/
|
||||
public EulerAngle setX(double x) {
|
||||
return new EulerAngle(x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a EulerAngle which is the result of changing
|
||||
* the y axis to the passed angle
|
||||
*
|
||||
* @param y the angle in radians
|
||||
* @return the resultant EulerAngle
|
||||
*/
|
||||
public EulerAngle setY(double y) {
|
||||
return new EulerAngle(x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a EulerAngle which is the result of changing
|
||||
* the z axis to the passed angle
|
||||
*
|
||||
* @param z the angle in radians
|
||||
* @return the resultant EulerAngle
|
||||
*/
|
||||
public EulerAngle setZ(double z) {
|
||||
return new EulerAngle(x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new EulerAngle which is the result of adding
|
||||
* the x, y, z components to this EulerAngle
|
||||
*
|
||||
* @param x the angle to add to the x axis in radians
|
||||
* @param y the angle to add to the y axis in radians
|
||||
* @param z the angle to add to the z axis in radians
|
||||
* @return the resultant EulerAngle
|
||||
*/
|
||||
public EulerAngle add(double x, double y, double z) {
|
||||
return new EulerAngle(
|
||||
this.x + x,
|
||||
this.y + y,
|
||||
this.z + z
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new EulerAngle which is the result of subtracting
|
||||
* the x, y, z components to this EulerAngle
|
||||
*
|
||||
* @param x the angle to subtract to the x axis in radians
|
||||
* @param y the angle to subtract to the y axis in radians
|
||||
* @param z the angle to subtract to the z axis in radians
|
||||
* @return the resultant EulerAngle
|
||||
*/
|
||||
public EulerAngle subtract(double x, double y, double z) {
|
||||
return add(-x, -y, -z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
EulerAngle that = (EulerAngle) o;
|
||||
|
||||
return Double.compare(that.x, x) == 0
|
||||
&& Double.compare(that.y, y) == 0
|
||||
&& Double.compare(that.z, z) == 0;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result;
|
||||
long temp;
|
||||
temp = Double.doubleToLongBits(x);
|
||||
result = (int) (temp ^ (temp >>> 32));
|
||||
temp = Double.doubleToLongBits(y);
|
||||
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||
temp = Double.doubleToLongBits(z);
|
||||
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user