「行列:行列の計算方法」の編集履歴(バックアップ)一覧はこちら
「行列:行列の計算方法」(2011/05/09 (月) 21:44:55) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p><strong>単位行列が初期化なのは何故か?という事を説明するには行列の計算方法を<br />
知らなければなりません。<br />
行列も普通の計算と同じで和差積商(加減乗除)があります。<br />
和は足し算、差は引き算、積はかけ算、商は割り算の事です。</strong></p>
<p><strong>行列と行列の和,差を行うには、行列の型が同じでなければなりません。<br />
つまり、行列Aと行列Bの和(または差)を行う場合、互いの行数と列数が<br />
等しくなければできません。<br />
例えば以下のようになります。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=wasa.png" /></strong></p>
<p><strong>続いて、行列の積ですが、まず、行列の実数倍という物があり、</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=jissu.png" /></strong></p>
<p><strong>そして、行列と行列の積は左行列の列数と右行列の行数が<br />
同じでなければできません。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=can.png" /></strong></p>
<p><strong>さらに、m行 p列の行列 と p行 n列の行列の積は m行 n列の行列となります。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=mn.png" /></strong></p>
<p><strong>具体的な計算の例を以下に示します。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=calc.png" /></strong></p>
<p><strong>行列の商というのはないそうです。(逆行列のような特殊なケースの場合のみ存在する?)</strong></p>
<p><strong>では単位行列の積を行うと、どういった事が起こるのか見てみます。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=iden.png" /></strong></p>
<p><strong>どうでしょう?左行列がそのまま解になっていますね。<br />
つまり掛け算で 1 を掛けるのと同じです。<br />
OpenGL では glMatrixMode(GL_PROJECTION); と glMatrixMode(GL_MODELVIEW); で<br />
行列を切り替えますが 単位行列を掛け合わせてやらないと、ずっと最終的な行列の値に<br />
行列を掛け合わせる事になります。<br />
では、次回、glLoadIdentity(); を置き換えてみます。</strong></p>
<p> </p>
<p> </p>
<p> </p>
<p><strong>単位行列が初期化なのは何故か?という事を説明するには行列の計算方法を<br />
知らなければなりません。<br />
行列も普通の計算と同じで和差積商(加減乗除)があります。<br />
和は足し算、差は引き算、積はかけ算、商は割り算の事です。</strong></p>
<p><strong>行列と行列の和,差を行うには、行列の型が同じでなければなりません。<br />
つまり、行列Aと行列Bの和(または差)を行う場合、互いの行数と列数が<br />
等しくなければできません。<br />
例えば以下のようになります。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=wasa.png" /></strong></p>
<p><strong>続いて、行列の積ですが、まず、行列の実数倍という物があり、</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=jissu.png" /></strong></p>
<p><strong>そして、行列と行列の積は左行列の列数と右行列の行数が<br />
同じでなければできません。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=can.png" /></strong></p>
<p><strong>さらに、m行 p列の行列 と p行 n列の行列の積は m行 n列の行列となります。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=mn.png" /></strong></p>
<p><strong>具体的な計算の例を以下に示します。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=calc.png" /></strong></p>
<p><strong>行列の商というのはないそうです。(逆行列のような特殊なケースの場合のみ存在する?)</strong></p>
<p><strong>では単位行列の積を行うと、どういった事が起こるのか見てみます。</strong></p>
<p><strong><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&act=open&pageid=102&file=iden.png" /></strong></p>
<p><strong>どうでしょう?左行列がそのまま解になっていますね。<br />
つまり掛け算で 1 を掛けるのと同じです。<br />
OpenGL では glMatrixMode(GL_PROJECTION); と glMatrixMode(GL_MODELVIEW); で<br />
行列を切り替えますが それらを単位行列にもどしてやらないと、ずっと最終的な行列の値に<br />
行列を掛け合わせる事になります。<br />
では、次回、glLoadIdentity(); を置き換えてみます。</strong></p>
<p> </p>
<p> </p>
<p> </p>