public class tragon extends Applet{ Affine f1,f2,f3; static final coordinate origin= new coordinate(); public void init(){ setBackground(Color.white); f1=new Affine(); f1.rotate(Math.PI / 6); f1.scale(1 / Math.sqrt(3)); f2=new Affine(); f2.shift(-1.0, 0.0); f2.rotate(Math.PI / 6); f2.scale(1 / Math.sqrt(3)); f2.shift(1.0, 0.0); f3=new Affine(); f3.shift(-0.5, -Math.sqrt(3)/2); f3.rotate(Math.PI / 6); f3.scale(1 / Math.sqrt(3)); f3.shift(0.5, Math.sqrt(3)/2); } public void paint(Graphics g){ Affine t=new Affine(); Color c = new Color(0,0,0); trans(1,0,0,0,t,g); } public void trans(int n, float red, float green, float blue, Affine t, Graphics g){ if (n==10) { int w[]; w= new int[2]; coordinate z = new coordinate(); z.transformed(origin,t); z.map(w); Color c=new Color(red,green,blue); g.setColor(c); g.drawLine(w[0],w[1],w[0],w[1]); } else { Affine m1= new Affine(); m1.mult(f1); m1.mult(t); float red1 = red +(float) Math.pow(2,-n); trans(n+1,red1,green,blue,m1,g); Affine m2= new Affine(); m2.mult(f2); m2.mult(t); float green1 = green +(float) Math.pow(2,-n); trans(n+1,red, green1,blue,m2,g); Affine m3= new Affine(); m3.mult(f3); m3.mult(t); float blue1 = blue +(float) Math.pow(2,-n); trans(n+1,red,green,blue1,m3,g); }; } }
Colorクラスのコンストラクタに Color(float,float,float)という形式があるのに目を付けて作成したプログラムです。floatに指定する数値は0から1までの範囲の数ですので,BASICのSET COLOR MIXと同じように使えることになります。
Javaに関する情報は, 日本サン JAVAガイド