ドラゴンカーブをExcelで書いてみる。
C言語による最新アルゴリズム事典に載っていた例をExcel VBAで書きなおしてみよう。最終的にできたのはこんな感じ。
説明は:「紙テープを同じ向きに何回も折り曲げ、折り目が直角になるように開いてできる曲線」だそうです。
プログラムはこちら。
Option Explicit
Dim jj As Integer
Sub ボタン1_Click()
Dim order As Integer
Dim k As Integer, i As Integer, p As Integer, q As Integer, dx As Integer, dy As Integer
Dim dx1 As Integer, dy1 As Integer
Dim fold(5000) As Integer
order = 10
jj = 1
Call move(200, 140)
dx = 0
dy = 2
Call draw_rel(3 * dx, 3 * dy)
p = 0
For k = 1 To order
fold(p) = 1
q = 2 * p
For i = p To q
If fold(q - i) = 0 Then
fold(i) = 1
dx1 = -dy
dy1 = dx
Else
fold(i) = 0
dx1 = dy
dy1 = -dx
End If
Call draw_rel(dx + dx1, dy + dy1)
Call draw_rel(3 * dx1, 3 * dy1)
dx = dx1
dy = dy1
Next i
p = q + 1
Next k
End Sub
Function draw_rel(x As Double, y As Double)
Dim x1 As Double, y1 As Double
x1 = Worksheets("Sheet1").Cells(jj - 1, 3)
y1 = Worksheets("Sheet1").Cells(jj - 1, 4)
Worksheets("Sheet1").Cells(jj, 3) = x + x1
Worksheets("Sheet1").Cells(jj, 4) = y + y1
jj = jj + 1
End Function
Function move(x As Double, y As Double)
Worksheets("Sheet1").Cells(jj, 3) = x
Worksheets("Sheet1").Cells(jj, 4) = y
jj = jj + 1
End Function
« 「乱鴉の島」を読んだ。 | トップページ | 「トシバレール」を買った。 »
「学問・資格」カテゴリの記事
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2021年2月16日 IEEE Microwave Magazineの特集はオールデジタルのRFID、Microwave JournalはEバンド ミリ波通信に衛星や気球を使う話、アメリカの半導体企業がバイデンに投資を迫る、(2021.02.17)
- カオスを生じる電気回路、Chua’s circuitをLTspiceで回路シミュレーションしてみる。(2021.02.19)
- Labyrinth Chaos(迷宮カオス)を生むThomas-Rössler方程式のパラメータbを色々変えて、Python+Scipyでルンゲクッタ8次のDOP853(Dormand&Prince)を使って計算してGIFアニメ(2021.02.16)
- フィッツヒュー・南雲 (FitzHugh-Nagumo) 方程式をPython+Scipyでルンゲクッタ8次のDOP853(Dormand Prince)で計算。(2021.02.23)
- 「水晶振動子の等価回路計算」をカシオの高精度計算サイトkeisan.casio.jpの自作式としてUP! インピーダンスの大きさと位相がグラフ化できる。(2021.02.12)
コメント