12

3Dベクトルは、3Dゲーム数学のコンテキストで3Dポイントタプル(x、y、z)とは異なりますか?

それらが異なる場合、3Dポイントを指定してベクトルを計算するにはどうすればよいですか?

4

7 に答える 7

14

違いは、ベクトルは代数オブジェクトであり、ある空間の座標のセットとして指定される場合とされない場合があることです。(私のだらしなさを修正してくれたbungalobillに感謝します)。

ポイントは、座標によって与えられる単なるポイントです。一般的に、1つは2つを混同することができます。一連の座標が与えられ、それらがそれ以上の情報(基底の選択など)のない「点」を構成すると言われた場合、その一連の数値を返して、ベクトルを生成したと合法的に主張することができます。

2つの最大の違いは、一方にできることをもう一方に行うことは意味がないということです。例えば、

  1. ベクトルを追加できます:<1 2 3> + <3 2 1> = <4 4 4>
  2. ベクトルに数値(一般にスカラーと呼ばれる)を掛ける(またはスケーリングする)ことができます2 * <1 1 1> = <2 2 2>

  3. 2つのポイントがどれだけ離れているかを尋ねることができます:d((1、2、3)、(3、2、1)= sqrt((1-3)2 +(2-2)2 +(3-1)2)= sqrt(8)〜= 2.82

ベクトルと点の間の関連付けについて考える良い直感的な方法は、ベクトルが原点(座標(0、0、0)を割り当てる空間内の1つの点)から関連付けられた点に到達する方法を教えてくれることです。点。

座標系を変換すると、同じ点の新しいベクトルが得られます。ポイントを構成する座標は同じ変換を受けるので、2つの間で作成するのは非常に簡単です。

同様に、座標系を回転したり、他の変換(せん断など)を適用したりすると、ポイントに関連付けられた座標とベクトルも変更されます。

ベクトルが完全に別のものになることも可能です。たとえば、区間[0、1]の有界関数は、実数を掛けて区間の別の関数に追加できるため、ベクトルです。特定の要件(つまり、ベクトル空間の公理)。この場合、[0、1]の実数xごとに1つの座標を持つことを考えます。ここで、その座標の値はちょうどf(x)です。これが、無限次元のベクトル空間の最も簡単な例です。

あらゆる種類のベクトル空間があり、ベクトルが「点と方向」(またはそれが想定されているもの)であるという概念は、実際にはかなり空虚です。

于 2010-10-12T10:52:54.847 に答える
2

ベクトルは、ある状態から別の状態への変化を表します。1つを作成するには、2つの状態(この場合はポイント)が必要です。次に、結果のベクトルを取得するために、最終状態から初期状態を減算します。

于 2010-10-12T10:53:47.603 に答える
1

3Dベクトルは、3Dゲーム数学のコンテキストで3Dポイントタプル(x、y、z)とは異なりますか?

伝統的なベクトルは方向と速度を意味します。ポイントは、1つのタイムステップの世界の原点からのベクトルと見なすことができます。(数学的に純粋とは見なされない場合でも)

それらが異なる場合、3Dポイントを指定してベクトルを計算するにはどうすればよいですか?

ターゲットタワーは一般的なニーモニックです。

これの使用に注意してください。結果のベクトルは実際にはnormal*velocityです。ゲームアプリケーションで役立つものに変更する場合は、最初にベクトルを正規化する必要があります。

例:ジョーは(10,0,0)にいて、(10,10,0)に行きたい
ターゲットタワー:(10,10,0)-(10,0,0)=(0,10、 0)
結果のベクトルを正規化します:(0,1,0)
"physics"を適用します:(0,1,0)* speed * elapsed_time <speed = 3そして、コンピューターが2秒間フリーズしたと言います。最後のステップと計算を簡単にするためのこのステップ>=(0,6,0)
結果のベクトルを空間内のジョーズの現在のポイントに追加して、空間内の次のポイントを取得します。... =(10,6,0)

法線=ベクトル/(sqrt(x * x + y * y + z * z))

...私はここにすべてを持っていると思います

于 2010-10-12T12:00:09.587 に答える
1

ベクトルは、3D空間内の点というより一般的な考え方です。

ベクトルは、2、3、またはn次元を持つことができます。それらは、位置以外に、物理世界の多くの量(たとえば、速度、力、加速度)を表します。

数学者は、ベクトルはこの規則に従って変換する1次テンソルであると言うでしょう。

u(i) = A(i, j)v(j)

ポイントとベクトル異なるため、両方が必要です。位置を示す3D空間内の点はベクトルですが、すべてのベクトルが3D空間内の点ではありません。

次に、コンテナとしてのベクトルのコンピュータサイエンスの概念があります。これは、値または参照の配列の抽象化です。これは、数学者のベクトルの概念とは異なる概念です。これは、すべてのベクトルコンテナーが、一次テンソル変換の法則(たとえば、OrderItemsのベクトル)に従う必要がないためです。それはまた別の考えです。

ベクトルとポイントについて話すときは、これらすべてを覚えておくことが重要です。

于 2010-10-12T12:17:04.923 に答える
-1

ゲーム数学の文脈では、違いはありません。

ポイントはアフィン空間の要素です。†</sup>ベクトルは、ベクトル(別名線形)空間の要素です。アフィン空間の原点を選択すると、そのアフィン空間に線形構造が自動的に誘導されます。逆もまた真です。ベクトル空間がある場合、それはすでにアフィン空間のすべての公理を満たしています。

事実、計算に関しては、アフィン空間を数値で表す唯一の方法は、ベクトル空間を形成する数値のタプルを使用することです。

ゲーム内の各オブジェクトには常に原点があり、それがどこにあるかを知ることが重要です。その原点は、カメラ/ビューポートの原点を基準にして設定された世界の原点を基準にして設定されます。オブジェクトの頂点は、オブジェクトの原点からのオフセットであるベクトルとして表されます。行列の乗算を使用してオブジェクトを変換します。これは純粋にベクトル空間の演算です(最初に原点を指定せずにアフィン点に行列を乗算することはできません)。など...「点」と考える可能性のある数のトリプレットはすべて、実際にはローカル座標系のベクトルです。

それで、代数の研究の外で2つを区別する理由はありますか?これは不要な抽象化であり、不要な抽象化は有害です(KISS)。だから私の答えはノーです、ただ単一のベクトルタイプで行ってください。

†</sup>またはゲーム開発のコンテキスト外の位相空間。

于 2010-10-12T10:56:39.710 に答える
-1

ベクトルは状態の変化です。ポイントは静的ポイントです。2つのベクトルは平行または垂直にすることができます。3番目のベクトルである2つのベクトルの積を持つことができます。ベクトルに定数を掛けることができます。2つのベクトルを追加できます。
これらすべての操作は、ポイントで許可されていません。したがって、両方をC ++クラスと考える場合、プログラム的には、ベクトルクラスにはそのようなメソッドが多数ありますが、おそらくポイントの取得と設定のみです。

于 2010-10-12T11:04:50.603 に答える
-2

ベクトルは線であり、一連の点ですが、開始点と終了点の2つの点で表すことができます。

原点を始点とすると、終点のみを与えるベクトルを記述できます。

于 2010-10-12T10:53:23.643 に答える