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];
}
}
}