Public Class Form1 Public SC As Double, XST As Double, YST As Double, DT As Double Public Function Comp(A0 As Double, B0 As Double, C As Double, D As Double) As Integer ' 収束・発散の計算 Dim A As Double, B As Double, AA As Double Dim BB As Double, DA As Double, DB As Double A = A0 : B = B0 : Comp = 100 For i = 0 To 100 AA = A : BB = B : Comp = i A = AA * AA - BB * BB + C : B = 2 * AA * BB + D If A * A + B * B >= 4 Then Exit Function '発散 DA = A - AA : DB = B - BB If DA * DA + DB * DB < 0.001 Then Exit Function '収束 Next End Function Private Sub setScale() ' 描画スケール定義 Dim XED As Double XST = Val(TextBox3.Text) : XED = Val(TextBox4.Text) YST = Val(TextBox5.Text) SC = 200 / (XED - XST) : DT = 1.0 / SC End Sub Private Sub Draw(XX As Single, YY As Single, N As Integer) ' 色設定を変更してみよう Dim g As Graphics = PictureBox1.CreateGraphics() Dim CH As Integer, CC As Color, X As Single, Y As Single X = (XX - XST) * SC : Y = 100 - (YY - YST) * SC / 2 CH = (N Mod 5) * 51 : If CH > 255 Then CH = 255 CC = Color.FromArgb(CH, CH, CH) Dim b As New SolidBrush(CC) g.FillRectangle(b, X, Y, X + 1, Y + 1) End Sub Private Sub Mandel() ' マンデルブロ集合:標準的な初期値は(0,0)とする Dim A As Double, B As Double, C As Double, D As Double Dim i As Integer, j As Integer, N As Integer, LP As Integer Dim g As Graphics = PictureBox1.CreateGraphics() A = Val(TextBox1.Text) : B = Val(TextBox2.Text) : DT = Val(TextBox3.Text) setScale() : g.Clear(Color.Black) : C = XST - DT For i = 0 To 200 : C = C + DT : D = YST - DT For j = 0 To 200 : D = D + DT N = Comp(A, B, C, D) : Draw(C, D, N) Next Next End Sub Private Sub Julia() ' 充填ジュリア集合 Dim C As Double, D As Double, i As Integer, j As Integer Dim N As Integer, A As Double, B As Double Dim g As Graphics = PictureBox1.CreateGraphics() C = Val(TextBox1.Text) : D = Val(TextBox2.Text) setScale() : g.Clear(Color.Black) : A = XST - DT For i = 0 To 200 : A = A + DT : B = YST - DT For j = 0 To 200 : B = B + DT N = Comp(A, B, C, D) : Draw(A, B, N) Next Next End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Mandel() End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Julia() End Sub End Class