アスキーアート(数字と英小文字だけ)でマンデルブロ集合を描くとなぜか黒しか使ってないのに色が見える! (Excel VBAで計算)
このTweetみた。
Mathematics, computer programming.
— Cliff Pickover (@pickover) August 22, 2021
Mandelbrot Set in ASCII art.
An entire universe computed in 15 lines of code.
(I've magnified a portion, in the hopes you can see the characters of which the image is composed.) Full image and code, here: https://t.co/Yoo6E83dBN pic.twitter.com/CAoqtq4z2D
おお、これは昔、ラインプリンタでマンデルブロ集合(そのときは”*”のみ)を描いたのの拡張だな、、、
ということで早速やってみた。Pythonでもなんでもいいが、Excelをたまたま立ち上げていたのでExcel VBAで描いてみよう。
ソースはこちら。
Option Explicit
Option Base 0
Private Sub CommandButton1_Click()
Dim ix As Integer, iy As Integer, count As Integer, i As Integer
Dim size As Integer, limit As Integer
Dim letters(100) As String
Dim cx As Double, cy As Double
Dim x As Double, y As Double, x1 As Double, y1 As Double
Dim s As String
Application.ScreenUpdating = False '画面描画を停止
Application.Cursor = xlWait 'ウエイトカーソル
Application.EnableEvents = False 'イベントを抑止
Application.DisplayAlerts = False '確認メッセージを抑止
Application.Calculation = xlCalculationManual '計算を手動に
size = 400
limit = 1000
letters(0) = " "
For i = 1 To 9
letters(i) = Chr(48 + i)
Next i
For i = 10 To 10 + 26 - 1
letters(i) = Chr(87 + i)
Next i
letters(36) = "*"
For iy = 0 To size
s = ""
For ix = 0 To 3 * size
count = 0
cx = -2 + CDbl(ix) * 3.5 / CDbl(3 * size)
cy = 1.5 - CDbl(iy) * 3 / CDbl(size)
x = 0#
y = 0#
Do While (x * x + y * y) < 4 And count < limit
x1 = x
y1 = y
x = x1 ^ 2 - y1 ^ 2 + cx
y = 2# * x1 * y1 + cy
count = count + 1
Loop
If count >= limit Then
s = s + letters(0)
Else
If count >= 36 Then
s = s + letters(36)
Else
s = s + letters(count)
End If
End If
Next ix
Worksheets("mandel").Cells(iy + 1, 1) = s
Next iy
Application.StatusBar = False 'ステータスバーを消す
Application.Calculation = xlCalculationAutomatic '計算を自動に
Application.DisplayAlerts = True '確認メッセージを開始
Application.EnableEvents = True 'イベントを開始
Application.Cursor = xlDefault '標準カーソル
Application.ScreenUpdating = True '画面描画を開始
End Sub
やってみると?
確かに文字しかないのに、、、
あれ!色が見える!私だけ?
不思議!心理的な効果なのか、ディスプレイの色のにじみ的なものなのか、、、知ってる方がいたら教えてください。
« やよい軒で木須肉と鶏チリの定食を食す。 | トップページ | すき家でアボカドユッケサーモン丼(ご飯大盛)を食す。案外合ってる。 »
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
« やよい軒で木須肉と鶏チリの定食を食す。 | トップページ | すき家でアボカドユッケサーモン丼(ご飯大盛)を食す。案外合ってる。 »
コメント