iron2

mandelbort

2017/12/15 (Fri) 20:35:27

ATOM Z3795 SSE2有り
windows api programming
Community 2017 c/c++
1366X768 dotのフル画面の
クライアントウインドウを
トリミングしました。
10数秒ぐらいで描画
時計がないので正確な時間は不明

ご参考に

Pass :
iron2

Re:mandelbort (学習中)

2017/12/17 (Sun) 14:06:13

皆様、iron2です。
mandelbortビュワーまでいけたらいいなと学習をはじめました。
複素数をつかって正直に計算すると飛んでもなく時間がかかります。
gunplotに食わせてプロットしましたがデータサイズが何十メガバイト
結構我慢でした。
無限に発散する閾値がポイントのようですが、勉強にはなりますが
電卓にそのままは無理ですね。real,imajinaleを配列に置き換え
てやればできそうですが、やるだけ無駄ですね。
すでにCBasicサンプルのやり方がモアベターであるとわかっただけでも
よかったと思います。

java をVBに落としました。
Option Explicit On

Imports System
Imports System.Math
Imports System.Numerics

Module Module1
Private Function mandelbortCount(ByVal c As Complex) As Integer
Dim z As Complex = Complex.Zero
Dim i As Integer = 0

For i = 0 To 100
z = Complex.Add(Complex.Multiply(z, z), c)
If Complex.Abs(z) > 10 Then
Exit For
End If
Next
Return i

End Function

Private Function mandelbort(ByVal c As Complex) As Boolean
Dim z As Complex = Complex.Zero
Dim i As Integer

For i = 0 To 1000
z = Complex.Add(Complex.Multiply(z, z), c)
If Complex.Abs(z) > 10 Then
Return True
End If
Next
Return False

End Function

Sub Main()
Dim diff As Double = 0.0025 'data.dat 0.005 data1.dat 0.001->55MB data2.dat 0.025->37MB
Dim i, j, m, n As Integer
Dim re, im As Double
Dim value As Double

m = CInt(3.0 / diff)
n = CInt(2.0 / diff)
're [-2:1],im[-1:1]
re = -2.0
im = -1.0
For i = 0 To m
For j = 0 To n
'data.dat & data1.dat用
'diverge = mandelbort(New Complex(re, im))
'If diverge = False Then
' Console.Write(re.ToString + vbTab + im.ToString + vbCrLf)
'End If
value = mandelbortCount(New Complex(re, im))
If value > 0 Then
Console.Write(re.ToString + vbTab + im.ToString + vbTab + value.ToString + vbCrLf)
End If
im += diff
Next
Console.Write(vbCrLf)
im = -1.0
re += diff
Next
End Sub

End Module



Pass :
iron2

Re:mandelbort (近づいてきた)

2017/12/17 (Sun) 18:32:20

皆様
iron2です。

掲示板を汚しており、すみません。

sentaro様のmandel(実数版)のパラメータをいじってたところ
かなりイメージに近づきました。
かなり綺麗です。

反復回数を10->100
RGB(.25xg,0.5xg,0.75*g)
fx-cg20 250MHz リフレ5
308秒 仕上げでこのぐらいのタイムなら悪くないような
気がします。

これからもよろしくお願いします。
Pass :
やす(Krtyski)

Re: mandelbort

2017/12/17 (Sun) 21:42:16

iron2様

sentaro様による移植版の頭に、

Rad

を追加し、100回繰り返しに変更し、コメント欄で教えて頂いた RGB(2xg,5xg,8xg) に変更したところ、綺麗な描画が得られました。

電卓でこんな綺麗なマンデルブロの出力が出来るとなんだか嬉しいです。

ありがとうございます。


Pass :
iron2

Re:mandelbort 再現おめでとうございます

2017/12/17 (Sun) 21:55:13
管理人様

再現できてよかったです。
RGB(g,2xg,4xg)もいい感じですよ
無秩序に色を振るとたのしいですが
方向性が見えないので、工夫の為所かも
しれません。
発散点の強度で色を絞ると関連性が
見えてくるかもしれません。
調査を継続していきます。

