3Dグラフィックス数学(数学における3Dグラフィックスの血を嘔吐)でのクラッシュコース

月曜日〜金曜日、日、時間の更新の午前7時北京時間 -

まず、私たちは、あなたが知っているために(まず第一に、私たちはあなたにとって重要な事柄のすべてをカバーするために、ここではないでしょう)が重要である、すべてをカバーすることをここふりをするつもりはありません。実際には、私たちもカバーしようとしませんすべてはあなたが(実際には、私たちも、あなたが知っておくべき事柄をカバーしています)知っている必要があります。この章では、私達はちょうどあなたが本当に(このセクションでは、我々は唯一のあなたが知っている必要があり、それらを導入知っておくべきことをカバーしようとしています何か)。すでに数学の達人している場合は、標準の3D変換(あなたも数学を学ぶ必要がある場合、あなたはこの段落を飛ばしてください)上の前方の部分にすぐに進んでください。あなたがだけでなく、すでに我々がカバーしようとしているか知っているが、ほとんどの数学のファンは、我々は(だけでなく、あなたはすでに我々が紹介したいものを知っているので、多くののための均質な座標空間の自分の好きな機能に十分なスペースを与えなかったことを多少不快になります数学まくる、彼らも)言いませんでした。この段落のお尻は考えられないでしょう。あなたはワニでいっぱい仮想沼をエスケープする必要があり、それらのリアリティテレビ番組の1(ゲームで脱出ワニの完全な仮想沼からのもので、芸術のチャンネルを想像してみて(これが見られるかもしれないものを、著者自身のバラエティ番組、フランスを想像してみてああを想像することができますグラム、))。あなたが本当に3D数学がそれを必要とするどのくらい、生き残るために(生き残るために知っておく必要がありますどのくらいの3D数学?)?それは次の2つのセクションでは、およそ-3D数学の生存であることを行っているものですあなたが本当に均質な座標空間を知っている場合はスキル(次の2つの小さなセグメントは、3D数学を存続する方法についてです)。ワニは気にしないあなたが本当に同次座標を知っていれば、その後、ワニに言及していない、(あります毎分)は、その肉質を食べる彼のガールフレンドの顔の前に懸濁または殴らすることができます

ベクター、またはどっちがどれですか?(ベクタまたは何何ですか?)

OpenGLのメイン入力(入力データのOpenGLは、頂点であり、それは通常、このプロパティの位置を含む)は、通常の位置が含まれる属性の数を有する頂点である。基本的に、これはXYZにおける位置座標空間であり、そして空間内の所与の位置を正確に一つ及び一つだけユニークXYZトリプレット(基本的に与えられた空間内でこの位置にのみ存在する)によって定義される。XYZトリプレットが、ベクトルで表すことができる(IN事実、心の数学的に純粋なため、位置があまりにもそこに実際にベクトルで、我々は)あなたに骨を投げた(XYZの場所は)表現するために、ベクターを使用することができます。ベクトルは、おそらく理解するための単一の最も重要な基礎的な概念でありますそれは(x、y、zは)組み合わせたこれらの3つの値が2つの重要な値を表す:.方向(男性は、ベクターは、おそらくA単一の最も重要なことであるとき、話し始めたとき、3Dジオメトリ)は、3Dジオメトリを操作することになると大きさ(2つの非常に重要な事柄を発現することができる3つのベクトル:パーティー そして、長さ)

図4.1は、空間内の点(任意に選んだ)と空間でその点に座標系の原点から引き出される矢印を示している(図4.1は、空間内の点を示し、座標原点から出射され、ポイントに向けられあなたが一緒に三角形をステッチしているが、矢印がベクトルとして考えることができたときに、矢印)。ポイントは(この点は、あなたがその三角形のデータをつなぎ合わせるために行くように、しかし、この矢印が可能に処理することができ頂点と考えることができますベクターとして見られる)。ベクトルが最初であり、最も単純に、原点から空間内の点に向かう方向の最初の単純な式(方向における原点からのベクトルポインティング)。我々は、ベクトルのすべての時間を使用しますOpenGLで指向量を(OpenGLで、我々は常に、ベクトルデータの方向を記述するために使用される)を表すことができる。例えば、x軸は、ベクトル(1、0、0)(x軸であり、そのようなベクトルは(1,0,0 ))。これは、x方向に正の一つの単位を移動すると言い、y及びz方向でゼロ(単一のX軸正方向のポイント意味 そして、距離y、z方向の距離0単位に)。ベクターは、カメラ指している方法、我々は行く-ためされている場合の例を指し方法もあります
3Dグラフィックス数学(数学における3Dグラフィックスの血を嘔吐)でのクラッシュコース
ベクターは、(それぞれ、3及び4要素のベクトルを表す)を様々な大きさのベクトルはGLSLにおけるファーストクラスタイプであり、そのようなvec3とvec4などの名前を与えられているのOpenGLの動作に非常に基本的である(ベクトルOpenGLで多くの動作であります基礎は、ベクトルデータの数に応じては、ベクトルが表すことができる第2の量は、大きさ(第2の長さが何であるかを発現できるベクター)である)このようvec3、N次元ベクトル、例えばvec4に分割されています。ベクトルの大きさ(マグニチュードベクトルの長さがポイントの量なので、外国の学位は、この基本的な考え方が知っているに滞在する前に、我々は文字通り成長することができます)ベクトルの長さです。私たちのx軸ベクトルについて(1、 0、0)は、ベクトルの長さは、我々のベクター1(x軸は、その長さは、我々が呼ばれるのみ1単位ベクトルの単位ベクトル(ベクトル長呼び出し1の長さを持つ1)。ベクトルであります)ベクトルは単位ベクトルではなく、我々はそれ1作ってそれを拡張したい場合は、我々はその正規化(ベクトルの長さが1でない場合は、私たちを呼び出します その長さに1になり、その後、このプロセスは)ユニット化と呼ばれています。

