package com.mojang.math; import org.joml.Math; import org.joml.Matrix3f; import org.joml.Quaternionf; public record GivensParameters(float sinHalf, float cosHalf) { public static GivensParameters fromUnnormalized(float p_276277_, float p_276305_) { float f = Math.invsqrt(p_276277_ * p_276277_ + p_276305_ * p_276305_); return new GivensParameters(f * p_276277_, f * p_276305_); } public static GivensParameters fromPositiveAngle(float p_276260_) { float f = Math.sin(p_276260_ / 2.0F); float f1 = Math.cosFromSin(f, p_276260_ / 2.0F); return new GivensParameters(f, f1); } public GivensParameters inverse() { return new GivensParameters(-this.sinHalf, this.cosHalf); } public Quaternionf aroundX(Quaternionf p_276271_) { return p_276271_.set(this.sinHalf, 0.0F, 0.0F, this.cosHalf); } public Quaternionf aroundY(Quaternionf p_276323_) { return p_276323_.set(0.0F, this.sinHalf, 0.0F, this.cosHalf); } public Quaternionf aroundZ(Quaternionf p_276281_) { return p_276281_.set(0.0F, 0.0F, this.sinHalf, this.cosHalf); } public float cos() { return this.cosHalf * this.cosHalf - this.sinHalf * this.sinHalf; } public float sin() { return 2.0F * this.sinHalf * this.cosHalf; } public Matrix3f aroundX(Matrix3f p_276268_) { p_276268_.m01 = 0.0F; p_276268_.m02 = 0.0F; p_276268_.m10 = 0.0F; p_276268_.m20 = 0.0F; float f = this.cos(); float f1 = this.sin(); p_276268_.m11 = f; p_276268_.m22 = f; p_276268_.m12 = f1; p_276268_.m21 = -f1; p_276268_.m00 = 1.0F; return p_276268_; } public Matrix3f aroundY(Matrix3f p_276274_) { p_276274_.m01 = 0.0F; p_276274_.m10 = 0.0F; p_276274_.m12 = 0.0F; p_276274_.m21 = 0.0F; float f = this.cos(); float f1 = this.sin(); p_276274_.m00 = f; p_276274_.m22 = f; p_276274_.m02 = -f1; p_276274_.m20 = f1; p_276274_.m11 = 1.0F; return p_276274_; } public Matrix3f aroundZ(Matrix3f p_276317_) { p_276317_.m02 = 0.0F; p_276317_.m12 = 0.0F; p_276317_.m20 = 0.0F; p_276317_.m21 = 0.0F; float f = this.cos(); float f1 = this.sin(); p_276317_.m00 = f; p_276317_.m11 = f; p_276317_.m01 = f1; p_276317_.m10 = -f1; p_276317_.m22 = 1.0F; return p_276317_; } }