問題タブ [l-systems]

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.

0 投票する
2 に答える
183 参照

haskell - (おそらく単項) 関数をそれ自体に再帰的に適用する

Haskell https://en.m.wikipedia.org/wiki/L-systemでL システムを表現しようとしています。具体的には、藻類の成長をモデル化するための Lindenmayer のオリジナルの L システムです。

変数 : AB
定数 : なし
公理 : A
規則 : (A → AB), (B → A)

私にとって、この問題に取り組む自然な方法は、リスト内の各要素にルールを適用することです。これは、(私にとって) ある種の文字列置換を使用して解決策をモデル化できることを意味します。

例:

「文字」のリスト [A, B, A] については、ルールを適用して [A → AB, B → A, A → AB] = [A, B, A, A, B] を取得します (このモデルではHaskell とうまく連携するには、AB をリスト [A, B] と見なす必要があります。これは、上記のルールで生成された他の結果と結合します)。

以下に含まれるコードを作成しました。これは、A または B 以外の文字を処理する必要のないデータ コンストラクターを備えています。

上記のコードは、それ自体を引数として呼び出すと、期待される結果が得られるようなものです。それ

繰り返されるアプリケーションは期待どおりに機能します。

次に達成したいことは、関数がそれ自体に再帰的に適用されることですが、これを表現できていません。これは、藻類を無限に何度も自分自身に適用することによって受け取る無限リストを生成する関数を asalgae [A]または just algae(型シグネチャを に変更する必要があります)で呼び出せるようにしたいということです。algae :: Alphabet

私は敗北を認めたので、http://hackage.haskell.org/package/lindenmayer-0.1.0.0/docs/Lindenmayer-D0L.htmlを見ましたが、コードを(まだ)そのままでは理解できず、他のものも見つけました同様に紛らわしい実装。

foldsusingと関数を使用しようと最善を尽くしましfixたが、失敗しました。また、次のような他の再帰的定義から借りようとしました。

しかしzipWith、二項演算子が必要なため、そのアプローチは失敗します。この問題はモナドなしで解決できますか? もしそうなら、どのように?

0 投票する
1 に答える
176 参照

javascript - JS の処理に Fractal plant を実装する際の「最大呼び出しスタック サイズを超えました」エラー

javascript の処理にフラクタル プラント (レベル 6 まで) を実装しようとしています。基本条件が満たされているにもかかわらず、「最大呼び出しスタック サイズを超えました」というエラーが表示されます。

コードは次のとおりです。最初の関数 custom draw line は、長さ、角度、原点に基づいて線を描画します。インクリメント機能により、角度が25度増加します。減分機能は、角度を 25 度減少させます。

0 投票する
1 に答える
244 参照

swift - Swift L-System藻類

これは、私が IBM Swift サンドボックスで楽しみのために行っていることです。私は最近、Scala で L-system algae を作成しましたが、言語がどのように比較されるかを確認するために Swift で実行するのはクールだと思います。

https://github.com/I2obiN/L-System-Algorithms-and-Fractals/blob/master/algae.scala

これは、私が何を目指しているかを示すための Scala であり、これが Swift にあるものです。

私が抱えている問題は、マッピング機能にあります。x をマップし、結果を出力してから、str で次のマップを実行するために必要です。問題は、両方のマップの間に演算子 + があり、最初の操作の後に str をすばやく印刷できないことです。

これを回避する方法について誰かアイデアはありますか?最初の置換後に str を出力できれば、うまくいくと思います。

0 投票する
2 に答える
1041 参照

python - Pythonタートルグラフィックスの奇妙なLシステム

Python 3 の turtles モジュールを使用して、ここにあるフラクタルを再作成しようとしました: https://en.wikipedia.org/wiki/L-system#Example_7:_Fractal_plant しかし、試してみると、非常に奇妙な結果が得られます.. .

これが私のコードです:

すべてをトリプルチェックしましたが、バグはないようですが、それでも機能しません。私は何をひどく間違っていますか?

助けてくれてありがとう!

0 投票する
1 に答える
3536 参照

c++ - 最新の OpenGL のフラクタル ツリー (OpenGL 3.3 以降)

最新の OpenGL で 3D フラクタル ツリーを描画する方法が必要です。助言がありますか?

必ずしも完全なソース コードを必要とするわけではありません。

私がやろうとしているのは、3D ツリーを作成することです。固定機能の OpenGL では、見栄えの良い現実的なツリーを描画することはそれほど難しくありませんが、最新の OpenGL でそれを行う方法がわかりません。

ブランチごとに円柱モデルを使用し、それを使用glmして適切な場所とサイズに変換することをお勧めします。この場合、モデルのテクスチャ座標と法線を使用できるためです。やり方がわからない。

これは、再帰を使用して固定関数 OpenGL で作成されたフラクタル 2D ツリーです。興味のある方は、ソース コード全体を送信できます。

VAO、VBO、およびシェーダーを使用して、最新の OpenGL でこのようなものを作成するにはどうすればよいですか?

ここに画像の説明を入力

0 投票する
0 に答える
393 参照

opengl - Lsystem 3d Trees、よりリアリズム

Lsystem を使用して、OpenGL で手続き型 3D ツリーを実装しようとしています。これまでのところ、次のような結果を得ることができます。 ここに画像の説明を入力

木のように見えますが、結果を改善して、よりリアルな木にしたいと考えています。誰かが単純に木に厚みの特徴を追加するアイデアを持っています。今のところ、それはいくつかの「棒」または葉のような構造にすぎないためです...手続き型の地形レンドリングで使用したいと思います。

前もって感謝します。