package net.minecraft.server; public final class Quaternion { public static final Quaternion a = new Quaternion(0.0F, 0.0F, 0.0F, 1.0F); private float b; private float c; private float d; private float e; public Quaternion(float f, float f1, float f2, float f3) { this.b = f; this.c = f1; this.d = f2; this.e = f3; } public Quaternion(Vector3fa vector3fa, float f, boolean flag) { if (flag) { f *= 0.017453292F; } float f1 = c(f / 2.0F); this.b = vector3fa.a() * f1; this.c = vector3fa.b() * f1; this.d = vector3fa.c() * f1; this.e = b(f / 2.0F); } public Quaternion(Quaternion quaternion) { this.b = quaternion.b; this.c = quaternion.c; this.d = quaternion.d; this.e = quaternion.e; } public boolean equals(Object object) { if (this == object) { return true; } else if (object != null && this.getClass() == object.getClass()) { Quaternion quaternion = (Quaternion) object; return Float.compare(quaternion.b, this.b) != 0 ? false : (Float.compare(quaternion.c, this.c) != 0 ? false : (Float.compare(quaternion.d, this.d) != 0 ? false : Float.compare(quaternion.e, this.e) == 0)); } else { return false; } } public int hashCode() { int i = Float.floatToIntBits(this.b); i = 31 * i + Float.floatToIntBits(this.c); i = 31 * i + Float.floatToIntBits(this.d); i = 31 * i + Float.floatToIntBits(this.e); return i; } public String toString() { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append("Quaternion[").append(this.d()).append(" + "); stringbuilder.append(this.a()).append("i + "); stringbuilder.append(this.b()).append("j + "); stringbuilder.append(this.c()).append("k]"); return stringbuilder.toString(); } public float a() { return this.b; } public float b() { return this.c; } public float c() { return this.d; } public float d() { return this.e; } public void a(Quaternion quaternion) { float f = this.a(); float f1 = this.b(); float f2 = this.c(); float f3 = this.d(); float f4 = quaternion.a(); float f5 = quaternion.b(); float f6 = quaternion.c(); float f7 = quaternion.d(); this.b = f3 * f4 + f * f7 + f1 * f6 - f2 * f5; this.c = f3 * f5 - f * f6 + f1 * f7 + f2 * f4; this.d = f3 * f6 + f * f5 - f1 * f4 + f2 * f7; this.e = f3 * f7 - f * f4 - f1 * f5 - f2 * f6; } public void e() { this.b = -this.b; this.c = -this.c; this.d = -this.d; } private static float b(float f) { return (float) Math.cos((double) f); } private static float c(float f) { return (float) Math.sin((double) f); } }