package ddddbb.math;
public class D4Tupel {
public int[] x = new int[4];
// public int x1;
// public int x2;
// public int x3;
// public int x4;
public D4Tupel(int _x1,int _x2, int _x3, int _x4) {
x[0] = _x1;
x[1] = _x2;
x[2] = _x3;
x[3] = _x4;
}
public D4Tupel(int[] _x) {
x[0]=_x[0];
x[1]=_x[1];
x[2]=_x[2];
x[3]=_x[3];
}
public boolean isEqual(D4Tupel t) {
if (x[0] == t.x[0] & x[1] == t.x[1] & x[2] == t.x[2] & x[3] == t.x[3]) { return true; }
return false;
}
public boolean equals(D4Tupel t) {
return isEqual(t);
}
public D4Tupel minus() {
return new D4Tupel(-x[0],-x[1],-x[2],-x[3]);
}
public void rotate(int axis1, int axis2) {
int d1 = 2*x[0]+1, d2=2*x[1]+1, d3=2*x[2]+1, d4=2*x[3]+1;
int d=0;
switch (axis1) {
case 0:
switch (axis2) {
case 1:
d = d2;
d2 = d1;
break;
case 2:
d = d3;
d3 = d1;
break;
case 3:
d = d4;
d4 = d1;
break;
}
d1 = -d;
break;
case 1:
switch (axis2) {
case 0:
d = d1;
d1 = d2;
break;
case 2:
d = d3;
d3 = d2;
break;
case 3:
d = d4;
d4 = d2;
break;
}
d2 = -d;
break;
case 2:
switch (axis2) {
case 0:
d = d1;
d1 = d3;
break;
case 1:
d = d2;
d2 = d3;
break;
case 3:
d = d4;
d4 = d3;
break;
}
d3 = -d;
break;
case 3:
switch (axis2) {
case 0:
d = d1;
d1 = d4;
break;
case 1:
d = d2;
d2 = d4;
break;
case 2:
d = d3;
d3 = d4;
break;
}
d4 = -d;
break;
}
x[0] = (d1 - 1)/2;
x[1] = (d2 - 1)/2;
x[2] = (d3 - 1)/2;
x[3] = (d4 - 1)/2;
}
public void shift(int axis,int dist) {
switch (axis) {
case 0: x[0]+=dist; break;
case 1: x[1]+=dist; break;
case 2: x[2]+=dist; break;
case 3: x[3]+=dist; break;
}
}
public void trans(D4Tupel t) {
x[0] += t.x[0];
x[1] += t.x[1];
x[2] += t.x[2];
x[3] += t.x[3];
}
}