座標の回転で星を描く

座標を回転する Class を定義して、5本の線で星を描きます。
基本的な Object Class の作成方法を説明しています。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして DrawStar.java の名前で保存して下さい。
    //★ 座標の回転で星形を描く    前田 稔
    import java.awt.*;
    
    public class DrawStar extends Frame
    {   public Color  color1;
    
        // Constructor
        public DrawStar()
        {   super("Rotation Line");
            color1 = new Color(255,0,0);
            setSize(300,300);
            setVisible(true);
        }
        // Main
        public static void main(String args[])
        {   new DrawStar();
        }
        // Paint Method
        public void paint(Graphics g)
        {   int i,ox,oy;
            super.paint(g);
            g.setColor(color1);
            Rotation rotation = new Rotation(150,160);
            ox= 150;
            oy= 60;
            for(i=0; i<5; i++)
            {   rotation.Rot(144,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
        }
    }
    
    // 二次元座標回転 Class
    class Rotation
    {   int cx,cy;          //回転軸の中心
        int x,y;            //回転後の座標
    
        // Constructor
        Rotation(int a, int b)
        {   cx = a;
            cy = b;
        }
    
        // 座標回転メソッド
        void Rot(double w, int xx, int yy)
        {   double px,py;
            px = xx-cx;
            py = yy-cy;
            x= (int)(px*Math.cos(w/180*3.14))-(int)(py*Math.sin(w/180*3.14))+cx;
            y= (int)(px*Math.sin(w/180*3.14))+(int)(py*Math.cos(w/180*3.14))+cy;
        }
    }
    
  2. DrawStar.java をコンパイルして class オブジェクトを実行して下さい。
    ページ先頭の画面が表示されたら完成です。
    プログラムの終了は DOS 画面でタイトルバーの「×」をクリックして下さい。
    「×」をクリックしても終了しない時は、DOS 画面で [Ctrl] キーを押しながら [C] をタイプして下さい。

プログラムの説明

  1. AWT(Abstract Windowing Tools)を使ったプログラムの基本的な説明は AWT を使って、色を設定して線を描く を参照して下さい。
  2. paint() は描画処理で呼び出されるメソッドです。
    super.paint(g) で Super Class の paint を呼び出して、画面を初期化します。
    g.setColor(color1) で描画色を設定します。
    new Rotation(150,160) で星マークの中心座標を指定して Rotation をインスタンス化します。
    ox,oy は drawLine() で星マークを描く開始座標です。
    rotation.Rot(144,ox,oy) で ox, oy を144度回転した座標を x, y に求めます。
    g.drawLine() で ox,oy から x, y に線を描画します。
    ox,oy に rotation.x, rotation.y の座標を設定して繰り返します。
        public void paint(Graphics g)
        {   int i,ox,oy;
            super.paint(g);
            g.setColor(color1);
            Rotation rotation = new Rotation(150,160);
            ox= 150;
            oy= 60;
            for(i=0; i<5; i++)
            {   rotation.Rot(144,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
        }
        
  3. 二次元座標を回転する Class です。
    Constructor では回転軸の中心座標を cx,cy に設定します。
    Rot() が座標を回転するメソッドです。
    回転角度(w)と座標(xx,yy)をパラメータで受け取ります。
    回転した座標を x, y に設定します。
    class Rotation
    {   int cx,cy;          //回転軸の中心
        int x,y;            //回転後の座標
    
        // Constructor
        Rotation(int a, int b)
        {   cx = a;
            cy = b;
        }
    
        // 座標回転メソッド
        void Rot(double w, int xx, int yy)
        {   double px,py;
            px = xx-cx;
            py = yy-cy;
            x= (int)(px*Math.cos(w/180*3.14))-(int)(py*Math.sin(w/180*3.14))+cx;
            y= (int)(px*Math.sin(w/180*3.14))+(int)(py*Math.cos(w/180*3.14))+cy;
        }
    }
    
  4. 回転座標の説明は Windows Guid を参照して下さい。

超初心者のプログラム入門(Java2)