2012-03-14 13 views
2

現在、私はゲームで線形代数を教えています。私は、新しく発見された知識を単純な2D空間で使う準備がほとんどできています。最後のゲームとは違って、ベクトル/行列などを使って数学ライブラリを使用することを計画しています。二次元空間における線形代数

私はちょうどこの問題についていくつかの説明をしたいと思います。まず、それはこのように、4x4の同次座標に2次元空間内の位置を表現するために有効である:ここでは、[、400、300、0 1]

を、私は、我々が取り組んでいる簡単にするために、想定しています800 x 600の固定解像度(スクリーンスペース内)であるため、これは画面中央のポイントにする必要があります。

これは有効ですか?したがって、この

[400、400、0、0]

は、この位置は、プレイヤーの位置を表し、Iはベクトルを使用した場合、私はプレイヤが向いている方向を表すことができると仮定し私は90度のプレーヤーを回転させたい場合、我々はスクリーンスペースで作業している場合、ベクターは、(プレイヤーが画面の下部に直面していることを表します。

を、これは有効ですか?

最後に、私は私を知っていますベクトルにmatrを乗じるix/quarternion、しかしこれは私が混乱するところです。私はquarternionsがより効率的であることを知っていますが、私はプレーヤーが直面している方向をどのように回転させるのかを正確にはわかりません。

誰かが四角形を構築し、それに私の顔のベクトルで乗算することの後ろの数学を説明できますか?

OpenGLとD3Dが異なる方法でベクターを表現していると聞いたことがありますが、どのように機能しますか?私はそれを正確に理解していない。

私は数か月で3D空間に入る前に、ゲームで基本線形代数のハンドルを取得しようとしています。上記の項目については、どんな助力もあります。

+0

質問の多くは、1つまたは別のライブラリの実装の詳細によって異なります。私は、最善のアプローチは "ベストフィット"のライブラリを選ぶことであろうと強く示唆しています。 IMHO ... – paulsm4

+0

アドバイスありがとうございます。飛び込んで、物事で遊び始めるのは、常に良いアイデアのようです。 – RedShft

答えて

1

あなたの位置を4D座標で表すことができますが、必要な次元(つまり2Dベクトル)のみを使用することをお勧めします。

方向は、ほとんどの場合、プレーヤーの位置から始まり、方向に沿ってポイントするベクトルとして表されます。したがって、(0,1)の方向ベクトルは扱いがずっと簡単です。 そのベクトルが与えられると、回転行列を使用できます。その場合、任意の軸を中心に回転させたくないので、クォータニオンは実際には必要ありません。 z軸の周りを回転させたいだけです。ヘルパーライブラリは、そのような行列を作成し、それを使ってベクトルを変換するメソッドを提供する必要があります(通常のように変換する)。

OpenGLとD3Dのベクトル表現の違いについてはわかりません。しかし、私は思う、それはあなたが心配したくないものでなければならないメモリ使用量に関するすべてです。

+0

お返事ありがとうございます。私は単位長のベクトルを使うことを考えていました。あなたが言ったように、それはより意味をなさないでしょうし、そのように扱いやすくなりました。また、quarternionsをクリアしてくれてありがとう、私は使用している数学ライブラリの背後にある数学を理解しようとしています。これは、Lengyelによる3Dゲームプログラミングのための数学を通して読んでいる理由の全体です。私は何が起こっているのかをよりよく理解しようとしています。 – RedShft

1

私はすべての質問に答えることはできませんが、「有効」であるかどうかに関しては、必要な情報がすべて含まれているかどうかによって完全に左右されます。

さらに、オブジェクトが向いていない方向ベクトルを非単位ベクトルとするのは少し奇妙です。基本的には、ベクトルが直面している方向を把握する時間の情報は必要ありません。単に0度またはラジアンから回転したラジアンまたは角度を把握できるだけで済みます。したがって、人々は通常、ラジアンや度を直接符号化するだけで、多くの線形代数ライブラリでそれらを使ってベクトル演算を行うことができます。

+0

私は応答を感謝し、私はまだこれらのアイデアに取り組んでいます。助けてくれてありがとう。 – RedShft

関連する問題