public class Transform3D extends Transform2D {
	
	// niektore metody su pouzite z triedy Transform2D
	
	// metoda pre otacanie obejktu okolo danej osi
	public void otoc(int fi, double[][] matvrch,int os) {
		// premenna os udava okolo ktorej osi mame objekt otacat
		switch(os) {
			case 2: { // os z
				for(int i=0;i<matvrch.length;i++) {
                		        double x = matvrch[i][0];
		                        double y = matvrch[i][1];
		                        matvrch[i][0] = x*cosinus(fi) -y*sinus(fi);
		                        matvrch[i][1] = x*sinus(fi) +y*cosinus(fi);
				
                		}
				break;
			}
			case 1: { // os y
                                for(int i=0;i<matvrch.length;i++) {
					double x = matvrch[i][0];
	                                double z = matvrch[i][2];
                                        matvrch[i][0] = x*cosinus(fi) +z*sinus(fi);
                                        matvrch[i][2] = -x*sinus(fi) +z*cosinus(fi);
                                }
				break;
			}

			case 0: { // os x
                                for(int i=0;i<matvrch.length;i++) {
                                        double y = matvrch[i][1];
                                        double z = matvrch[i][2];
                                        matvrch[i][1] = y*cosinus(fi) -z*sinus(fi);
                                        matvrch[i][2] = y*sinus(fi) +z*cosinus(fi);
                                }
				break;
			}
		}
	}

	// metoda pre zrkadlenie objektu podla danej osi
	public void odraz(int os, double[][] matvrch) {
		for(int i=0;i<matvrch.length;i++) {
                        for(int j=0;j<matvrch[i].length;j++) if(j!=os) matvrch[i][j] = -matvrch[i][j];
                }
        }

	// metoda pre skosenie obejektu na danej osi
	// S je koeficient skosenia
	public void skos(double S,int os, double[][] matvrch) {
		for(int i=0;i<matvrch.length;i++) {
                	for(int j=0;j<matvrch[i].length;j++) if(j!=os) matvrch[i][j] += S*matvrch[i][os];
		}
        }
}