/* * Pattern.java * * Copyright (C) 1998,1999 by Hiroshi Yuki. * All rights reserved. * * http://www.hyuki.com/jb/ */ import java.awt.*; import java.applet.*; public class Pattern extends Applet { final int R = 10; int rw = R; int rh = R; double rpar = 1.0, gpar = 1.0, bpar = 1.0; Dimension dim; Image offimg; Graphics offgra; public void init() { String s; s = getParameter("RECTWIDTH"); if ( s != null){ rw = Integer.parseInt(s); } s = getParameter("RECTHEIGHT"); if ( s != null){ rh = Integer.parseInt(s); } } public void start() { dim = size(); offimg = createImage(dim.width, dim.height); offgra = offimg.getGraphics(); } public boolean mouseDown(Event e, int x, int y) { int ex = Math.abs(x - (dim.width - rw)) / 2; int ey = Math.abs(y - (dim.height - rh)) / 2; int dist2 = ex * ex + ey * ey; if (-1 < dist2 && dist2 < 1) dist2 = 1; rpar = Math.random() * ex * ex / dist2; gpar = Math.random() * ex * ey / dist2; bpar = Math.random() * ey * ey / dist2; repaint(); return true; } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if (offgra == null) return; for (int y = 0; y < dim.height; y += rh) { for (int x = 0; x < dim.width; x += rw) { int ex = x - (dim.width - rw) / 2; int ey = y - (dim.height - rh) / 2; int dist2 = ex * ex + ey * ey; int gr = (int)(dist2 * rpar) % 256; int gg = (int)(dist2 * gpar) % 256; int gb = (int)(dist2 * bpar) % 256; offgra.setColor(new Color(gr, gg, gb)); offgra.fillRect(x, y, rw, rh); } } g.drawImage(offimg, 0, 0, this); } }