問題タブ [fractals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - マンデルブロのズーミングの難しさ
この質問がどの分野に関連しているかはわかりませんが、試してみます。マンデルブロ集合を計算しようとしています。大きな違いは、出力が 3D モデルであることです。セットの計算は正確に行われますが、(2D 平面上にある) ax,y ポイントにズームしようとすると、期待どおりに機能しません。ここでの主な概念は、次のズーム ポイントを抽出することです。これにより、セットの新しい境界エッジを計算できるようになります。いつ
結果は未知の点にズームしています。計算に何か問題があると思います。私は次のことをやろうとしました:
編集:私はあなたが私に与えた例のいくつかを見直しましたが、私の状況に最も適した適切な答えはまだ見つかりません.
multithreading - 大規模なデータマトリックスをスレッドセーフに更新する:今では何百万ものミューテックスを使用していますか?
私はずっと前に書いたコードを修正していましたが、スレッドをより有効に活用するために(そして一般的にプログラミングをより有効に活用するために)書き直すことにしました。
ここにあります:https ://github.com/buddhabrot/buddhabrot/blob/master/basic.c :
ブッダブロをフラクタルにするアプリケーションです。この質問の範囲外の理由により、これを最適化するためにメモ化を使用することは困難です。基本的に、これをプロファイルすると、99%以上の時間が最終的に行われる最も内側のループに費やされます。
複数のスレッドがこのコードを実行します。インクリメントはスレッドセーフではないため、メモリのこの部分で特定のミューテックスロックを使用しました。したがって、buddhabrotメモリ内のアドレス可能な各場所には個別のミューテックスがあります。
さて、これはもちろん1つのロックを使用するよりも効率的です(これにより、すべてのスレッドが互いに待機するようになります)が、メモリ効率は低くなります。ミューテックスもいくつかのデータを取得しているようです。また、何百万ものミューテックスを使用したpthreadの実装における他の影響についても疑問に思っていますか?
私は今、考慮すべき他の2つの戦略があります。
マップ内の「領域」ごとに、密度の低いミューテックスロックのセットを使用します。したがって、たとえば、[col / 16] [row / 16]のロックは、スレッドが別のスレッドと同じ16ピクセルの領域にアクセスした場合にのみスレッドをロックします。ロックの密度は動的に調整できます。しかし、これをモデル化しているときに、カーネルによって実装される可能性のある既存の問題を解決していないのではないかと思っていました。また、速度を落とさずにこれを作成する方法を見つけることもできません。「ミューテックスのツリー」についても考えましたが、このループ内ではすべてが遅すぎます(コンパイラの背後にあるいくつかの数学演算の順序を最適化した後、プロセッサ時間を約30%長くすることができました) 。このためのトピックはありますか、「ミューテックス密度計画」に関する詳細情報をどのように探すのですか?
各スレッドのメモリをコピーして、その周りでミューテックスする必要がないようにします。しかし、これはさらにメモリ効率が悪くなります。それは、その影響を知らなくても、何百万ものミューテックスを持つという問題を解決します。
それで、他に何かありますか、私にもっと良いことがありますか?
opengl-es - Opengl ES 2.0、FBO、フラグメント シェーダー
ここに私のレンダリングループがあります:
- カスタム FBO をバインドする
- テクスチャをバインドします (以前は COLOR_ATTACHMENT0 として FBO に関連付けられていました)。
- フラクタル アルゴリズムに基づいてフラグメントの色を選択するカスタム フラグメント シェーダーを使用してレンダリングします。(フラグメントがアルゴリズムで使用されていない場合は、黒が割り当てられます)
- ウィンドウ提供のフレームバッファとレンダバッファを再バインドします。(iOS 5 では、これは [view bindDrawable] メソッドです。
- 画面を白くクリアします。
- ウィンドウ自体よりも大幅に小さいフレームに fbo テクスチャをレンダリングします。
期待される結果: フラクタルが小さいフレームに表示されるはずです。フレームの背景は黒にする必要があります。画面の残りの部分は白でなければなりません。
現在の結果: fbo で提供されたウィンドウとカスタム fbo/テクスチャにレンダリングしているかのように、画面全体がフラクタルによって占められています。
何が間違っているのか本当にわからないので、助けていただければ幸いです。
編集:
フラグメント シェーダー:
FBO の初期化:
レンダリング ループ:
これが役立つことを願っています。私が何をしているかについてさらに情報が必要な場合はお知らせください。
また、非常に奇妙なことが起こっていることに気付きました。
FBOをバインドした後、試してみます
...実際にクリアが行われるのは、ウィンドウが提供するフレームバッファです。
助けてくれてありがとう。
python - Python で複素数をプロットしますか?
数学フェア プロジェクトでは、Julia セット フラクタルを生成するプログラムを作成したいと考えています。これを行うには、複素数をグラフにプロットする必要があります。誰もこれを行う方法を知っていますか? 通常の座標ではなく、複素数を使用していることを思い出してください。ありがとう!
python - キャンバス上の点を実平面上の点にマッピングする関数の書き方
Python で単純なマンデルブロ ビジュアライザーを pygame 画面に書いています。600 x 600 画面上の各ピクセルについて、このピクセル (x, y) が複素数としてマンデルブロ集合に含まれているかどうかをプロットしています。
問題は、(0, 0) から開始して (600, 600) まで繰り返すことですが、そのほとんどはとにかくセットの外にあります。そのため、倍率を拡大して拡大しますが、まだ右上の象限しかプロットしていません。私のプロットが常に0 + 0iを中心にしているように、何らかの方法で作成したいと思います。
私がやりたいことは、600px^2 キャンバスを x 軸の [-2, 2] から y 軸の [2, -2] までの実平面にマッピングする何らかの方法を見つけることです。これは、たとえば、複素数 0+0i が画面上で (300, 300) にマップされることを意味します。このようにして、私のプロットは常に中央に配置されます。
java - フラクタルと「java.lang.OutOfMemoryError: Java ヒープ領域」
私はJava でKoch フラクタル スノーフレークを実行しており、それを svg ファイルに保存しています。
LineStrip2Dクラスでフラクタルを暗記してやっています(イテラブルを実装したVec2DのArrayListのラッパーです)。
主な機能は次のとおりです。
初期コッホ曲線のパターンがあります:
そして私は電話します:
今問題:
いくつかの反復 (851968) の後、java.lang.OutOfMemoryError: Java heap spaceが発生しました。このエラーを回避し、巨大な svg ファイルを作成するにはどうすればよいですか? このプロセスはさまざまなステップで実行できると思いますが、スマートな方法で実装する方法がわかりません。
zooming - マンデルブロのサイズをズーム値に変換する方法
私のマンデルブロー集合は、XY ワールドで長方形の形状として定義されて
います。元のサイズから四角形のサイズまでの合計ズーム率の値を知る方法はありますか?
ありがとう、イガル!
algorithm - 数学でシェルピンスキーの三角形を繰り返し生成しますか?
シェルピンスキーのフラクタルを描くコードを書きました。再帰を使用するため、非常に低速です。より速くするために、再帰なしで同じコードを書く方法を知っている人はいますか?これが私のコードです:
編集:
誰かが興味を持った場合に備えて、カオスゲームのアプローチで書いています。素晴らしい回答ありがとうございます!コードは次のとおりです。
android - Android でのフラクタル アプリケーション
Androidでフラクタル曲線を生成する最良の方法は何ですか?
NDK を使用する必要がありますか?
そうでない場合
ViewまたはSurfaceViewを拡張する適切なクラスは何ですか
Viewを拡張し、 onDraw()をオーバーライドする 2 つのフラクタルを生成しました。反復カウントが大きく、曲線比率が小さすぎる場合、生成が遅すぎます。
opengl - マンデルブロ高さマップを1か所にとどめる
マンデルブロ集合が高さマップ行列として表されるという小さな問題があります。すべてのセルに反復回数が含まれている場合、無限大以下に到達するのに1つのポイントが必要でした。
最後に、3Dモデルが印刷されます。すばやくズームすると、セット全体が浮いていることがわかり始めたときに問題が発生します(ピクセルごとに反復回数が増えるため)。
モデルを強制的に0(y軸)にとどまらせながら、各ポイントの反復回数が異なるときにモデルを成長させる方法はありますか?
反復回数が最も少ないポイント(および基本的にセット内の最低ポイント)を見つけて、すべてのポイントからそれを差し引いてみましたが、それは機能しませんでした(反復回数がズームプロセスごとに変わるため、たとえば、値5から100にジャンプを設定します)。