Android Path Collisionの問題/ソリューション -- android フィールド と path フィールド と collision-detection フィールド 関連 問題

Android Path collision problems/solutions












0
vote

問題

日本語

私は、ユーザーが自分の指で描画することを可能にするAndroidに描画アプリケーションを持っていて、結果の形状をAndroid Path Sとして保存します。ユーザーが個々の<コード> Path Sを削除できるようにするには、 Path に対して境界<コード> Rect を使用してから、内部の多次元バイナリアレイを使用して、境界<コード>内部のピクセルを表す。 Rect 。次に、2次ベジエ曲線の数式を使用してパスの制御点を取り、それに沿ってトラックを取り、それに沿ってトラックを取り、それをその下にあるピクセルを1にするアレイ内の各要素を設定します。

上記の設定を使用して、消去モード時に最初にユーザーの指と境界<コード> 9988777668 の衝突を確認し、衝突した場合は、ピクセルが触れるかどうかを確認します。ユーザーは配列内の1に設定されます。

今、ユーザがノートをロードすると、すべての図形を「ストローク」オブジェクトの ArrayList にロードして、それらを簡単に表示し、衝突をチェックすることができます。消去モードで。カスタムオブジェクトのストロークを使用して、 A ---> B A B 0 、バイナリアレイも保存します。すべてが期待どおりに機能していますが、このデータのすべてを保存するメモリフットプリント、特に各パスの境界<コード> 998877611 のバイナリ配列は高価で、ユーザーが多数のストロークを持っている場合各ストロークの配列を作成しているマイコードの部分に<コード> A ---> B A B 2 を取得します。

これを達成するためのより良い方法に関する提案?基本的に、私は、2つのAndroidパス(描画パス、次にユーザーが消去モードのときに作成するパス)の間の衝突を決定しようとしていますが、上記の理論的には実際には実行可能ではありません。

ありがとう、

Paul

英語

I have a drawing application in Android that allows the user to draw with their finger, and then stores the resulting shapes as Android Paths. To allow the user to delete individual Paths they have drawn, I have implemented this solution that uses a bounding Rect for each Path, and then uses an inner multi-dimensional binary array to represent the pixels inside the bounding Rect. I then populate the array by taking the Path's control points and track along it using the mathematical equation for a quadratic bezier curve, setting each element in the array that would have a pixel underneath it to 1.

Using the above setup, when in erasing mode, I first check for collision between the users finger and the bounding Rect, and if that collides, I then check to see if the pixel being touched by the user is set to a 1 in the array.

Now, when a user loads a note, I load all of the shapes into an ArrayList of 'stroke' objects so that I can then easily display them and can loop through them checking for collision when in erase mode. I also store the Rect and binary array with the strokes in the custom object. Everything is working as expected, but the memory footprint of storing all of this data, specifically the binary array for each Path's bounding Rect, is getting expensive, and when a user has a large number of strokes I am getting a java.lang.OutOfMemoryError on the portion of my code that is creating the array for each stroke.

Any suggestions on a better way to accomplish this? Essentially, I am trying to determine collision between two Android Paths (the drawing Path, and then a Path that the user creates when in erase mode), and while the above works in theory, in practice it is not feasible.

Thanks,

Paul

</div
        

回答リスト

0
 
vote
vote
ベストアンサー
 

「バイナリアレイ」の実際の表現は何ですか?私はあなたが保存するために必要な実際のデータを反映するように表現を微調整するかどうか(例えば、このxとzピクセルのためのこのyのこのyで)あなたが過度のサイズなしに必要なものを保存することができるでしょう。

ピクセルごとに1バイト、または8ピクセルあたりの実際のバイト配列を格納する(それが行っているのであれば)この使用には必要ありません。

もう1つの代替案は、コントロールポイントとバウンディングボックスだけでビットマップをまったく保存することではありません。タッチが境界ボックスと交差する場合は、コントロールポイントからのビットマップを計算します。

 

What is the actual representation of the "binary array"? I think if you tweak the representation to reflect the actual data you need to store (for example RLE encode the bits: at this y starting at this x and for z pixels) you will be able to store what you need to without excessive size.

