Colored Dragon(2)



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