import java.applet.*; import java.awt.*; import java.awt.event.*; public class Sym extends Applet implements MouseMotionListener { int r[][]=new int[200][6],m[]=new int[6],W; public void init(){ W=getSize().width; addMouseMotionListener(this); } public void mouseDragged(MouseEvent e){ Point p=e.getPoint(); int[]t=r[199]; t[0]=p.x;t[1]=p.y; System.arraycopy(r,0,r,1,200-1); r[0]=t; } public void mouseMoved(MouseEvent e){} public void update (Graphics h) {paint(h);} public void paint(Graphics g){ Image I=createImage(W,W); Graphics G=I.getGraphics(); for(int i=200;--i>=0;) { int[]l=r[i]; G.setColor(new Color(l[3],l[4],l[5])); int x=l[0],y=l[1],D=W/8,R=D/2; G.fillOval(x-R,y-R,D,D); G.fillOval(W-x-R,W-y-R,D,D); // mirror symmetry G.fillOval(W-x-R,y-R,D,D); G.fillOval(x-R,W-y-R,D,D); // If you prefer rotational symmetry, disable // the previous two lines and use these instead: // G.fillOval(y-R,W-x-R,D,D); // G.fillOval(W-y-R,x-R,D,D); } g.drawImage(I,0,0,this); for (int i=200;--i>0;) System.arraycopy(r[i-1],3,r[i],3,3); int l[]=r[0],t; for (int i=3;i<6;++i){ t=l[i]; double f=(Math.random()*256)-t; int d=(m[i]+=(f>0)?1:-1); t+=(d>0?5:-5); l[i]=(t<0)?0:(t>255)?255:t; } repaint(); } }