Skip to main content

Posts

Showing posts with the label Computer Graphics

マルコフ行列の中の著者達 Part 2 (5): English author result

イギリスの著者の結果 Table 7: English author rank result in de wikipedia. Table 8:English author rank result in en wikipedia. Table 9: English author rank result in ja wikipedia. (Our page rank implementation can only find 29 valid authors.)

マルコフ行列の中の著者達: どの著者がもっとも人々に影響を与えたのか? (20)

前回,「数学が数について考えなくなる」ことを述べた.これに関しての話をしよう. ある種のすぐれた文学や音楽の中に時に数学に関する深い洞察をみつけることがある.バッハの音楽にみられる数学的形式,俳句に見られる厳密なパターン,夏目漱石の数学的洞察,そしてそれを感情のゆさぶる粋にまで高める芸術性.数学を学んだおかげで驚くべき一面を見ることができたのは楽しい. 中島敦の「名人伝」という作品をご存知だろうか.私は「弟子」も「李陵」も好きだが,この「名人伝」がとても好きだ.矢の名人が更にその段階を越えていき,名人の中の名人から次の言葉を聞く.「それは所詮射の射というもの,そなたはいまだ不射の射を知らぬと見える.」弓を持って矢を射るのでは所詮弓矢の世界を越えられぬ.その世界を越えるには,弓を持たずして矢を射る世界に入るのである. この中国の古典を元にした日本の作品を人々に説明すると冗談と思われてしまうことが多々あり,私は説明に苦労する.日本語では数学は数の学問であるが,この時点に来た時,我々は数を忘れる.「数を使って数学をするのでは所詮数の数に過ぎぬ.そなたいまだに不数の数を知らずとみえる.」数学が数の操作ではなく数を忘れ,操作そのもの(演算子)の可能性について論じ始めた時,数学は転換期を迎えた.引き算が生まれた時,人々はできない引き算があることに気がついた.たとえば,3 - 5 は計算できない.これはマイナスの数が発明されるまで問題であった.できない計算があると気がつくと,これまでの演算にも疑いが生じる.足し算はいつもできるのか? 大きな数になると足せないことがあるのかもしれない.知っている特定の数だけではなく,全ての数に関して足し算はできるのだろうか? 割り算にもやはり演算ができない場合があった.3/5 は分数がなければ計算できない.マイナスの数を発明しても 3/5 は計算できない.いったいこれはどこまで続くのか? 一つの演算子だけではない,全ての演算子について考えることはできるのだろうか.一つの数だけでなく,全ての数について考えたように.操作の結果の集合が何であるかについて考えることを提案したガロアの仕事が革命的であったのは,彼が数の数学から,操作の数学へと飛翔したからであると私は思う.計算機科学でも同じである.プログラムで数を与えて数を返す基本的な関数から,...

How to get the camera parameters from OpenGL perspective/modelview matrix? (2)

モデルビュー行列からカメラのパラメータを計算する. modelview matrix は model に作用する matrix も含んでいるので,シーンがスケール,移動,回転されていたりするとその効果が含まれている.これをmatrixの情報のみを使って分離する方法はない.そこで,ここではシーンに対するtransformation matrix は Identity matrix, つまり全てはカメラの効果としてカメラのパラメータを抽出する.もし,シーンに対する効果が分離されているようなレンダラと OpenGL レンダラを併用する場合には,この transformationmatrix を undo する必要がある. modelview matrix は以下のような成分になっている.この成分の詳しいことに関しては私の以前の blog( http://shitohichiumaya.blogspot.de/2011/01/what-matrix-glulookat-generates-1.html )を参照のこと. \begin{eqnarray*}  \left[   \begin{array}{cccc}    x_x & y_x & z_x & 0 \\    x_y & y_y & z_y & 0 \\    x_z & y_z & z_z & 0 \\    -(\vec{x} \cdot \vec{e}) &     -(\vec{y} \cdot \vec{e}) &     -(\vec{z} \cdot \vec{e}) & 1 \\   \end{array}  \right] \end{eqnarray*} 4行を \(a,b,c\)で置きかえるとこの行列は以下のように書ける. \begin{eqnarray*}  \left[   \begin{array}{cccc}    x_x & y_x & ...

How to get the camera parameters from OpenGL perspective/modelview matrix? (1)

Abstract この話はコンピュータグラフィクスとプログラミングの話である.以前 gluLookat 関数の作る Matrix に関して書いた( http://shitohichiumaya.blogspot.de/2011/01/what-matrix-glulookat-generates-1.html ).この記事を書いた動機はOpenGLとは独立したレンダラ(ray tracer など)を書いており,しかし OpenGL と画像をoverlay したいということがあったからである.そういう意味では特殊な話であるがこの記事は意外に参照されている.今回,我々の顧客が特殊なシステムを利用していて,この逆演算をする必要がでてきた.つまり OpenGL のProjection/Modelview matrix からカメラのパラメータを知りたいという要求である.これについてここに書いておく. はじめに 世の中にはいろいろな可視化システムがあるもので,可視化システムのカメラのパラメータが不明,つまりカメラがどこにあるのかわからない,というものがあるようだ.話を聞くと実は OpenGL に依存した大規模なシステムで,あるソフトウェアのレイヤーではカメラのパラメータがわからないという状況のようだ.しかし,OpenGL を使っているので,projection matrix と model view matrix にはアクセスできるということである.そこでこれらの matrix からカメラのパラメータを抽出する方法というものを尋ねられた. これはちょっと特殊な状況であると思うが,OpenGL の Projection/Modelviewmatrix が与えられた場合に,カメラのパラメータを抽出するにはどうするかというパズルとして考えれば面白いかもしれないと思い,ここに blog として記す. パースペクティブ行列からカメラのパラメータを計算する. まずは Perspective matrix に関連したパラメータを取りだそう. gluPerspective 関数は以下のような関数である.詳しくは OpenGL の manual を参照のこと. void gluPerspective(GLdouble fovyd,  GLdouble a...