ベクトル(および行列)は彼らはあなたがあなたのシェーダ(ベクトルや行列は、あなたがシェーダを書くとき、彼らはしていることが重要なのである書き込みいるGLSL言語でのFirstClass市民で3Dグラフィックスにおける重要な概念であります(ただし、C ++は、この貨物をサポートしていません)しかし、これはC ++のような言語ではそうではありません。)GLSLのネイティブサポート。あなたはこの本のソースが設けられており、あなたのC ++プログラム、vmathライブラリ、でそれらを使用できるようにしますコード、彼らのGLSLの対応と同様に命名されているベクトルや行列を表すことができ、クラス(あなたはまた、C ++プログラムを使用することができます可能にするために、vmathライブラリは、その名前を能力のこの部分を提供し、盗作を使用します書いたが含まれていますGLSL内部が)例えば、vmath :: vec3は、三成分浮動小数点ベクトル(X、Y、Z)、vmath :: vec4は、4成分浮動小数点ベクトルを表すことができる(X、Yを表すことができZ、W)など3つの浮動小数点数で(例えば、vmath :: vec3ベクターを発現することができ、vmath :: vec4 4浮動小数点数で表現 ベクトル、など)。W座標は、ベクトルを均質にするために添加されるが、典型的に(値が実質的にその人1.0であり、ベクトルが奇数そのようなベクターに成分w)は1.0に設定されている。x、y、zの値は、後に分割されるかもしれませんそれが1.0である場合、実質的に単独でXYZ値を残す、Wで。クラスを(それは1時間である場合、X、Yの値は、zはバック中のWに加えてもよく、値XYZは変わりません) vmathで、実際に、このようなシングルおよび倍精度浮動小数点値、およびsigned-と符号なし整数の変数などの一般的なタイプを表すために、型定義とテンプレートクラスです。(原則が明確テンプレートでない場合vmathは、それを使用すること自由に感じ、テンプレートクラスでありますアカデミーは、新しい社会主義の田舎の建設をサポートし、大学の田舎に開催され、私たちは厳粛に1が1を取得購入、約束老人に追いつく、限り9 8として、もちろん漢C ++トリックを見ることができます!強い女の子を送信するためにコースを購入し、9 8欠点を購入することはできません、ハハハッハッハ、9 8、9 8あなたが買うことができない何をしてだまされて購入しない。しかし、深刻であることを、特に学生はコアエンジンを記述する必要があります あなたが他の人のC ++テンプレートライブラリは非常に有用である誰かの使用方法を読んだ後、最後にC ++のコードを実行する時に、綿密見て立ってみましょう)vmath :: vec3とvmath :: vec4 vmath(次のように単純に定義されています。 :以下に定義vec3とvmath :: vec4)これは、それが1.0である場合、実質的に単独でXYZ値葉(xの値を、Y、Zは、それが1時間である場合、値XYZは変わらないバック中のWに加えてもよい)。vmathのクラスれますそのようなシングルおよび倍精度浮動小数点値、およびsigned-と符号なし整数の変数などの一般的なタイプを表すために、型定義と、実際にテンプレートクラス。(テンプレートの原則を知らない場合vmathは、それを使用すること自由に感じ、テンプレートクラスでは見ることができますイースタン大学C ++トリックコース、限り9 8、老人に追いつくが、大学の田舎で開催されているとして、新しい社会主義の田舎の建設をサポートし、私たちは厳粛に1が1を取得購入、約束!強い女の子、9 8買いを送信するためにコースを買います欠点は、9 8、9 8あなたが買うことができない何か、ハハハッハッハをだまされて購入しない。しかし、あなたは最終的にはC ++コードでの綿密な表情を立つように、深刻であることを、特に学生は、コアエンジンを記述する必要がありますなぜ、他の人がC ++テンプレートライブラリは非常に有用である使用方法について読んだ後。)vmath :: vec3とvmath :: vec4(vmath :: vec3とvmath :: vec4のを次のように単純に定義されています 以下に定義)これは、それが1.0である場合、実質的に単独でXYZ値葉(xの値を、Y、Zは、それが1時間である場合、値XYZは変わらないバック中のWに加えてもよい)。vmathのクラスれますそのようなシングルおよび倍精度浮動小数点値、およびsigned-と符号なし整数の変数などの一般的なタイプを表すために、型定義と、実際にテンプレートクラス。(テンプレートの原則を知らない場合vmathは、それを使用すること自由に感じ、テンプレートクラスでは見ることができますイースタン大学C ++トリックコース、限り9 8、老人に追いつくが、大学の田舎で開催されているとして、新しい社会主義の田舎の建設をサポートし、私たちは厳粛に1が1を取得購入、約束!強い女の子、9 8買いを送信するためにコースを買います欠点は、9 8、9 8あなたが買うことができない何か、ハハハッハッハをだまされて購入しない。しかし、あなたは最終的にはC ++コードでの綿密な表情を立つように、深刻であることを、特に学生は、コアエンジンを記述する必要がありますなぜ、他の人がC ++テンプレートライブラリは非常に有用である使用方法について読んだ後。)vmath :: vec3とvmath :: vec4(vmath :: vec3とvmath :: vec4のを次のように単純に定義されています 以下に定義)

