public static Affine getAffine(double dimCube, double d0, boolean bFaceArrow, String face) { Affine aff; double d = 2d * dimCube / 3d; if (!bFaceArrow) { aff = new Affine(new Scale(80, 80, 50)); aff.append(new Translate(-d0, -d0, d0)); } else { aff = new Affine(new Scale(3, 3, 3)); aff.append(new Translate(0, -d0, 0)); } switch (face) { case "F": case "Fi": aff.prepend(new Rotate(face.equals("F") ? 90 : -90, Rotate.X_AXIS)); aff.prepend(new Rotate(face.equals("F") ? 45 : -45, Rotate.Z_AXIS)); aff.prepend(new Translate(0, 0, dimCube / 2d)); break; case "B": case "Bi": aff.prepend(new Rotate(face.equals("Bi") ? 90 : -90, Rotate.X_AXIS)); aff.prepend(new Rotate(face.equals("Bi") ? 45 : -45, Rotate.Z_AXIS)); aff.prepend(new Translate(0, 0, -dimCube / 2d)); break; case "R": case "Ri": aff.prepend(new Rotate(face.equals("Ri") ? 90 : -90, Rotate.Z_AXIS)); aff.prepend(new Rotate(face.equals("Ri") ? 45 : -45, Rotate.X_AXIS)); aff.prepend(new Translate(dimCube / 2d, 0, 0)); break; case "L": case "Li": aff.prepend(new Rotate(face.equals("L") ? 90 : -90, Rotate.Z_AXIS)); aff.prepend(new Rotate(face.equals("L") ? 45 : -45, Rotate.X_AXIS)); aff.prepend(new Translate(-dimCube / 2d, 0, 0)); break; case "U": case "Ui": aff.prepend(new Rotate(face.equals("Ui") ? 180 : 0, Rotate.Z_AXIS)); aff.prepend(new Rotate(face.equals("Ui") ? 45 : -45, Rotate.Y_AXIS)); aff.prepend(new Translate(0, dimCube / 2d, 0)); break; case "D": case "Di": aff.prepend(new Rotate(face.equals("D") ? 180 : 0, Rotate.Z_AXIS)); aff.prepend(new Rotate(face.equals("D") ? 45 : -45, Rotate.Y_AXIS)); aff.prepend(new Translate(0, -dimCube / 2d, 0)); break; case "Z": case "Zi": aff.prepend(new Rotate(face.equals("Zi") ? 180 : 0, Rotate.Y_AXIS)); aff.prepend(new Rotate(face.equals("Zi") ? 45 : -45, Rotate.Z_AXIS)); aff.prepend(new Translate(0, 0, d)); break; case "X": case "Xi": aff.prepend(new Rotate(face.equals("X") ? 90 : -90, Rotate.Y_AXIS)); aff.prepend(new Rotate(face.equals("Xi") ? 45 : -45, Rotate.X_AXIS)); aff.prepend(new Translate(d, 0, 0)); break; case "Y": case "Yi": aff.prepend(new Rotate(face.equals("Yi") ? 90 : -90, Rotate.X_AXIS)); aff.prepend(new Rotate(face.equals("Yi") ? 45 : -45, Rotate.Y_AXIS)); aff.prepend(new Translate(0, d, 0)); break; } return aff; }