// FireColor.java // Draw Rolling String // by nagatani@eken.phys.nagoya-u.ac.jp import java.applet.Applet; import java.awt.*; public class FireColor implements SGObject { int xWindow, yWindow; int xDelta, yDelta; double t; int nMode; FireColor (Applet applet) { this.xWindow = applet.size().width; this.yWindow = applet.size().height; this.xDelta = 5; this.yDelta = 5; nMode = 0; t = 0.0; } public void paint (Graphics g, Applet applet) { for (int x = 0 ; x < xWindow ; x += xDelta) { for (int y = 0 ; y < yWindow ; y += yDelta) { double a = (double) x / xWindow, b = (double) y / yWindow; double c = + a/2 + a * b/2 + t*1.73205 + a*b*Math.sin (2*Math.PI*t) + 0.05 * Math.sin (8 *Math.PI*a) * Math.sin (8 *Math.PI*b) * Math.sin (8.3*Math.PI*t) + 0.1 * Math.sin (4 *Math.PI*a) * Math.sin (4 *Math.PI*b) * Math.sin (5.1*Math.PI*t) + 0.15 * Math.sin (3 *Math.PI*a) * Math.sin (3 *Math.PI*b) * Math.sin (3.2*Math.PI*t); c = c - ((int) c); g.setColor (Color.getHSBColor ((float)c, 1.0f, 1.0f)); g.fillRect (x, y, xDelta, yDelta); } } } public void move () { if (nMode == 0) { // Reset Mode t = 0.0; nMode ++; return; } if (nMode == 1) { // Displaying Mode t += 0.01; if (t >= 1.0 && false) { t = 0.0; nMode ++; } return; } if (nMode == 2) { // Sleeping Mode t += 0.01; if (t >= 0.01) { t = 0.0; nMode = 0; } return; } } }