import jp.ac.teu.media.*;

public class m0104418_01 extends TMLib {
	final static int vsize = 480;

	public static void main(String[] args) {
		begin(new m0104418_01(), vsize, vsize);
	}

	public void Main() {
		int x, y, R, G, B;
		int i;
		double X, sX, wX, dX, Y, sY, wY, dY, Z1, Z2, Z3,Z4;
		double[] a = new double[10];
		TMLibImage img = new TMLibImage();
		img.newImage(vsize, vsize);

		// *** BEGIN WINDOW *** //

		sX = 1.0;
		sY = 1.0;
		wX = 100.0;
		wY = wX;

		// *** END WINDOW *** //

		dX = wX / (double) vsize;
		dY = wY / (double) vsize;

		for (x = 0; x < vsize; x++) {
			X = sX + dX * (double) x;

			for (y = 0; y < vsize; y++) {
				Y = sY + dY * (double) y;

				// *** BEGIN YOUR PROGRAM *** //

				Z1 = X*Math.sin(X*Y*Math.PI/(180+x*5))  + Y*Math.cos(Y*Math.PI/(180+y*2)) - Y * Math.tan(Y/180);
				Z2 = Y*Math.cos(X*X*Y*Y/180)-Y;
				Z3 = X * X * Y * Math.sin(X*Math.PI/(180+x)) + Y *Y* X * Math.sin(Y*Math.PI/(180+y));
				Z4 = Math.sin((Y+X))*Math.cos((Y+X)) ;

					R = (int) (Z4 + Z2) % 146 + (int)(X/2);
					G = (int) (Z1 + Z2) % 156 + (int)(X/2);
					B = (int) (Z3 + Z2) % 106 + (int)(Y/3);

						for (i = 0; i < 10; i++) {
							a[i] = (i * i * i ) / (X *X/(Y*5))+X/12;
							R += (int) (a[i] % 76)-i/2+15;
							G += (int) (a[i] % 56)+2*i;
							B += (int) (a[i] % 56)+i;
						}


				// *** END YOUR PROGRAM *** //

				img.setRGB(x, y, R, G, B);

			}
		}

		drawImage(0, 0, img);
		img.writeImage("m0104418_01.bmp");
	}
}