Storing an actual array of bytes with one byte per pixel, or per 8 pixels (if that is what you are doing) isn't necessary for this use.

Another alternative is not to store a bitmap at all, just the control points and bounding boxes. If a touch intersects a bounding box, you calculate the bitmap on the fly from the control points.

</div
 
 
   
   

関連する質問

9  連続2D空間における障害物回避による基本的な経路  ( Basic pathfinding with obstacle avoidance in a continuous 2d space ) 
私は、クリーチャーオブジェクトが環境内の他の任意のオブジェクトに向かって移動できるシミュレーションを書いています。インテリジェントな経路を実行するのではなく、障害物の周りを滑ります。 1つの一般的な方向に移動し、障害物の周りに跳ね返るために、 plan>パスを...

1  私の箱は衝突していません  ( My boxes are not colliding ) 
私はJavaでゲームエンジンを作り、別々の軸定理を使って衝突を行います。衝突を登録しない場合に間違ったものがあります。誰もが私の衝突プログラムに何か問題を見ていますか? <事前> <コード> public PolygonCollisionResult Poly...

0  XNA:レンガのリストに関する衝突をチェックします  ( Xna check collision on list of bricks ) 
私は衝突を実装する大きな闘争をしています。 画面の下部に積み重ねることになっているレンガをランダムにドロップするゲームがあります。私は彼らが画面の下部に停止させることができましたが、彼らは積み重ねられません。 私は私の更新機能にこれを持っています: <事前> ...

0  GameQueryの衝突検出  ( Gamequery collision detection ) 
JavaScriptを使用してゲームを構築するためのjQueryとGameQueryを探索するのは初めてですので、非常に素朴に見えるかもしれないSTHについて尋ねていますが、本当にそれを取得できません。 私はスペースインベーバーのようなゲームを開発しています...

2  VHDLの長方形/ボックスの衝突  ( Rectangle box collision in vhdl ) 
VHDLを使用してFPGAのPongの作成に取り組んでいます。私は何日かどうかを把握しようとしている日、長方形の衝突の最善の解決策とは何ですか?バグがあるようです(下記の)。 LarsButlerの答えにアドバイスしました。 object.posit...

1  JavaScriptの3Dポリゴンの内側にある点を検出する機能は?  ( Function to detect if a point is inside a 3d polygon on javascript ) 
可能な限り速く検出するための関数またはアルゴリズムとは、一次元多角形の内側にある点があるのか​​? ...

15  重力に関してゲームオブジェクトと床の間の衝突は?  ( Collisions between game objects and the floor with regards to gravity ) 
プレーヤー、モンスター、またはオブジェクトや床のような移動物の関係をどのように取り扱っていますか?プレイヤーは絶えず床に「落ちてバックアップしていますか? 私が見つけた衝突に反応する2つの方法は、衝突の前にプレーヤーを前の場所に戻し、それが衝突するかどうかを...

0  衝突検出の特別な場合  ( Special case of collision detection ) 
私は1次元の2つのボールの衝突検出を研究している場合 第1の位置が0と彼の速度5ピクセルの各フレームに最初のものを仮定します。 そして2つの位置3とそのVelocity -5ピクセル各フレーム 次に、次のフレームで、最初のボールは位置5に移動し、2番目のボール...

1  点(int座標)が三角形の斜辺内にあるかどうかを確認する方法  ( How to check if a point int coordinates is within the hypotenuse of a triang ) 
私は正しい三角形を持っています、そして私は与えられた点がその三角形の斜辺にあるかどうかをチェックしたいです。すべてのポイントは浮動小数点変数ではなく、プレーン整数です。 (壊れた画像、元の場所<コード> https://tape.bplaced.net/dl/...

6  2D連続衝突検出  ( 2d continuous collision detection ) 
私は私のPongゲームのための単純な継続的な衝突検知を実装しようとしていますが、私はこの権利を実装または理解しているよくわかりません。 AFAIR連続衝突検出は、通常の衝突検出を回避する別のオブジェクトを通過する可能性がある高速移動オブジェクトに使用されます。...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有