こんにちはゲストさん(ログインはこちら) | 読書ログ - 読書ファンが集まる読書レビューサイト →会員登録(無料)


(株)工学社 (コウガクシヤ)

企業情報
企業名:工学社
こうがくしや
コウガクシヤ
コード:87593 7775
URL: http://www.kohgakusha.co.jp/
      3D-CGプログラマーのためのクォータニオン入門 「ベクトル」「行列」「テンソル」「スピノール」との関係が分かる!

      金谷一朗2004/01

      カテゴリー:情報科学
      5.0
      いいね!
      • 気まぐれにVoiceを変えてみようと文体を変えてみたものの、やっぱり合わないのでもとに戻してみます。

        さて、本書は3DのCGにおける座標の回転によく使用されるクォータニオン(四元数)について説明しています。
        3次元座標の計算ではよく3行3列の行列が使用されるのですが、四元数を使用することによりわずかに計算に掛る時間(コスト)を減らすことができます。四元数とは実数成分1に虚数成分3の計4成分を持った数の事です。

        そう聞くと平凡な技術書のように見えるかもしれませんが、本書の説明アプローチが興味深いのですね。四元数の計算の説明を行うのが目的の本のはずなのに、本書、実数を例に数の定義から説明するのです。実数を起点に虚数(実数成分1、虚数成分1)、行列、ベクトルといったものの性質を説明しつつ四元数の説明に移っていきます。実に演繹的です。仕様書なんかも角在ると素晴らしいです。

        さて、数が数であるために必要な条件、すなわち
        ・足し算ができる
        ・和の単位元がある
        ・和の逆元がある
        ・掛け算ができる
        ・積の単位元がある
        ・積の逆元がある
        です。
        これらのinterfaceを持つ概念を数と呼ぶ、というのが数の定義なのです。

        本書、数学的側面から四元数を説明しているのですが、もう一つの側面としてC++を用いた性質の実装の説明を行っているのです。この絡め方が面白いのです。上記はクラスに対する操作(method, メンバ関数)として実装されます。ここで思い出してみてください、演算子(+とかxとか)は関数呼び出しの省略表記(syntax sugar)に過ぎないことを(operator overloadの正当性)。そして上記の説明を導入すると見えてくるのは概念の中身がその概念をそれたらしめるのではなく、その概念の持つinterface、もしくは操作、振舞いがその概念をそれたらしめているという事。即ち形式です。

        私たちは従来クラス設計において実在する概念をクラスで表すよう(自然であろう)、それぞれの役割に着目するよう(identityを大事にしよう)設計してきました。そうしないと概念というものはあまりにも自由に設定できてしまうため、設計自体が安定したものに収束しないからだったはずです。が、その概念をそれたらしめているのはそれの振舞い、interfaceであると定義してしまったのです。つまり、設計収束の制御法則とはinterface定義とそれらの無矛盾性にあると。

        でも、これはある意味当たり前のことなのです。encapsolationによって概念の内部を利用者から隠蔽する("正しい動作"を保障するという意味)という事は不具合が発生する要因はinterfaceの不整合に他なりませんから・・・。どのような概念定義であっても良いと言う自由、ただしinterfaceに矛盾があってはいけないという制約を用いて、現状を解釈し投影している事に他ならないのです。

        さて、ここに多相の概念を導入するとどうなるのかという所に興味があるのですが、それはこれからの課題として、本書の結びの言葉を最後に紹介します。

        「我々は「CG」というインスタンスを抽象化(オブジェクト化)した、数学というクラスについて学んだのである。」

        ソフトウェアの世界もそれの根拠、拠り所を求め始めるととても意趣深くなります。さながら、リアルダビンチコードのようなミステリーになってしまいます。面白いですよ。

        3D CG処理に関わらなくてはならなくなった人、もしくはちょっとだけ四元数に興味を持った人にお勧めです。
        ---
        BGMが四拍子だったから、から始まって、四行非定型文の四部構成(ヘッダとフッタを除く。四元数なので四行四列の正方行列の特殊系かなと思ってみたり(読みかけなりに)。)を伏線として、四元数へと繋ぐというちょっとした表現実験を行ってみました。
        >> 続きを読む

        2013/08/15 by Shimada

      • コメント 5件
    • 2人が本棚登録しています
      はじめてのCUDAプログラミング 驚異の開発環境「GPU+CUDA」を使いこなす!

      額田彰 , 青木尊之2009/11

      カテゴリー:情報科学
      4.0
      いいね!
      • 普通のパソコンに乗っている普通のグラフィックカードを一般的な計算処理に使う方法を解説した本。GPGPUが世間で騒がれるようになった頃、GPGPUやってみてーと思って購入したものの、仕事で使う事を要求されることがついぞなく6章ぐらいまで読んで数年間ほったらかしになっています(しかもその間別のCUDA本買ってるし)。パーソナルコンピュータ(PC)が一般家庭に普及しだした90年台後半、グラフィックアクセラレータ(あるいはグラフィックカード)というものをCPUとは別に用意して画像処理をそちらに委託するアーキテクチャが一般になりました。これはGUIベースのOSやアプリが一般になった事に加え、PC向けゲームが流行ったためでもあります。CPU上で画像処理することも可能ですが、その場合、大量の画像用データの処理の為CPU処理時間を多く使用してしまい、他の処理が行えなくなってしまい、また、アーキテクチャや命令セットが画像処理に特化していないため、画像処理のパフォーマンスもそれほど上がらない為、別に専用ハードウェアを搭載することが一般的になりました。ところが90年台後半から2000年台中盤までのPC向けゲーム(特に洋ゲー)の流行は特筆すべきものがあり、そこに半導体の微細化・高集積技術の発展が重なり、グラフィックアクセラレータの発展は目覚ましいものがありました(そこに当て込んだMicrosoftのDirect XやOpen GLの間口の広さとインターフェース統一という使い勝手のおかげでもありますが)。初めの頃のグラフィックアクセラレータは3Dジオメトリ計算やラスタリングといった機能を固定機能で提供していましたが、時を経るにつれ機能の自由度が上り、プログラマブルシェーダと呼ばれる機能が搭載されるようになりました(Direct X10)。3Dグラフィックの処理には光源-描画対象物(ポリゴンモデル)-カメラ(簡単にいえば画面)の間での光線ベクトル(色の要素毎(基本RGB)の強さを重さとして光の向きとセットにすることでベクトルとして扱う)とその反射/遮蔽を計算する処理があり、この処理の行い方如何で様々なエフェクトを表現することができます。これを陰処理(シェーダ)と呼び、これをソフトウェアで行う物をプログラマブルシェーダと呼びます。さて、ここで取り扱う画像データ(ビットマップやベクトル値や座標値)、本当に画像でなくてはいけないのでしょうか?画像データといってもバイナリになってしまえば区別はつかず、そもハードウェアに与えられたデータが画像であるかを判断する機能は無いのです。ならば、画像の振りをして一般の計算データを与えるのはアリなのか?実はアリなのです。それが、GPGPU。プログラマブルシェーダ用の特殊言語CUDAでデータの処理を記述し、画像データの振りをして処理したいデータを渡す。すると、グラフィックカードに搭載されたGPUの画像処理用のハードウェアを利用して高速にデータ処理が行える。PCゲーム市場要求に牽引されて発展したGPUには簡素ながらも多数のArithmetic Logic Unit(ALU・要するにソフトウェア命令に従って実際にデータ処理をするモジュール)が載っており、これらは並列にデータを処理します(ただし、FPGAと異なり、マルチコアCPUのように逐次処理の流れが複数並列に走っています)。nVidia的にはALUをStreaming Multiprocessorと呼んでいるようですが。現在のマルチコアCPUが2コア~8コアほどが一般的な中、十数コア~数十コアが普通に乗っている物が既にそこにあったというわけです(GPU)。上手く使えば十数年前のスパコンの計算性能が十万円で手に入るわけです(実際スパコン等でもGPU搭載型のものは増えてきています)。というわけで使ってみたくて購入したものの、ほっぽらかしになっています。そろそろまた試してみたくなってきました。
        仕事で大量の算術計算を行うプログラムの開発を依頼されたものの、予算が無い、でもプログラミングの腕には自信がある、もしくはGPUを理解してゲーム等を作ってみたくなった人にお勧めです。
        >> 続きを読む

        2013/01/14 by Shimada

      • コメント 1件
    • 1人が本棚登録しています
      仕様記述言語「Z」(ゼッド) 「仕様」の数学的構造化に「自然言語」を使う!

      赤間世紀2010/11

      カテゴリー:情報科学
      5.0
      いいね!
      • 'Z'と呼ばれる形式仕様記述言語に関する分かり易い解説本。形式仕様記述に関する数学的/技術的理解への非常に良い橋渡しとなります。形式という数学用語があります。英語での単語はFormalとなり、形式検証はFormal Verificationとなり、公式の検証(Verification performed in formal=Formal Verification)と誤解されますが、これに関しては日本語訳の方が誤解のしようが無いので優秀です。ここでの形式とは論理式(あるいは数式)の構造の事を意味しています(この辺の分かり易い説明は数学ガールのフェルマーの最終定理編かゲーデルの不完全性定理編を読めば概要が掴めるかと)。例えば、a+bという式があった時に、aやbが何であってもa+bに当てはめ得る法則や公式には変わりは無い。ならば+という演算子の振舞いとその両側に記述上記載されているa, bというシンボルで暗喩されている概念に当てはまりそうなものの集合(integerとかrealとか)を定義できれば、それに対して有効な法則、公式は特定できる(演算子なんて所詮関数のシンタックスシュガーですよ。add(a,b)とa + bは所詮等価ですよ。)。この為には使用できる公理の集合とその公理の集合が適用できる対象の特定が必要でした。この二つをセットにしたものが形式仕様記述言語だと思います(当然そのためには文法が厳密に定義されている必要があります)。そして、その際に使用できる公理の集合(互換性のある法則集合)の一つが、'Z'即ちツェルメロ集合なのだと思います。他にも公理の集合はいくつかありますが、それぞれ適用できる範囲は異なります(Zも同様)。そして、最終的には要求も仕様もコードも論理式の集合なのです。
        'Z'という形式仕様記述言語は全自動の無矛盾性(correctness)の証明は行えません(手動で証明を行うか、Coq等をガイドに手動で証明するか、形式検証可能な言語への変換を行うかする必要があります)。が、'形式'的な仕様の記述への良いガイドとはなってくれます。この辺の事情を歴史的背景から'Z'という(実際にはZFC公理系ですが)言語、そして述語論理~一階述語論理(論理式のその時の実行結果ではなく、その論理式の性格を表す論理式)や集合論といったものを踏まえて説明してくれます。
        これらを分かり易く簡潔に説明しているので、これから形式仕様記述に関わる人、もしくは仕様を記述しなくてはいけない人にお勧めです。きちんと向き合えば、形式言語前と後では仕様の記述の質に大きな違いが生まれるのでお勧めです。
        >> 続きを読む

        2012/12/19 by Shimada

      • コメント 4件
    • 1人が本棚登録しています
      「Scilab」&「Xcos」で学ぶ現代制御 グラフィカルなシミュレーションツールを活用!

      多田和也 , 工学社2013/08

      カテゴリー:情報工学
      3.0
      いいね!
      • MATLABを持っていなかったので、scilabを学ぼうと思い購入。

        現在はMATLABを使用しているので最近はあまり開いていない。

        [会社の費用で購入]
        >> 続きを読む

        2016/02/10 by ken20co2

    • 1人が本棚登録しています
      DirectX 9実践プログラミング 書籍版

      I/O編集部2003/09

      カテゴリー:室内娯楽
      3.0
      いいね!
      • Windows上でのゲーム開発に必要不可欠な技術、DirectXの9版の使用方法に関する簡単な解説書。

        若かりし頃、ゲームの開発が行ってみたくて、独学で勉強していた頃の一冊。

        今の最新のDirectX11と比べるとだいぶ古いものの、基本はあんまり変わらずです。確かこの辺りからプログラマブルシェーダという概念が入り込んできて、GPGPU(グラフィックボードを用いた汎用計算)に向かっていくんですよね。

        中身はその他よくある本と同様、DirectX9のライブラリの使い方を関数呼び出しやソースコードのレベルでの解説といった非常に具体的な内容が主になっています。また、画像処理の処理の流れやデータの流れを大雑把に解説しています。

        カバー範囲はDirectXの主要機能を一通り解説していて、
        ・Direct Graphic(2D/3D)
        ・Direct Sound(waveの再生と合成)
        ・Direct Music(MIDIの再生)
        ・Direct Play(ネットワーク)
        ・Direct Input(JoyStickやKey Board)
        ・Direct Show(動画)
        となっています。

        これを読んで何ができるようになるという訳でもないのですが、DirectXを使用する際の設定や主要な関数の使い方を覚えるのに便利です。

        /*昔は仕事で行き詰るとゲーム開発を行おうとする傾向があったんですよね。結局途中で開発止まっちゃうんですけど、でも若かりし頃はオブジェクト指向もSoftwareの設計技術もこうやって身に付けていた気がします。*/

        大雑把な全貌と基礎(COMオブジェクト周り)は大して変わら無い筈なので、DirectXに興味がある人にお勧めですが、最新のDirectX11向けの本を探すのがよりお勧めです。

        /*ホント、Softwareの世界は光陰矢のごとしです。*/
        >> 続きを読む

        2014/01/26 by Shimada

      • コメント 3件
    • 1人が本棚登録しています

【(株)工学社】(コウガクシヤ) | 読書ログ - 読書ファンが集まる読書レビューサイト(出版社,発行所)

会員登録(無料)

今月の課題図書
読書ログってこんなサービス
映画ログはこちら
読書ログさんの本棚

レビューのある本