typedef Tvec3 vec3;
typedef Tvec4 vec4;

(以下に述べるように3次元のベクトルの一例)は、3つの成分ベクトルを宣言することと同じくらい簡単です

vmath::vec3 vVector;

あなたが名前空間vmathを使用して含まれている場合、ソースコードで、あなたも書くことができます(あなたがあなたのプロジェクトに名前空間のすべてに直接vmath場合、あなたもこれを使用することができますようにvmath以下)

vec3 vVector;

しかし、これらの例では、我々は常に明示的にvmath ::名前空間(この名前空間を使用するには、しかし、これらの例では、私たちがまだ表示されますvmath)。vmathのすべてを使用することによりvmathライブラリーの私達の使用を限定しますよクラスは次のようにベクトルを宣言し、初期化することができることを意味、コンストラクタの数を定義し、演算子をコピー:( vmathすべてのクラスはコピーコンストラクタと演算子の数を定義する、すなわち、それはこのように書きすることができますライブラリを使用します)

vec3 vmath::vVertex1(0.0f, 0.0f, 1.0f);
vec4 vmath::vVertex2 = vec4(1.0f, 0.0f, 1.0f, 1.0f);
vec4 vmath::vVertex3(vVertex1, 1.0f);

今、このような三角形のような三成分の頂点の配列は、類似したコードを次のように三次元点を定義することができる(ように宣言することができる:)

vec3 vmath::vVerts[] = { vmath::vec3(-0.5f, 0.0f, 0.0f),
    vmath::vec3(0.5f, 0.0f, 0.0f),
    vmath::vec3(0.0f, 0.5f, 0.0f) } ;

これは、我々は、第2章で三角形を描くとき、​​とにかく、私は最初のを忘れていたように(これは長いそのコードに従わなければならない、我々は、第2章では、「私たちのファースト・トライアングルを描く」で紹介したコードのようになります。コードが長い鋸A)。vmathライブラリはまた、数学関連機能の多くを含んでおり、ベクトルや行列は減算、追加することができるように、そのクラスで最も演算子をオーバーライドする2つの章では、掛け転置など(vmathライブラリこれらのベクトルや行列は、基本的な算術演算を行うことができるように、多くの関連数学関数と演算子オーバーロードの多くのが含まれています)

私たちは、第四ワットの成分があまりにも多くの(私たちは、ベクトルwの鳥に魅了されていないことに注意する必要がある)ことをごまかすしないように、ここで注意する必要があります。あなたは頂点位置と形状を指定した時間のほとんどを、三成分の頂点がありますあなたは(ほとんどの場合、あなたは3次元ベクトルが十分にあるときに、幾何学的な図形のポイントを表現する必要があります)保存とOpenGLに送信するすべての。このような通常の表面など、多くの方向ベクトル、(のためのベクターは、垂直に向いて照明計算のために使用されている面)に、このような通常の3成分ベクトル十分で(多くは方向ベクトル、それは)3次元ベクトルのために十分である。しかし、我々はすぐ行列の世界を掘り下げ、そして意志3D頂点を変換する、あなたは(もちろん、私たちはすぐにマトリックスの世界に入るだろう、と我々は動作する3D点の4x4の行列を使用する必要があります)4×4の変換行列を掛けなければなりません。ルールはあなたが4×4行列による4成分ベクトルを掛ける必要があります(あなたが使用する必要があることに注意すべき 4x4の行列に次元ベクトル乗算演算);あなたがしようとすると、4×4行列で三成分のベクトルを使用している場合、

この日の翻訳は〜さようなら、明日お会いし、ここで取得します

最新のプロットを初めて取得し、東漢アカデミーと公共グラフィック番の心に注意を払ってください。

ハン・カレッジ、あなたはああをプレイするのを待ちます

おすすめ

転載: blog.51cto.com/battlefire/2424705