つたない説明で再現くださってありがとうございます。

Pass :
iron2

Re:mandelbort (拡大)

2017/12/19 (Tue) 21:13:54

こんばんわ~

お騒がせさんのiron2です。

Windows API版のそっくりそのままも描けるようになった
のですが、その2歩ということで拡大してみました。
ものすごく時間がかかります。
もうすこし検討してからコードの公開します。
g3mはここにはっても右クリックでとれるのかしら?
プログを持てない人なので(もろもろの事情で)
最悪管理人様にファンレターがてらにメールでおくるしか
ないかな?

これらもよろしくお願いします
Pass :
やす(Krtyski)

Re: mandelbort

2017/12/19 (Tue) 21:45:56
iron2様

凄い!!

この境界あたりの描画は、かなりのものですね!

自分の電卓でも再現したいと本気で思う美しさです。

ところで、ここは指定フォーマットと指定サイズの画像しかダメなんです。

なので、ラブレター待ってます(´。`)

Pass :
iron2

Re: mandelbort

2017/12/20 (Wed) 08:33:40
iron2です

sentaro様よりテキストを張り付ける方法
を教えていただいので、管理人様へファンレターは
先になりそうですが
ZIPファイルなどの容量的に問題になった場合は
ご面倒をかけるかもしれません。
その時はご容赦ください。

これからもよろしくお願いします。
Pass :
iron2

確認用の1/4画像

2017/12/24 (Sun) 18:50:22

iron2です。

確認用の1/4画像です。

cg20の250MHZで41秒ほど

十分確認用の綺麗さはたもっています
Pass :
iron2

マンデブロートビュワーを作りたい(1)

2017/12/28 (Thu) 13:12:38

iron2です。

プチまとめができました。

御精査お願いします。

よろしくお願いします。
Pass :
iron2

マンデルブロートビュワーを作りたい(2)

2017/12/29 (Fri) 13:13:32

iron2です。

マンデルブロートビュワーを作りたいメモ(2)
が出来ました。

御精査お願いします。

よろしくお願いします。
Pass :
iron2

Syscall実数版拡大

2017/12/29 (Fri) 19:58:01

iron2です

SysCall実数拡大版を貼ります。

確認よろしくお願いします。
Pass :
ツル

Re: mandelbort

2017/12/29 (Fri) 20:36:27
iron2様

のめり込む対象があって、とことん理解しようとされているお姿を羨ましく思います。ツルはマンデルブロートはチンプンカンプンなのですが、そもそも、この全体の形状には人の作為的要素があるのですか? ないとすれば、自然界に類似の事象が見られるということになるのですよね?
どこまでが人の手によって作られたもので、どのあたりが不可解な部分なのかの境界が知りたいと思いました。今分かっている範囲でご説明頂けると嬉しいです。
Pass :
iron2

Re: mandelbort どこが人為的なのか?

2017/12/29 (Fri) 21:32:30
iron2です。

まだまだ勉強中でちゃんと説明できるか不安ですが

私のマンデルブロートビュワーを作りたいメモ(1)
にある定義の式で丸い瓢箪のような図形がマンデルブロ集合
になります。また、その丸い瓢箪に小さな瓢箪がほぼ相似形
で外接しています。
これは数式で勝手にそうなります。
また、拡大すると同じような相似形の瓢箪(マンデルブロ集合)
が現れます。
この部分が数式のマジックで図形で見ないと確認できない所です。

その中でメモの中であるように発散の回数、数式のリミット値
を変更すると同じ図形でも丸い瓢箪の形や色が変化します。
この辺が人の好みの部分で、人為的な味付けと思っています。

そしてコンピュータ(PC,電卓)は有限の資源なのでフラクタルの
ような無限の再帰(同じ事を繰り返す事)はどこかで回数や数値
判定の上限を決めないといけません。
このあたりも人の関与(判断)が必要な所と思っています。

こんな感じの説明でいかがでしょうか?

Pass :
iron2

SysCall実数版1億倍

2017/12/30 (Sat) 10:22:12

iron2です。

1倍のマンデルブロ集合の先端部分の一億倍です。
SysCall実数版fx-cg20 250Mhz ref 5 PC接続で
約35分です。(まだ先に進めますが)  
倍率を上げていくと微小拡大部分がNが小さい状態に
近くなるためそのためNも大きくしないと相似に
近い画像を得る事が難しく更に実行時間が伸びた
と思います。
(#DBLの限界というより時間的に限界ぽい)
sentaro様のご指摘にあったようにアルゴリズム
自体の再考が必要なのかもです。
また、電卓で楽しめる範囲で倍率を制限すれば
良いのでそのあたりを次のメモ(3)にまとめて
行こうと思います。
Pass :
iron2

マンデルブロートビュワーを作りたいメモ(3)

2017/12/31 (Sun) 12:03:29

iron2です。

マンデルブロートビュワーを作りたいメモ(3)が出来ました。

御精査お願いします。

よろしくお願いします。
Pass :
iron2

旧整数版X100倍

2018/01/02 (Tue) 15:41:00

iron2です。

旧整数版で試行錯誤中ですがX100でドット化
してないようなのでまだ桁あふれ、桁おちはないようです
Pass :
iron2

デバッグ進まずこんなん作った

2018/01/03 (Wed) 20:55:07

iron2です。

整数版のバグが取れず、USBパワーでバッテリーはもつけど
時間ばかりすぎるので、VBでこんなんつくった。
Pass :
iron2

マンデルブロートビュワーを作りたいメモ(4)

2018/01/07 (Sun) 00:11:11

iron2です。

マンデルブロートビュワーを作りたいメモ(4)が
いつもの半分ですができました。
なんとか整数版SysCall(10002 の使い方が
わかりました。
sentaro様ありがとうございました。

多分、これで倍率は合わせることはできると思いますが
インターフェイスとの実装の簡便さと精度を考えると
実数版で進めるのがいい感じと思います。

確認よろしくお願いします。
Pass :
iron2

Screen Reciveでの疑問

2018/01/08 (Mon) 14:16:45

iron2です。

拡大コードの位置コード作成するにあたり、すこしインターフェース
も作ることになったのですが、画面の確認で電卓の画面をScreen Recive
に転送してたところ、pngの説明のような現象になりました。
後のコードをコメント化すれば現在も問題なく検討できるのですが
何か間違った事をしているのか不安です。

それはそういう者だと言っていただくと安心します。
また、こういう方法があると教えていただくと勉強になります。

よろしくお願いします。
Pass :
iron2

mandelbrot viwer フロー

2018/01/10 (Wed) 21:19:09

iron2です。

ver1のざっくりしたフローを作りました。

自分用なので皆様に通用するか不明ですが
だいたい流れはあってると思います。
Pass :
iron2

WinフリーEditerのColorマクロCBaic風

2018/01/20 (Sat) 12:07:17

iron2です。

モチベが回復するようにWinフリーEditerのColorマクロを
CBasic風にしてみました。

併せてタブ幅も2で半角に変換しない
にすると、だいぶ見渡しが良くなりました。

この画面を横に電卓デバッグするとだいぶ気分が晴れます。
ポチポチと修正します。
Pass :
Name
Mail
URL
icon
99
Pass
*編集・削除用(任意:英数字4~8文字)
Subject
絵文字
画像添付
[ e:349][ e:442][ e:446][ e:454][ e:456][ e:786][ e:451][ s:472D][ s:472E][ s:4731]
[ e:731][ e:732][ s:4740][ s:4741][ e:51][ e:265][ e:266][ e:262][ s:4F4F][ s:453D]
[ s:4F34][ s:4532][ s:4F32][ e:45][ e:219][ s:4F62][ s:4540][ s:4763][ s:4766][ s:4767]
[ s:476A][ s:4769][ s:476B][ s:4768] [ s:476C][ s:476D][ s:4538][ s:504E][ s:473E][ s:473D]
[ s:4F2D][ s:512B][ s:5151][ s:4526][ s:4528][ s:452B][ s:4775][ s:453C][ s:453A][ s:453B]