1

下の画像を参照してください。

イラスト http://img28.imageshack.us/img28/5286/pic1we.png

Android デバイスの画面上にあると仮定します。ドット #1 は現在の位置です。線形の青い線に続くドット #2 の (x,y) 位置を取得したい (ドット #2 とドット #1 の間の範囲が 50 dp であるとしましょう)。黒いボックスは青い線の始点です。

これの用語は何ですか?翻訳?

アルゴリズムを知っている人はいますか?

AndEngineを使ってAndroidアプリを開発したのですが、そのための組み込み関数があることをご存知でしたら教えてください。Android openGL ES ライブラリについても同様です。

注: MoveModifier を使用してオブジェクトを移動する方法を探しているわけではありません。

事前にt​​hx。

4

2 に答える 2

2

Authman の回答は適切ですが、特定の距離を離す方法は含まれていません。ラインに沿って p2 を探している場合、IMO では、これをベクトルで考える方が簡単です。最初に青い線に沿ってベクトルを見つけます。これは、Authman が上で説明したプロセスと似ています。ブラック ボックスの位置がv0 = (x0, y0)で、最初のドットの位置v1 = (x1, y1)が の場合、「方向ベクトル」は になりますv1 - v0 = (x1 - x0, y1 - y0)。これは青い線に沿ったベクトルです。それができたら、長さが 1 になるように正規化し、希望の距離 (この場合は 50) を掛けます。コンポーネントごとに実行したい場合は、簡単な擬似コードを次に示します。

find_v2(x0, y0, x1, y1):
  direction_x = x1 - x0
  direction_y = y1 - y0

  norm = sqrt(direction_x^2 + direction_y^2)
  direction_x *= 50 / norm
  direction_y *= 50 / norm

  x2 = x1 + direction_x
  y2 = y1 + direction_y

それが役立つことを願っています! あなたがベクトル計算にどれだけ慣れているかはわかりませんが、グラフィックスを扱っているのであれば、このような問題に非常に役立ちます。カーン アカデミーの線形代数コースのいくつかをチェックすることをお勧めします。

于 2012-04-19T05:10:35.503 に答える
1

あなたが探している用語は外挿です。

黒い点が点 '0' の場合、最初に直線方程式の勾配を計算します。

m = ( (d0.y-d1.y) / (d0.x-d1.x) )

次に、その線に沿って、正 (点 0 から離れる) または負 (点 0 に到達するまでは点 0 に向かう) に外挿し、最終的には再び動線を継続することから遠ざけることができます。

dot2.x = d0.x + m*percentage
dot2.y = d0.y + m*percentage

ドットpercentage1 にどれだけ近づいているかを示します。したがって、1 (たとえば 100%) を指定すると、正確にドット 1 に配置されます。パーセンテージ = 0 は、ドット 0 に正確に配置されます。>1 の場合、点 2 に近づきます。<1 の場合、点 0 を通過します。

--

そこにわずかな修正:

dot2.y = d0.x + m*percentage
dot2.x = (dot2.y - dot0.y) / m

私が設定した勾配は、dot2 の y 座標を計算する場合にのみ役立ちます。直線の方程式が既にあるので、それを直接使用して dot2 の x 座標を解くことができます。

于 2012-04-19T04:56:08.150 に答える