ドラゴンカーブを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ニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール(2025.01.23)
- 高周波・RFニュース 2025年1月22日 everythingRFマガジンにMarkiの宇宙向けミリ波部品の記事、NordicのRF52810を使った太陽電池で動き暗闇でも3週間持つアセットトトラッカー、KnowlessのMRIの技術解説記事、Broadcomの3.5Dパッケージング解説(2025.01.22)
- UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(3) 3D画面に補間(Interpolate) を行って表示する。リニア、3次スプライン、有理関数などいろいろ使える。(2025.01.23)
コメント