フラクタル 1 ( ジュリア集合 ) PictureBox 1 TextBox 1 TextBox 2 解説 : ジュリア集合 ( 自己平方フラクタル ) TextBox 3 複素平面 (= PictureBox1 ) 上の点 ( に対して, x, y) 初期値 ( 複素数 ) z x iy を決める. 0 k 1 z k 1 f ( z) z 2 k a 写像 ( 複素関数 ) (a : 複素定数 ) によって得られる z を新たな z k z ) として, 反復計算を行 ( k 1 う. そして, z 2 となったときの k の値によって色を決めて, k 点を複素平面 (= PictureBox1 ) 上にプロットする. TextBox 4 TextBox 5 TextBox 6 単純な式 ( 法則 ) から, 興味深い複雑な模様が得られます. Button 1 Button 2 入力パラメータの例 ( 小さな数値の変化で模様が大きく変化します. Ar や Ai の数値を少しずつ変化させて描画する. ) Re_min Re_max Im_min Im_max Ar Ai パラメータ 1-0.5 0.5-0.5 0.5-1.2-0.155 パラメータ 2-0.5 0.5-0.5 0.5-0.2-0.675 パラメータ 3-0.5 0.5-0.5 0.5-0.1-0.845 パラメータ 4-1 1-1 1-0.6945 0.297 パラメータ 5-1.3 1.3-1.3 1.3-0.75 0.2 パラメータ 6-0.25 0.3 0.4 0.95-0.75 0.2 パラメータ 7 0.3 0.7-0.2 0.2 0.26 0 パラメータ 8 0.3 0.7-0.35 0.05 0.2595 0.0025 プログラムコード Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim xmin, xmax, ymin, ymax As Double Dim ar, ai As Double Dim dx, dy As Double Dim zr, zi As Double Dim wr, wi As Double Dim i, j, k As Integer Dim g As Graphics = PictureBox1.CreateGraphics() Dim w As Integer = PictureBox1.ClientRectangle.Width Dim h As Integer = PictureBox1.ClientRectangle.Height
' フラクタルを描く範囲と定数 xmin = Val(TextBox1.Text) xmax = Val(TextBox2.Text) ymin = Val(TextBox3.Text) ymax = Val(TextBox4.Text) ar = Val(TextBox5.Text) ai = Val(TextBox6.Text) dx = (xmax - xmin) / w dy = (ymax - ymin) / h For i = 0 To h - 1 For j = 0 To w - 1 zr = xmin + j * dx zi = ymin + i * dy For k = 0 To 255 wr = zr * zr - zi * zi + ar wi = 2 * zr * zi + ai If (wr * wr + wi * wi > 4) Then Exit For zr = wr : zi = wi ' 収束回数 k によって色を変えて点をプロット g.drawrectangle(new Pen(ColorTranslator.FromOle(RGB(k, k, 0))), j, i, 1, 1) 描画例 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 初期値 TextBox1.Text = "-0.5" TextBox2.Text = "0.5" TextBox3.Text = "-0.5" TextBox4.Text = "0.5" TextBox5.Text = "-1.2" TextBox6.Text = "-0.155" Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Class 以下の Web ページから VB プログラムをダウンロード URL : http://www.me.aoyama.ac.jp/~watanabe/ のボタン フラクタルCG からダウンロード. ( 繋がらない場合は, http://sc2k8w301.cc.ag.aoyama.ac.jp/user/t90162/ からダウンロード )
フラクタル 2 ( マンデルブロート集合 ) PictureBox 1 TextBox 1 TextBox 2 TextBox 3 TextBox 4 Button 1 Button 2 カラー版 入力パラメータの例 Re_min Re_max Im_min Im_max パラメータ 1-1.255-1.253 0.0237 0.0257 パラメータ 2-1.255-1.2545 0.0252 0.0257 パラメータ 3-0.973-0.968-0.253-0.248 パラメータ 4-2.2 0.5-1.35 1.35 プログラムコード Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim xmin, xmax, ymin, ymax As Double Dim cr, ci As Double Dim dx, dy As Double Dim zr, zi As Double Dim wr, wi As Double Dim i, j, k As Integer Dim g As Graphics = PictureBox1.CreateGraphics() Dim w As Integer = PictureBox1.ClientRectangle.Width Dim h As Integer = PictureBox1.ClientRectangle.Height ' フラクタルを描く範囲と定数 xmin = Val(TextBox1.Text) xmax = Val(TextBox2.Text) ymin = Val(TextBox3.Text)
ymax = Val(TextBox4.Text) dx = (xmax - xmin) / w dy = (ymax - ymin) / h For i = 0 To h - 1 For j = 0 To w - 1 cr = xmin + j * dx ci = ymin + i * dy zr = 0 zi = 0 For k = 0 To 255 wr = zr * zr - zi * zi + cr wi = 2 * zr * zi + ci If (wr * wr + wi * wi > 4) Then Exit For zr = wr : zi = wi ' 収束回数 k によって色を変えて点をプロット g.drawrectangle(new Pen(ColorTranslator.FromOle(RGB(0, k, k))), j, i, 1, 1) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 初期値 TextBox1.Text = "-1.255" TextBox2.Text = "-1.253" TextBox3.Text = "0.0237" TextBox4.Text = "0.0257" Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Class 以下の Web ページから VB プログラムをダウンロード URL : http://www.me.aoyama.ac.jp/~watanabe/ のボタン フラクタルCG からダウンロード. ( 繋がらない場合は, http://sc2k8w301.cc.ag.aoyama.ac.jp/user/t90162/ からダウンロード )
フラクタル CG