基礎課題7-1を拡張して、今度は「描画」ボタンを押したら Image コンポーネント上に (10, 20) の場所から右に長さ30の赤い横線を描くプログラムを作ってください。
(10,20), (11,20), (12,20), …, (40,20) の点 (ピクセル) の色を順に赤色に指定すれば良いことになりますね。for 文を使えば簡単にできるはずです。
「描画」ボタンを押したら次のような黒い (直角) 三角形を描くプログラムを作ってください。
(1) 底辺 (横の直線) と垂辺 (縦の直線) は【基礎課題 7-2】と同様にして描けるはずです。
(2) 斜辺上の (x, y) 座標については (60-y) / (x - 30) = 3/4 という関係がある事を利用します。この関係により、例えば x の値を 30 から 30+40 まで順に増やして行き、各々の x に対する y を求めれば良いのです。ただし、一般に y の値は実数になってしまいます。これを最も近い整数にする必要がありますが、それには Round 関数を用いればよいのです。Round 関数の意味は次の通りです。Round(1.6) → 2 Round(1.4) → 1
今、ある点列 (X1, Y1), (X2, Y2), (X3, Y3), …, (Xn, Yn) を考えます。ここに、(Xn, Yn) が決まったときにその次の (Xn+1, Yn+1) は次の式で決まるものとします。 Xn+1=Yn−0.97*Xn + 5 / (1+Xn2) − 5, Yn+1=−0.995*Xn
最初の点を (X1, Y1) = (1,0) としてこの点列を順に表示させて行くと次のように鳥が羽を広げたような不思議な図形が現れます。このプログラムを作成してください。
ヒント
(1) 上の(Xn+1, Yn+1) は小さな数になるので見にくくなります。そこで実際には (6*Xn+1, 6*Yn+1) と6倍拡大して表示しています。
(2) 座標の原点は Image コンポーネントの中心となるようにしています。
(3) Image コンポーネントの Width および Height プロパティは 200 にしています。
(4) (Xn+1, Yn+1) が求まるたびにその点 (実際には6倍拡大した座標) のピクセルに色指定すれば良いのです。しかし (Xn+1, Yn+1) は実数なので最も近い整数に変換する必要があります。それには Round 関数を用います。