問題タブ [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 投票する
3 に答える
4234 参照

c++ - L-Systemsに関する情報

大学が既存のプロジェクト用に手続き型都市を構築するプロジェクトを開始しようとしています。

以前に L-Systems をコーディングした経験があり、私が始めるのに適した場所を知っている人がいるかどうか疑問に思っていました. 手続き型メソッドとパーリン ノイズと fBm を使用する前に少し作業を行ったので、フラクタル的な意味での L システムとは何かという前提が得られました。L-System のコーディングの方向に私を後押ししてくれる場所をもっと探しています。あなたが私に向けることができるヘルプや技術文書は素晴らしいでしょう.

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

opengl - OpenGLL-システムレンダリング

基本的なL-Systemが機能するようになり、アプリケーションのレンダリングを最適化することにしました。以前は、スイッチケースと描画を使用してL-Systemの文字列全体をループしていました。さらに良いことに、私が何をしていたかをお見せします。

文字通りすべてのフレームでツリーを解決していたため、これらすべてを削除しました。このループを変更して、すべての頂点をstdベクトルに保存するようにしました。

次に、レンダリングループを変更したので、ベクトル配列から直接読み取ります。

ここでの問題は、ベクトル配列を使用していてLine Stipを使用すると、余分なアーティファクトが発生することです。

最初の画像は最適化されていない元のレンダリングであり、2番目はより高速に実行される新しいレンダリングであり、3番目は最初の2つが使用しているようにプッシュとポップを使用しないドラゴン曲線のレンダリングです(私はかなりですプッシュアンドポップが問題の発生源であることを確認してください)。

ここでの頂点の保存のロジックに問題がありますか、それともラインストリップを使用しているためですか?線を使用するだけですが、実際にはまったく機能せず、line_stippleのように見えてしまいます。

この投稿の長さについても申し訳ありません。

代替テキストhttp://img197.imageshack.us/img197/8030/bettera.jpg 代替テキストhttp://img23.imageshack.us/img23/3924/buggyrender.jpg 代替テキストhttp://img8.imageshack.us/ img8 / 627 / dragoncurve.jpg

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

c++ - L-System データ構造の設計 (C++)

C++ で L-System 書き換えエンジンを実装するためのデータ構造を設計しようとしていますが、どこにも到達できないようです :(.

シンボル (文字) の文字列を格納する必要があります。シンボルにはいくつかのタイプがあります (LSystem のアルファベットによって指定されます)。タイプ「A」、「B」、「C」があるとしましょう。現在、シンボルの各タイプは異なるパラメータを持つことができます。たとえば、タイプ A のシンボルには距離があり、シンボル B には角度があります。C シンボルにはパラメーターがありません。文字列は "ABABC" のようになります。

次に、文字列を繰り返し処理し、各タイプのシンボルにも関連付けられているいくつかのアクションを実行する必要があります。「A」は「「距離」の長さの線を引く」(距離は A のパラメータ)、B は「「角度」度を回す」、C はペイントを終了することを意味します。

クラス Symbol と各シンボル タイプ (クラス SymbolA、クラス SymbolB、クラス SymbolC) の子を作成しようとしましたが、文字列の作成方法がわかりません。型キャストなどは避けたいと思います。

同様の問題を抱えている人、または私を助けることができるアイデアを持っている人はいますか?

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

python - タートル グラフィックスを使用して l システム コードで記録された状態を復元する

l システム (TurtleWorld ライブラリ) を再現するためにタートル グラフィックスを使用しています。私が適用しようとしたルールは、以前に保存された状態に戻る必要がない場合はうまく機能しますが、 [ と ] (以下のルールを参照) がある場合はいつでも、物事が壊れ、タートルはランダムな bs を描画するだけです。

基本的に「]」がどこにあるかをチェックするIF文でコードが壊れていると思います。(また、現時点では最適化されていないことを知っています。明確にするために、しっかりしたIFを書きました...)

EDIT : 新しいコード - get_heading() があるので、角度を計算する必要はありませんでした。

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

python - Python のドラゴン カーブ

タートル グラフィックスを使用してドラゴン カーブを描画するプログラムを作成しました。

ここに画像の説明を入力

私が気付いた 1 つの問題は、生成された文字列を変数 newWord.. に保存したいということですが、実際には文字列に基づいて線を描画する関数 drawit のパラメーターとして newWord を使用できません。これを実行しようとすると、「グローバル変数 newWord が定義されていません」というエラーが表示されます。したがって、私のコードでは、渡したい変数を実際に渡すことなく、newWord の出力をコピーして描画しました。

問題が createWord 関数にあるのか、それとも drawit で「十分に描画」していないだけなのかはわかりません。

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

python - L-systemフォレストの重複するツリー

森の中の木の成長をシミュレートするPythonのタートルグラフィックスを使用してプログラムを作成しました。ランダムに選択される3つのツリーパターンがあり、それらの開始座標と角度もランダムに選択されます。かっこいい木の模様をいくつか選びましたが、問題はたくさんの木が重なっていることです。そのため、木の森のように見えるのではなく、5歳の悪い絵のように見えます。

この重複を少なくする方法はありますか?森を見ると、いくつかの木とその葉が重なっていますが、それは間違いなく次のようには見えません。

ここに画像の説明を入力してください

ランダム化がたくさんあるので、どう対処したらいいのかわかりませんでした。

これが私のコードです:

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

fractals - L-System-新しいブランチのシリンダー半径を小さくします

私は円柱で作られたシンプルな3DL-Systemを持っています。現在、最終的な文字列の各記号を調べて、描画、回転、回転、プッシュ、ポップなどの適切なアクションを実行しています。プッシュとポップは新しいブランチに非常に似ていることは知っていますが、プッシュが呼び出されるたびに半径を変更しようとしましたが、奇妙な結果につながります。

新しいブランチを以前のブランチよりも細くする正しい方法はありますか?

ありがとう。

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

shader - Ogreレンダリング+頂点シェーダー

私の世界に次のような3Dオブジェクトがあると仮定します。

http://en.wikipedia.org/wiki/File:Graftal3.png

たとえば、描画方法に関する情報を格納するノードもあります...

http://en.wikipedia.org/wiki/File:Graftal4.png

あるものから別のものへの補間を行うにはどうすればよいですか。私の調査から、頂点シェーダーを使用する必要があることがわかっています。しかし、私を悩ませている主な部分は、2番目のモデルが元の画像よりも多くの頂点を持っていることです。

この効果をどのように達成すべきかについてのガイダンスを期待しています。

ありがとう!

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

c++ - 「イテレータは参照解除できません」C++スタック

ここで何が起こっているのか分かりません。私はVector3Dの標準スタックを持っています(私の家庭教師から与えられた3次元のベクトルクラス)。2つのVector3Dをスタックにプッシュしましたが、vectorStack.top()を使用して一番上のものに移動すると、この非常に役に立たないエラーが発生します。

デバッグアサーションに失敗しました!

式:dequeイテレータは参照解除できません

Vector3Dコピーコンストラクターに何か問題があるのではないかと思いましたが、独自のクイックVector3D構造体(与えられた古い構造体を削除)を作成しようとしましたが、それも機能しません。

コードは次のとおりです。

lsystemのスタックはstack<Vector3D> vectorStack;

vectorStack.top()を現在の位置に割り当てるさまざまな方法を試しましたが、何も機能していないようです。

完全を期すために、Vector3Dのコンストラクターは次のとおりです。

編集:スタックに何かがあることを証明するため スクリーンショット

これは、エラーをスローするスタック内の行です スクリーンショット2

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

c++ - C++ と L-Systems を使用して、空間内の任意の点と方向に 3D ツリーを生成する方法は?

私は C++ で、任意のポイントと任意の方向に木を「成長」させることができる 3D シーンをプログラミングしています。L-systems の木/惑星は非常に見栄えが良いと思いますが、ポイント座標、方向ベクトル、およびその他のパラメーターを渡して、その「成長した」木のポイント セットの配列を返すことができる関数またはライブラリをグーグルで検索することはできません。

開始するのに十分な情報をグーグルで検索することさえできません。したがって、このタスクを完了するために参照したり、再利用したり、調整したりできるアイデアやリンクはすべてあります。いくつかの L-sys パーサーを見つけましたが、成長する方向を制御せずにその場で描画しているように見え、全体のポイント座標も得られませんでした。