minecraft-source/src/com/mojang/math/SymmetricGroup3.java

67 lines
2.2 KiB
Java

package com.mojang.math;
import net.minecraft.Util;
import java.util.Arrays;
public enum SymmetricGroup3 {
P123(0, 1, 2),
P213(1, 0, 2),
P132(0, 2, 1),
P231(1, 2, 0),
P312(2, 0, 1),
P321(2, 1, 0);
private final int[] permutation;
private final Matrix3f transformation;
private static final SymmetricGroup3[][] cayleyTable;
private SymmetricGroup3(final int integer3, final int integer4, final int integer5) {
this.permutation = new int[] { integer3, integer4, integer5 };
(this.transformation = new Matrix3f()).set(0, this.permutation(0), 1.0f);
this.transformation.set(1, this.permutation(1), 1.0f);
this.transformation.set(2, this.permutation(2), 1.0f);
}
public SymmetricGroup3 compose(final SymmetricGroup3 e) {
return SymmetricGroup3.cayleyTable[this.ordinal()][e.ordinal()];
}
public int permutation(final int integer) {
return this.permutation[integer];
}
public Matrix3f transformation() {
return this.transformation;
}
static {
final SymmetricGroup3[] array;
int length;
int i = 0;
SymmetricGroup3 e2;
final SymmetricGroup3[] array2;
int length2;
int j = 0;
SymmetricGroup3 e3;
int[] arr2;
int integer11;
SymmetricGroup3 e4;
cayleyTable = Util.<SymmetricGroup3[][]>make(new SymmetricGroup3[values().length][values().length], arr -> {
values();
for (length = array.length; i < length; ++i) {
e2 = array[i];
values();
for (length2 = array2.length; j < length2; ++j) {
e3 = array2[j];
arr2 = new int[3];
for (integer11 = 0; integer11 < 3; ++integer11) {
arr2[integer11] = e2.permutation[e3.permutation[integer11]];
}
e4 = Arrays.<SymmetricGroup3>stream(values()).filter(e -> Arrays.equals(e.permutation, arr2)).findFirst().get();
arr[e2.ordinal()][e3.ordinal()] = e4;
}
}
});
}
}