問題タブ [aabb]

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 投票する
1 に答える
1149 参照

c++ - 衝突検出 3d (OpenGL) 用の AABB の作成と使用

次の方法で作成した正方形があるとします。

ここで、AABB 構造を使用して、球がこの立方体の側面 (立方体の上部または下部ではなく) に衝突したことを検出し、球体が立方体を通過するのを防ぎたいとします。これを行う方法についてのアイデアはありますか?

また、glutSolidCube を使用してキューブを実装した場合、AABB 構造を使用できますか?

また、AABB を使用せずに衝突を簡単に検出できますか? たぶん、交差のテストのようなものですか?

0 投票する
12 に答える
48656 参照

python - 画像を回転させて黒い枠を切り取る

私のアプリケーション: 画像を回転させようとしています (OpenCV と Python を使用)

画像の回転

現時点では、入力画像を回転させて黒い境界線でパディングし、A を取得する以下のコードを開発しました。私が欲しいのは、B - 回転した画像内で可能な最大のエリア ト​​リミング ウィンドウです。これを、軸に沿った境界付きボックスと呼びます。

これは本質的にRotate and crop と同じですが、その質問に対する答えが得られません。さらに、その答えは明らかに正方形の画像に対してのみ有効です。私の画像は長方形です。

A に与えるコード:

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

c++ - オブジェクト間の新しい速度の計算 (AABB)

最近、Direct2D を使用して C++ で 2D プラットフォーマー エンジンを作成しようとしています。私が現在抱えている問題は、重力などの加速度がオブジェクトに適用された後、互いに静止しているオブジェクトが正しく相互作用するようにすることです。

現在、私は衝突を検出し、それらに正しく対応することができます (私は思います)。オブジェクトが衝突すると、オブジェクトは他のオブジェクトに寄りかかっていることを覚えているので、オブジェクトは他のオブジェクトによって押される可能性があります (衝突には跳ね返りがないことに注意してください。衝突すると、何か他のことが起こるまで静止することが保証されます)。シミュレーションが進むたびに、オブジェクトの加速度がその速度に適用されます (たとえば、vx += ax * t、t は最後の前進からの経過時間)。

これらの加速度が適用された後、互いに静止しているオブジェクトが対応するオブジェクトとは異なる速度で動いているかどうかを確認し (異なるオブジェクトは異なる加速度を持つ可能性があるため)、その違いに応じて 2 つのオブジェクトのリンクを解除して、より長く静止するか、速度を均等にして、再び同じ速度で移動します。多くの静止オブジェクトでこれを実行できるアルゴリズムの作成に問題があります。

これは私の問題を説明するのに役立つ図です

http://i.imgur.com/cYYsWdE.png

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

algorithm - AABB アウトラインから AABB アウトライン交点アルゴリズムへ?

私は周りを見回しましたが、探しているものが正確には見つかりませんでした。最初は、これは単純な問題だと思っていました..実装しようとするまでは、多くのケースがあり、一般的な解決策を見つけることができませんでした.

たとえば、AABB が 2 つあるとします。それらの輪郭が交差する場合、すべての交点を取得したいと考えています。ポイントの最大量は4で、ポイントのゼロ以外の最小量は1です。

私の AABB は常に自動的にソートされるminとポイントで構成されているため、常に最小のxy 値を持ち、常に最大のxy 値を持ちます。maxminmax

下の画像は、いくつかの AABB を示しています。青い線はそれらの交点を示しています。AABB の辺が別の辺と重なっている場合は、重なっている線分に沿って無限の交点があるようなものであることに注意してください。そういう場合は無視して「交点はない」と言いたい。

アルゴリズムのアイデアを思いついた人はいますか? 私はコードを投稿していないことを認識しており、それが眉をひそめていると確信していますが、この問題についてかなり考えました。なぜ私がこれをしたいのか..私は知りません.

そうそう、私の AABB には次のような便利なメソッドがあります。

私は醜いハックを行うことができ、線分 <-> 線分チェックを行うことができましたが、私にはわかりません..ちょっと、まあ、醜くてエレガントではありません。minこれをすばやく行うには、とmaxポイントを使用して実行できるいくつかの策略があるに違いないと確信しています。

例

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

indexing - Box2D: レポート フィクスチャによる子インデックスの取得

Box2D 2.2.0 を使用して、Box2D を使用したゲームに取り組んでいます。プレイヤーは AABB を撃ちます。各 step() で、AABB を移動し、b2World->QueryAABB( &queryCallback, aabb ) を介して衝突を処理します。しかし、私のゲームの世界はチェーン シェイプで構成されています。したがって、b2World->QueryAABB は、傾斜したチェーン形状の AABB のみを検出します。したがって、現時点での私の目標は、ReportFixture() から子インデックスを取得して、チェーンシェイプの指定されたエッジに対して AABB をテストできるようにすることです。

私はこれを見つけました: http://www.box2d.org/forum/viewtopic.php?f=3&t=8902

その投稿に続いて、以下のコードに示すように、Report Fixture に子インデックスを追加しました。

私の問題は、childIndex を取得すると、常に -1082069312、-1053558930、-1073540884 のようなものになることです。

ここに私の b2QueryCallback があります:

テストベッドで:

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

algorithm - Circle-Circle 衝突に AABB を使用する理由

私の wip ゲームでは、Circle-Circle 衝突を実装する必要があります。これを実装するには、 Centers 間の二乗距離を計算するだけ(x1-x2)² + (y1-y2)²です。これが半径(r1+r2)²の 2 乗よりも小さい場合、衝突が発生しました。しかし、今日、私はこのリンクを見ました: Circle-Circle collision

ここでは、最初に AABB 衝突を使用して、円が近くにあるかどうかを確認します。しかし、なぜ私はこれをしなければならないのですか?円と円の衝突は単純で、それほど高価な計算ではありません。最初にAABBを使用すると、少なくとも同じ数の計算を行い、円がさらに近くにある場合.

説明させてください:

円ごとに AABB 衝突検出を行います。だから私はn! / (n-2)!計算をしなければなりません。n = テストする円の数。AABB が衝突する円のペアごとに、実際に衝突する場合は別の計算を行う必要があります。

AABB 衝突検出がなければ、私はn! / (n-2)!計算を行うだけで、この計算にそれほどコストがかかるとは思いません。どう思いますか?