Rotation Object Class で図形を描く

二次元座標を回転する Rotation Object Class を使って図形を描きます。
独立した Object Class の作成と Main() に組み込む方法を説明します。

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

プログラムの作成

  1. メモ帳などでタイプして Rotation.java の名前で保存して下さい。
    Rotation.java は二次元座標を回転する独立した Object Class です。
    javac でコンパイルして Rotation.class を作成して下さい。
    //★ 二次元座標回転 Object 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. Rotation Class を使って図形を描く Main() プログラムです。
    先にコンパイルした Rotation.class と組み合わせて図形を描きます。
    //★ Rotation Class を使って図形を描く    前田 稔
    import java.awt.*;
    
    public class DrawMain extends Frame
    {   public Color  color1,color2;
    
        // Main
        public static void main(String args[])
        {   new DrawMain();
        }
    
        // Constructor
        public DrawMain()
        {   super("Dwaw Main");
            color1 = new Color(255,0,0);
            color2 = new Color(0,255,0);
            setSize(500,300);
            setVisible(true);
        }
    
        // 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<7; i++)
            {   rotation.Rot(360.0/7.0*3.0,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
    
            g.setColor(color2);
            rotation.cx= 350;
            rotation.cy= 160;
            ox= 350;
            oy= 60;
            for(i=0; i<8; i++)
            {   rotation.Rot(360.0*3.0/8.0,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
        }
    }
    
  3. DrawMain.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(360.0/7.0*3.0,ox,oy) で ox,oy を回転した座標を 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<7; i++)
            {   rotation.Rot(360.0/7.0*3.0,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
    
            g.setColor(color2);
            rotation.cx= 350;
            rotation.cy= 160;
            ox= 350;
            oy= 60;
            for(i=0; i<8; i++)
            {   rotation.Rot(360.0*3.0/8.0,ox,oy);
                g.drawLine(ox,oy,rotation.x,rotation.y);
                ox= rotation.x;
                oy= rotation.y;
            }
        }
        
  3. 回転座標の説明は Windows Guid を参照して下さい。

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