package MCview; public class MCMatrix { float matrix[][]; float tmp[][]; float mycos; float mysin; float myconst = (float)(Math.PI/180); public MCMatrix(int rows, int cols) { matrix = new float[rows][cols]; tmp = new float[rows][cols]; } public void addElement(int i, int j, float value) { matrix[i][j] = value; } public void print() { System.out.println(matrix[0][0] + " " + matrix[0][1] + " " + matrix[0][2]); System.out.println(matrix[1][0] + " " + matrix[1][1] + " " + matrix[1][2]); System.out.println(matrix[2][0] + " " + matrix[2][1] + " " + matrix[2][2]); } public void rotatex(float degrees) { mycos = (float)(Math.cos(degrees*myconst)); mysin = (float)(Math.sin(degrees*myconst)); tmp[0][0] = 1; tmp[0][1] = 0; tmp[0][2] = 0; tmp[1][0] = 0; tmp[1][1] = mycos; tmp[1][2] = mysin; tmp[2][0] = 0; tmp[2][1] = -mysin; tmp[2][2] = mycos; preMultiply(tmp); } public void rotatez(float degrees) { mycos = (float)(Math.cos(degrees*myconst)); mysin = (float)(Math.sin(degrees*myconst)); tmp[0][0] = mycos; tmp[0][1] = -mysin; tmp[0][2] = 0; tmp[1][0] = mysin; tmp[1][1] = mycos; tmp[1][2] = 0; tmp[2][0] = 0; tmp[2][1] = 0; tmp[2][2] = 1; preMultiply(tmp); } public void rotatey(float degrees) { mycos = (float)(Math.cos(degrees*myconst)); mysin = (float)(Math.sin(degrees*myconst)); tmp[0][0] = mycos; tmp[0][1] = 0; tmp[0][2] = -mysin; tmp[1][0] = 0; tmp[1][1] = 1; tmp[1][2] = 0; tmp[2][0] = mysin; tmp[2][1] = 0; tmp[2][2] = mycos; preMultiply(tmp); } public float[] vectorMultiply(float[] vect) { float temp[] = new float[3]; temp[0] = vect[0]; temp[1] = vect[1]; temp[2] = vect[2]; for (int i = 0; i < 3; i++) { temp[i] = (float)matrix[i][0]*vect[0] + (float)matrix[i][1]*vect[1] +(float)matrix[i][2]*vect[2]; } vect[0] = temp[0]; vect[1] = temp[1]; vect[2] = temp[2]; return vect; } public void preMultiply(float mat[][]) { float tmp[][] = new float[3][3]; for (int i = 0; i < 3 ; i++) { for (int j = 0; j < 3; j++ ) { tmp[i][j] = mat[i][0]*matrix[0][j] + mat[i][1]*matrix[1][j] + mat[i][2]*matrix[2][j]; } } for (int i = 0; i < 3 ; i++) { for (int j = 0; j < 3; j++ ) { matrix[i][j] = tmp[i][j]; } } } public void postMultiply(float mat[][]) { float tmp[][] = new float[3][3]; for (int i = 0; i < 3 ; i++) { for (int j = 0; j < 3; j++ ) { tmp[i][j] = matrix[i][0]*mat[0][j] + matrix[i][1]*mat[1][j] + matrix[i][2]*mat[2][j]; } } for (int i = 0; i < 3 ; i++) { for (int j = 0; j < 3; j++ ) { matrix[i][j] = tmp[i][j]; } } } public void setIdentity() { matrix[0][0] = 1; matrix[1][1] = 1; matrix[2][2] = 1; matrix[0][1] = 0; matrix[0][2] = 0; matrix[1][0] = 0; matrix[1][2] = 0; matrix[2][0] = 0; matrix[2][1] = 0; } }