ドラゴンカーブを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ニュース 2026年1月16日 Microwave JournalにDirect RF特集記事、NXPが5G RF事業を縮小、RCRTechのテスト・計測についてのレポート、MediaTekがDimensity 9500sと8000を発表、TDKの車載チップバリスタ、I-PEXのロック付きRF同軸コネクタ(2026.01.16)
- 高周波・RFニュース 2026年1月15日 IEEE Microwave MagazineはCMOS LNAレビューなど、Journal of Microwavesはアボカドのマイクロ波イメージングなど、LitePointが3つのワイヤレストレンドを調査、Ericsson ConsumerLabのCSP差別化レポート、Motorola Moto G Power 2026 分解(2026.01.15)



コメント