package main; public class Tools { public static Matrix createTranslationsMatrix(float x,float y,float z,float t) { Matrix translationmatrix = new Matrix(4,4); translationmatrix.set(0,0,1); translationmatrix.set(0,1,0); translationmatrix.set(0,2,0); translationmatrix.set(0,3,x); translationmatrix.set(1,0,0); translationmatrix.set(1,1,1); translationmatrix.set(1,2,0); translationmatrix.set(1,3,y); translationmatrix.set(2,0,0); translationmatrix.set(2,1,0); translationmatrix.set(2,2,1); translationmatrix.set(2,3,z); translationmatrix.set(3,0,0); translationmatrix.set(3,1,0); translationmatrix.set(3,2,0); translationmatrix.set(3,3,t); return translationmatrix; } public static Matrix createScalingMatrix(float x,float y,float z,float t) { Matrix scalingmatrix = new Matrix(4,4); scalingmatrix.set(0,0,x); scalingmatrix.set(0,1,0); scalingmatrix.set(0,2,0); scalingmatrix.set(0,3,0); scalingmatrix.set(1,0,0); scalingmatrix.set(1,1,y); scalingmatrix.set(1,2,0); scalingmatrix.set(1,3,0); scalingmatrix.set(2,0,0); scalingmatrix.set(2,1,0); scalingmatrix.set(2,2,z); scalingmatrix.set(2,3,0); scalingmatrix.set(3,0,0); scalingmatrix.set(3,1,0); scalingmatrix.set(3,2,0); scalingmatrix.set(3,3,t); return scalingmatrix; } public static Matrix createRotationXMatrix(double angle_x) { Matrix rotationxmatrix = new Matrix(4,4); rotationxmatrix.set(0,0,1); rotationxmatrix.set(0,1,0); rotationxmatrix.set(0,2,0); rotationxmatrix.set(0,3,0); rotationxmatrix.set(1,0,0); rotationxmatrix.set(1,1,(Math.cos(angle_x))); rotationxmatrix.set(1,2,(-Math.sin(angle_x))); rotationxmatrix.set(1,3,0); rotationxmatrix.set(2,0,0); rotationxmatrix.set(2,1,(Math.sin(angle_x))); rotationxmatrix.set(2,2,(Math.cos(angle_x))); rotationxmatrix.set(2,3,0); rotationxmatrix.set(3,0,0); rotationxmatrix.set(3,1,0); rotationxmatrix.set(3,2,0); rotationxmatrix.set(3,3,1); return rotationxmatrix; } public static Matrix createRotationYMatrix(double angle) { Matrix rotationymatrix = new Matrix(4,4); rotationymatrix.set(0,0,(Math.cos(angle))); rotationymatrix.set(0,1,0); rotationymatrix.set(0,2,(Math.sin(angle))); rotationymatrix.set(0,3,0); rotationymatrix.set(1,0,0); rotationymatrix.set(1,1,1); rotationymatrix.set(1,2,0); rotationymatrix.set(1,3,0); rotationymatrix.set(2,0,(-Math.sin(angle))); rotationymatrix.set(2,1,0); rotationymatrix.set(2,2,(Math.cos(angle))); rotationymatrix.set(2,3,0); rotationymatrix.set(3,0,0); rotationymatrix.set(3,1,0); rotationymatrix.set(3,2,0); rotationymatrix.set(3,3,1); return rotationymatrix; } public static Matrix createRotationZMatrix(double angle) { Matrix rotationzmatrix = new Matrix(4,4); rotationzmatrix.set(0,0,(Math.cos(angle))); rotationzmatrix.set(0,1,(-Math.sin(angle))); rotationzmatrix.set(0,2,0); rotationzmatrix.set(0,3,0); rotationzmatrix.set(1,0,(Math.sin(angle))); rotationzmatrix.set(1,1,(Math.cos(angle))); rotationzmatrix.set(1,2,0); rotationzmatrix.set(1,3,0); rotationzmatrix.set(2,0,0); rotationzmatrix.set(2,1,0); rotationzmatrix.set(2,2,1); rotationzmatrix.set(2,3,0); rotationzmatrix.set(3,0,0); rotationzmatrix.set(3,1,0); rotationzmatrix.set(3,2,0); rotationzmatrix.set(3,3,1); return rotationzmatrix; } public static Matrix transformationMatrix(float tx,float ty,float tz,float tt,double rotX,double rotY,double rotZ,float scalingfactor) { Matrix transformationMatrix = null; Matrix translationMatrix = createTranslationsMatrix(tx,ty,tz,tt); Matrix rotationxMatrix = createRotationXMatrix(rotX); Matrix rotationyMatrix = createRotationYMatrix(rotY); Matrix rotationzMatrix =createRotationZMatrix(rotZ); Matrix scalingMatrix = createScalingMatrix(scalingfactor,scalingfactor,scalingfactor,1.0f); transformationMatrix = Matrix.multipliziereMatrix(translationMatrix,Matrix.multipliziereMatrix(rotationxMatrix,Matrix.multipliziereMatrix(rotationyMatrix,Matrix.multipliziereMatrix(rotationzMatrix,scalingMatrix)))); return transformationMatrix; } }