100 lines
2.0 KiB
Java
100 lines
2.0 KiB
Java
package mods.tinker.tconstruct.client.tmt;
|
|
|
|
/**
|
|
* This class handles angles. Basically all it does it store angles. You can
|
|
* directly alter the angles.
|
|
* @author GaryCXJk
|
|
*
|
|
*/
|
|
public class Angle3D
|
|
{
|
|
/**
|
|
* The constructor to create a new Angle3D.
|
|
* @param x the x-rotation
|
|
* @param y the y-rotation
|
|
* @param z the z-rotation
|
|
*/
|
|
public Angle3D(float x, float y, float z)
|
|
{
|
|
angleX = x;
|
|
angleY = y;
|
|
angleZ = z;
|
|
}
|
|
|
|
/**
|
|
* Adds the given angles to the current angles.
|
|
* @param x the x-rotation
|
|
* @param y the y-rotation
|
|
* @param z the z-rotation
|
|
*/
|
|
public void addAngles(float x, float y, float z)
|
|
{
|
|
angleX+= x;
|
|
angleY+= y;
|
|
angleZ+= z;
|
|
}
|
|
|
|
/**
|
|
* Adds the angles of another Angle3D to the current angles.
|
|
* @param angles the Angle3D
|
|
*/
|
|
public void addAngles(Angle3D angles)
|
|
{
|
|
angleX+= angles.angleX;
|
|
angleY+= angles.angleY;
|
|
angleZ+= angles.angleZ;
|
|
}
|
|
|
|
/**
|
|
* Multiplies the angles with the given angles.
|
|
* @param x the x-rotation
|
|
* @param y the y-rotation
|
|
* @param z the z-rotation
|
|
*/
|
|
public void multiplyAngles(float x, float y, float z)
|
|
{
|
|
angleX*= x;
|
|
angleY*= y;
|
|
angleZ*= z;
|
|
}
|
|
|
|
/**
|
|
* Multiplies the angles with a given Angle3D.
|
|
* @param angles the Angle3D
|
|
*/
|
|
public void multiplyAngles(Angle3D angles)
|
|
{
|
|
angleX*= angles.angleX;
|
|
angleY*= angles.angleY;
|
|
angleZ*= angles.angleZ;
|
|
}
|
|
|
|
/**
|
|
* Gets the center angle between two angles.
|
|
* @param angles1 the first Angle3D
|
|
* @param angles2 the second Angle3D
|
|
* @return the center Angle3D
|
|
*/
|
|
public static Angle3D getCenter(Angle3D angles1, Angle3D angles2)
|
|
{
|
|
Angle3D angles = new Angle3D(0, 0, 0);
|
|
angles.addAngles(angles1);
|
|
angles.addAngles(angles2);
|
|
angles.multiplyAngles(0.5F, 0.5F, 0.5F);
|
|
return angles;
|
|
}
|
|
|
|
/**
|
|
* Copies the current Angle3D over to a new Angle3D instance.
|
|
* @return a copy of the Angle3D instance
|
|
*/
|
|
public Angle3D copy()
|
|
{
|
|
return new Angle3D(angleX, angleY, angleZ);
|
|
}
|
|
|
|
public float angleX;
|
|
public float angleY;
|
|
public float angleZ;
|
|
}
|