9
1 1 の図形を作るプログラムを作成せよ。但し、ウィンドウの大きさは 400×200 し、座標の関係は図 2 に示すものとする。 1 作成する図形 2 座標関係 2 for 文を用いて図 3 の様な図形を描くプログラムを作成せよ。但し、ウィンドウのサイズ 300×300、一つの円の直径は 60 ピクセル、左上の円の中心は(0, 0)とする。ウィンドウの サイズが変わると円の直径はそのままで円の数が変化するプログラムにすること(システム変数 width を使う)3 繰り返しのプログラム 原点(0,0) (80,0) (180,0) (260,0) (380,0) (280,0) (0,160)

原点(0,0) (280,0)dohi/computer...float[] x_speed=new float[10]; また、x, y, speed の初期値は問20 の例と同じくsetup 関数の中で乱数によって決めることと

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • 問 1 図 1 の図形を作るプログラムを作成せよ。但し、ウィンドウの大きさは 400×200 と

    し、座標の関係は図 2 に示すものとする。

    図 1 作成する図形

    図 2 座標関係

    問 2 for 文を用いて図 3 の様な図形を描くプログラムを作成せよ。但し、ウィンドウのサイズ

    は 300×300、一つの円の直径は 60 ピクセル、左上の円の中心は(0, 0)とする。ウィンドウの

    サイズが変わると円の直径はそのままで円の数が変化するプログラムにすること(システム変数

    width を使う)。

    図 3 繰り返しのプログラム

    原点(0,0)

    (80,0) (180,0) (260,0) (380,0)

    (280,0)

    (0,160)

  • 問 3 for 文を用いて図 3 の様な図形を描くプログラムを作成せよ。40 個の円が繰り返し描か

    れている。ウィンドウのサイズは 300×300、背景は黒とする。左下の円の中心座標は(30,

    270)で直径 50 ピクセルである。さらに円の中心座標は縦横ともに 3 ピクセルずつ変化し、円

    の直径も 3 ピクセルずつ大きくなるとする。

    図 4 繰り返しのプログラム 2

    問 4 for 文を用いて図 5 の様な図形を描くプログラムを作成せよ。問 3 を参考にすること。

    図 5 繰り返しのプログラム 2

    【2 重ループ】

    問 5 for 文を用いて図 6 の様な図形を描くプログラムを作成せよ。問 2 を参考にすること

    図 6 2 重ループのプログラム。

  • 問 6 for 文を用いて図 7 の様な図形を作成するプログラムを作成せよ。但し、ウィンドウのサ

    イズは 400×400、円の直径は 10、円の中心間の距離は 20 ピクセルとする。

    図 7 2 重ループを用いた図形

    【setup()と draw()を用いたプログラム】

    問 7 マウスの現在の座標を格納するシステム変数 mouseX, mouseY を用いてマウスの位置に

    直径 20 の円を描くプログラムを作成せよ。但し、ウィンドウのサイズは 400×400 で背景色は

    黒、円は白く塗りつぶすものとする。

    図 8 マウス追従

  • 問 8 (10, 300)と(400,300)を結ぶ直線上の点(10 ピクセル間隔)からマウスの位置に線を引

    くプログラムを作成せよ。イメージを図 9 に示す。但し、但し、ウィンドウのサイズは 400×

    400 で背景色は黒、直線の色は白とする。線の軌跡は残らないようにする。

    図 9 直線上からマウスの位置に線をひく。

    問 9 マウスのどちらかのボタンが押されている時に、ウィンドウの中心に直径 100 の円を描

    き、右クリックの時には赤く塗りつぶすプログラムを作成せよ。ウィンドウの大きさは 100×

    100 とする。

    問 10 大きさ 30 の円が何かキーが押されたら移動し、押されていない場合には静止し、端ま

    で来たら向きを変えるというプログラムが途中までできている。これを完成させよ。ウィンド

    ウのサイズは 400×400。

    float x=10.0, speed=5.0;

    void setup(){

    size(400,400);

    fill(255,0,0);

    background(255);

    }

    void draw(){

    background(128);

    if(keyPressed == true){

    x+=??

  • 【座標軸の移動、回転、伸縮】 (translate, rotate, scale)

    問 11 図 11 の図形を描くプログラムを途中まで作った(図 12)。このプログラムを完成させ

    よ。

    図 11 rotate を使った図形

    問 12 図 13 の図形を描くプログラムを作成せよ。なお、この図形は赤の正方形(80×80)を

    4 つ少しずつ回転して重ねて描画すること。ウィンドウの大きさは 100×100、正方形の塗りつ

    ぶしは fill(255, 0, 0, 100); とすること。

    図 13 rotate を使った図形その 2

    問 13 lunar.jpg と capsule.jpg を用いて、何かキーを押している時は右側の図の様に表示、押

    していないときは左側の図の様に表示するプログラムを作成せよ。ウィンドウのサイズは

    480×300、文字の表示は大きさが 36、文字の左下の座標が(20,290)とする. 画像の登録を忘

    れずに。

    size(200,200);

    rectMode(CENTER);

    background(0);

    noStroke();

    fill(255,0,0);

    translate(100,100);

    for(int i=0;i

  • 図 14 キーを押していないときの画像(左)と押している時の画像(右)

    問 14 random 関数を用いて 100 個の円を色、大きさ、位置を乱数で決めて描くプログラムを

    作成せよ。大きさの最大値は 50、ウィンドウの大きさは 300×300、背景は白とする。

    図 15 ランダムで描く

    問 15 直径 50 ピクセルの円と円周に交差する長さ 10 の水平線が画面の左から右に移動して消

    えるアニメーションを表示するプログラムを作成せよ。ウィンドウの大きさは 400×200、背景

    の色は明るさ 128 のグレーとすること。x 座標の初期値は-25 ピクセル、1 フレームあたりの移

    動は 1 ピクセル、フレームレートは 30 フレーム/s とする。

    図 16 アニメーション 1

    問 16 問 14 で右端に円と直線が消えたら、左端から現れるように改造せよ。

    問 17 問 14 で右端に円と直線が消えたら(x>width+25)、すぐに右端から直線の位置が反対側

    になって逆方向に向かい、左端で消える(x

  • 図 17 アニメーション 2

    問 18 問 12 の図形を座標(x, y)に描く関数を作成せよ。その関数の定義は、

    void igaiga(foat x, float y){

    pushMatrix();

    popMatrix();

    }

    とすること。また、以下のプログラムを使ってその動作を確認する事。

    void setup(){

    size(400,400);

    rectMode(CENTER);

    background(0);

    noStroke();

    fill(255,0,0,100);

    frameRate(1);

    }

    void draw(){

    float x,y;

    x=random(width);

    y=random(height);

    igaiga(x,y);

    }

    問 19 問 18 で作った関数を拡張して第三番目の float 型引数 phi だけ回転した図形を描く様に

    せよ。その関数の定義は、

    void igaiga(foat x, float y, float phi2){

    pushMatrix();

    popMatrix();

    }

    とすること。なお、以下のプログラムを使って図形が回転していることを確認する事。

  • float phi=0;

    void setup(){

    size(200,200);

    rectMode(CENTER);

    noStroke();

    fill(255,0,0,100);

    frameRate(30);

    }

    void draw(){

    background(0);

    phi+=0.005;

    igaiga(100,100,phi);

    }

    問 20 問 19 の関数を使って 10 個の図形がウィンドウ内で回転するように見える様に draw 関

    数を作成せよ。なお、図形の位置(x, y)、回転角度 phi、回転スピード speed はグローバル変数

    の配列として次の様に定義する事。

    float[] x=new float[10], y=new float[10];

    float[] phi=new float[10], speed=new float[10];

    また、setup 関数は以下のものを用いる事。

    void setup(){

    size(400,400);

    rectMode(CENTER);

    noStroke();

    fill(255,0,0,100);

    frameRate(30);

    for(int i=0;i

  • また、x, y, speed の初期値は問 20 の例と同じく setup 関数の中で乱数によって決めることと

    し、x_speed の初期化はその for 文の中で x_speed[i]=speed[i]*100; とすること。よって、

    draw 関数の前までは、

    float[] x=new float[10], y=new float[10];

    float[] phi=new float[10], speed=new float[10];

    float[] x_speed=new float[10];

    void setup(){

    size(400,400);

    rectMode(CENTER);

    noStroke();

    fill(255,0,0,100);

    frameRate(30);

    for(int i=0;i