問題タブ [boids]
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.
multithreading - コンテンツを変更しようとすると Scala スイング パネルが消える (スレッド実行時のみ)
だから私は学校のプロジェクトとしてボイド シミュレーション プログラムを書いています。私のプログラムは、他のグループと群がらないこれらのボイドの複数の異なるグループをサポートしています。それらはすべて、新しい部族が作成されたときにプログラムのメイン GUI に BoxPanel を追加することによって行う異なる設定を持ち、それらの BoxPanel には設定があります。グループ設定で新しいフレームを開くボタン。
これは、プログラムを起動して、コード内に事前定義された部族をすべて追加すると、完全に機能します。ここで、GUI の新しい部分を作成して、これらの Boid の新しいグループを作成し、シミュレーションの実行中にそれらを追加できるようにしました。ここで問題が発生します。
何らかの奇妙な理由で、適切な設定でシミュレーションにグループを正常に追加しますが、BoxPanels をメイン GUI に追加しません。シミュレーションの横にある設定バー全体が完全に消えます。私はこれをテストし、計算スレッドの先頭に部族を追加すると同じことを行うので、これは複数のスレッドとスイングの問題のようです。これを引き起こしているもの、またはこれを修正する方法はありますか? 私はこれに完全に困惑しています。
tl;dr: トライブを追加するための以下のコードは、スレッドを開始していないときは正常に機能しますが、スレッドの開始後に使用しようとすると、optionPanel が空に見えます。
メイン GUI に BoxPanels を追加するコードは次のとおりです。
ああ、内容のサイズを印刷して本当に必要な内容を追加するかどうかをテストしましたが、すべてがうまく一致しますが、描画されません。
編集:いくつか掘り下げた後、実際にはスレッドからスイングを更新することのようです。多くの場所で SwingWorker の使用が提案されていますが、私が収集した情報から、それは継続的なシミュレーションであり、フレームごとに新しい SwingWorker を作成し続ける必要があるため、私のプログラムには適合しないと思います。
EDIT2:次のようにスレッドからメソッドを呼び出してみました:
違いはありませんでした。これは、TribeBoxPanel と TribeSettingFrame の使い方に問題があると思い始めています。これらは、必要な BoxPanel または Frame を返すメソッドを 1 つだけ含むオブジェクトです。この実装は悪いですか?もしそうなら、動的な BoxPanels と Frames を作成するより良い方法は何ですか?
java - Javafx キャンバスが正しくクリアされません。
Craig Reynolds Boids の Java 実装を作成しました。最近、各オブジェクトを .png 画像で表すように更新しました。それ以来、画像の表示の問題が発生しています。
問題を解決する最善の方法は何ですか?
- Polygon を使用してみましたが、座標の 1 つが負の場合、三角形が正しく表示されません。
メインクラス:
群れ:
ボイド:
c# - ボイドの群れがターゲットを正しく追跡しますか?
ここにあるボイドのフロックスクリプトを変換しようとしています: http://wiki.unity3d.com/index.php?title=Flocking
私の 2D ゲームでは動作しますが、群れはターゲットにまったく追従しません。群れは、約 20 度の角度で右から上に移動したいだけのようです。このスクリプトで群れにターゲットまたは「Chasee」を追跡させるにはどうすればよいですか?
簡単にするために、ほとんどの座標を Vector3 のままにして、速度を調整するときにそれらを Vector 2 にキャストします。
そして、群がる行動
java - 別のクラスからの ArrayList オブジェクト値の変更
ArrayList boid を含むクラス Creature とクラス Food の 2 つのクラスがあります。Boid にはいくつかのパラメーターがあります。
Food クラスには次のメソッドがあります。
私が達成しようとしているのは、boid が食べ物を「食べる」と、boid タイプ (btype) が 2 から 1 に変わることです。
私は bnumadj 変数を使用して、このメソッドで boid にフィードバックしようとしています:
どこが間違っていますか?
python-2.7 - Python ボイドの実装
Python でかなり基本的な boids シミュレーションを実装しようとしています。私の目標は、基本的な捕食者と獲物のセットアップでシミュレーションを行うことです。いくつかの疑似コード (2 つ以上のリンクを投稿することはできませんが、Google の場合は最初の結果ですboids pseudocode
) といくつかのコードをここで見つけて、試してみることにしました。捕食者を追加したかったので、見つかったコードを変更して、ボイド (獲物になる) がスプライトになるように変更し、そこから移動することにしました。しかし、私はこの問題に遭遇しました。
コードを変更して pygame スプライトを使用すると、すべてのボイドが右下隅に移動します (元のコードは正しく機能しました)。
私のコード (レポをクローンするだけ) はこちら(github) です。誰も最初の問題に遭遇したことがありますか? 誰かがそれを解決するためのアイデアを持っていますか? 質問 2 については、誰かがその方法を説明していただけますか?
ありがとうございました。どんな助けでも大歓迎です。
PS
Boid の動作 (動き) は、常に右下隅に移動するという事実を除けば、正常に機能しているように見えます。
PPS
フラのおかげで、獲物は正しく行動するようになりました。
PPPS
デバッグの問題が解決したので、私の質問の残りの部分には説明が含まれており、トピックにすべきだと思います。
python - ボイドの捕食者と障害物行動
私は pygame を使用して python で boids シミュレーションに取り組んでいます。基本的な動作は機能しますが、障害物回避と捕食者を追加しようとしています。これまでのところ、これらの動作を実装する方法を理解するのに苦労しています。
まずは獲物であるボイドを逃がし、捕食者を襲わせようとしています。そのためには、どうにかして最も近いボイドを見つける必要があります。どうすればいいですか?
また、障害物を回避するために、静的な障害物から積極的に逃げるのではなく、獲物を回避させる方法を誰か説明してもらえますか?
私の完全なコードはこちら(github)です。これら2つのことをどのように達成するかについて、あらゆる説明をいただければ幸いです。
ありがとう!
編集:
fucas はそれを達成する方法を教えてくれましたが、今は新しい問題があります。
捕食者と獲物の行動については、次のようになりました。
そしてこれは獲物のために:
(このコードは、他のすべてのルールの後に最後に適用されました)。
python - ボイドシミュレーションでの速度の定義
プログラミングが初めてで、最初のプロジェクトの 1 つで、boid シミュレーションのコードに従っていますが、コードのこの部分で sin 関数と cos 関数が何をしているのかわかりません。
一般に、コードはボイドのランダムなベクトルを設定していますが、なぜランダムな角度だけでは十分ではないのでしょうか?
単位速度の定義にとって重要な sin 関数と cos 関数は何をしているのですか?
個別に計算されたボイド速度の参照条件を提供しますか?