import java.lang.Math;

public class Transform2D {
	final double pi = 3.141582654;

	protected double sinus(double fi) { // vlastny sinus pre stupne (nie radiany!)

		return(Math.sin(fi*pi/180));
	}
	
	protected double cosinus(double fi) { // vlastny cosinus

		return(Math.cos(fi*pi/180));
	}
	
	// dalej budu pouzite metody sinus a cosinus


	// 2d otocenie

	public void otoc(int fi, double[][] matvrch) {
		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));
		}
	}

	// 2d zmena mierky

	public void zmenMierku(double M, double[][] matvrch) {
		for(int i=0;i<matvrch.length;i++) {
			for(int j=0;j<matvrch[i].length;j++) matvrch[i][j] *= M;
		}
	}
	
	// 2d skosenie

	// pri osi plati ze 0 == x, 1 == y

	public void skos(double S,int os, double[][] matvrch) {
		// opacna os k tej co sa meni

		int pomOs = (os == 1 ? 0 : 1); 
		for(int i=0;i<matvrch.length;i++) {
			matvrch[i][os] += S* matvrch[i][pomOs];
		}
	}

	// 2d posunutie

	public void posun(double posun, int os, double[][] matvrch) {
		for(int i=0;i<matvrch.length;i++) {
			 matvrch[i][os] += posun;
		}
	}

	// 2d zrkadlenie

	public void odraz(int os, double[][] matvrch) {
		for(int i=0;i<matvrch.length;i++) {
			matvrch[i][os] = -matvrch[i][os];
		}
	}
}