19

私はopenglベースのiPhoneアプリを書いていますが、ユーザーが画面上で2本の指を動かす方向に基づいてビューを翻訳できるようにしたいと考えています. 1本の指については、ユーザーの指の開始位置から現在の位置までのベクトルを計算し、その単位ベクトルを見つけて方向を取得できることを知っていますが、2本でこれを行う方法がわかりません指、ベクトルのコンポーネントを追加して平均を計算してもうまくいかないと思うので、ほとんど行き詰まっています。

4

8 に答える 8

35

ベクトル演算は、あなたが思うように機能します:

v3 = (v1 + v2)/2

// so:
v3.x = (v1.x + v2.x) / 2;
// same for Y and Z
于 2009-02-19T18:06:52.920 に答える
8

通常、グラフィックス プログラミングを行う場合、速度の理由から除算よりも乗算の方がよいため、次の方法をお勧めします。

v3 = (v1 + v2) * 0.5f;

于 2009-02-20T20:44:53.573 に答える
7

方向のみに関心がある場合は, それらを追加して結果ベクトルを正規化する必要があります.

(v1 + v2)/abs(v1 + v2)
于 2009-02-19T18:14:33.557 に答える
5

簡単な思考実験: x 方向と y 方向の単位ベクトルに対して実行します。直観的に、「平均」は右上に 45 度の角度の単位ベクトルであると想像できます。それはまさに何が起こるかです。思考実験は、単位ベクトルを取得するには、平均をその大きさで正規化する必要があることを示唆しています。そうすることをお勧めします。

于 2009-02-19T18:12:24.307 に答える
4

申し訳ありませんが、これは間違っています。ベクトルの世界では、コンポーネントを平均化するという意味での「平均」は何の意味もありません。(-1 0) と (1 0) を想像してみてください -> 平均 = 0 0 ;-)

于 2013-09-03T14:32:21.367 に答える
3

それらを追加して2で割るとうまくいきます

于 2009-02-19T18:07:06.040 に答える
2

直感的に理解するために、2 つのベクトルを下に描くことができます。次に、2 つの端点の間に線分を引きます。このセグメントの中点が平均ベクトルです。これは、任意の数の次元で機能します。

于 2014-10-09T19:13:51.847 に答える