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ガイド