Nov 29, 2009

qt4-qtruby を Windows で : ツール導入編

Ruby から Qt を利用するための qt4-qtruby を Visual C++ 2008 Express Edition で利用できるようにするまでの作業メモ。
長くなったので「ツール導入編」「qt4-qtrubyビルド編」に分けました。

Perl

  https://www.activestate.com/activeperl/downloads/

から ActivePerl-5.10.1.1006-MSWin32-x86-291086.zip をダウンロード。 ここでは D:\Perl 以下にインストールした。

CMake

  http://www.cmake.org/cmake/resources/software.html

から cmake-2.8.0-win32-x86.zip をダウンロード。適当な場所へ展開しておく。パスを通すのは後で。

Ruby

1.9.1-p243 を利用。VC++2008 でのビルド手順はこちらで。
OpenGLを利用したい場合はこちらで。

ここでは d:\ruby19 にインストールする。
qt4-qtruby ビルド時に、インクルードパスを2個以上設定する方法が無い。これでは
ruby19/include/ruby-1.9.1/i386-mswin32_90/ruby/config.h
を見つけられないため問題となる。今回はこの config.h を
ruby19/include/ruby-1.9.1/ruby/config.h
としてコピーしておくことで対処した。

Qt : インストール

  http://qt.nokia.com/downloads

から qt-sdk-win-opensource-2009.04.exe をダウンロード。ここでは D:\Qt にインストール。

OpenSSL

Qt の側は OpenSSL のサポートを外せるものの、qt4-qtruby 側でそれができない(ガード無しで QSslSocket を参照してしまっている)。

  http://gnuwin32.sourceforge.net/packages/openssl.htm

から入手。
> cd openssl-0.9.8h
> ms\32all.bat
でビルド。ヘッダーファイルは
d:/Qt/2009.04/qt/include/openssl
に配置。

※ヘッダーファイルがシンボリックリンクになっていて使えない場合は

  http://downloads.sourceforge.net/gnuwin32/openssl-0.9.8h-1-lib.zip

を展開した内容から include のみを
d:/Qt/2009.04/qt/include/openssl
に配置することで対処。

ライブラリ(out32dllフォルダにある ssleay32.lib, ssleay32.dll, libeay32.lib, libeay32.dll) は
d:/Qt/2009.04/qt/lib
にコピー。

Qt : ビルド

"Visual Studio 2008 コマンド プロンプト" から、
> cd d:\Qt\2009.04\qt
> configure -release -shared -qt-zlib -qt-gif -qt-libpng -qt-libtiff -qt-libmng -qt-libjpeg -no-qt3support -no-webkit -no-scripttools -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" -fast
> nmake

qt4-qtruby ビルド編」に続きます。

Nov 14, 2009

Kindle : Wishlist (2)

Kindle Store からのリストアップその2。

Game Physics Engine Development : Ian Millington
http://www.amazon.com/dp/B001C4MZC4/

原著購入済み。Kindleだと半額なのか。
小さな物理エンジンを作って処理の流れを納得するための本。David Eberly 氏のGame Physics よりも実践的でおすすめ。ただしそのまま規模の大きな問題に適用できるシステムではないので過剰な期待は禁物ですが。

この本こそ翻訳されるべきものだと思うのだけれど、そんな話は無いものでしょうかね。



Artificial Intelligence for Games (The Morgan Kaufmann Series in Interactive 3D Technology) : Ian Millington
http://www.amazon.com/dp/B001UN2W70/

上記 Game Physics Engine Development の著者による本。


Artificial Life Models in Software : Andrew Adamatzky, Maciej Komosinski
http://www.amazon.com/dp/B000QCRB3Q/


Dynamic Simulations of Multibody Systems : Murilo G. Coutinho
http://www.amazon.com/dp/B001CN9JM4/



The Pragmatic Programmer : Andrew Hunt, David Thomas
http://www.amazon.com/dp/B000SEGEKI/

訳書はこちら:
  • 達人プログラマー―システム開発の職人から名匠への道: アンドリュー ハント, デビッド トーマス, 村上 雅章

Nov 13, 2009

Kindle : Wishlist

Kindle Store から欲しい本等をリストアップ。

Real-Time Collision Detection (The Morgan Kaufmann Series in Interactive 3-D Technology) : Christer Ericson
http://www.amazon.com/dp/B001086MGM/
購入第一冊目。訳書はこちら:
  • ゲームプログラミングのためのリアルタイム衝突判定: Christer Ericson, 中村 達也
The Art of Multiprocessor Programming : Maurice Herlihy, Nir Shavit
http://www.amazon.com/dp/B00245A4U0/

最近日本語訳が出ました:
  • The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで: Maurice Herlihy, Nir Shavit, 株式会社クイープ
Computational Geometry: Algorithms and Applications: Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars
http://www.amazon.com/dp/B0019JDOGS/

訳書はこちら、だけど新品は手に入らないらしい…

  • コンピュータ・ジオメトリ―計算幾何学:アルゴリズムと応用: 浅野 哲夫, M.ドバーグ

Nov 3, 2009

Pro C# : Chapter 11 の単語リスト


Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition の Chapter 11 : Delegates, Events, and Lambdas に出てきた表現・単語のメモ。
  • out of the box
    • adj. すぐに利用できる(箱から取り出したままの状態で)
  • crux
    • n. 最も重要なポイント
  • retrofit
    • v. (改良した)部品を組み込む
  • boilerplate
    • n. 定型的なソースコードの断片
  • prim and proper
    • adj. きちんとした、整った
  • showstopper
    • (コンピュータ分野限定、作業を止めてしまうような)不具合
    • ※通常だと「(ショーの進行を止めてしまうほどの)すばらしいもの」のことを指す

Jan 31, 2009

Ruby 1.9.1-p0 : VC++ 2008 Express Edition でビルド


「Ruby 1.9.1をリリースしました。」、ということで作業メモ。
  • OS は Windows Vista SP1 (Home Premium) です。
  • "D:\Programs\Microsoft Visual Studio 9.0" に VC++ 2008 をインストールしてあります。
  • ところどころで cygwin 由来のツール (wget、tar, gzip, bzip2) を使っています。
まずスタートメニューから「Visual C++ 9.0 Express Edition > Visual Studio Tools > Visual Studio 2008 コマンド プロンプト」起動。作業場へ移動します。
D:\Programs\Microsoft Visual Studio 9.0\VC> d:
D:\> cd tmp
D:\tmp>
ソースをいただいてきたら展開しておきます。
D:\tmp> wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2
...
D:\tmp> tar xvjf ruby-1.9.1-p0.tar.bz2
...
インストール先を指定して configure.bat を実行します。ここでは d:/ruby19 とします。
D:\tmp> cd ruby-1.9.1-p0
D:\tmp\ruby-1.9.1-p0> win32\configure.bat --prefix=d:/ruby19
Creating Makefile
confargs.c
type `D:\Programs\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe to make ruby.
D:\tmp\ruby-1.9.1-p0>
ビルドとインストールを実行します。
※ 'compiling tk' の部分で時間がかかります。Tkのヘッダーファイルが無いかどうか、様々なインクルードパスを試しているようです。
D:\tmp\ruby-1.9.1-p0> nmake
...
D:\tmp\ruby-1.9.1-p0> nmake install
...
D:\tmp\ruby-1.9.1-p0> d:\ruby19\bin\ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32_90]
ここまでの作業では RubyGems の実行に必要となる zlib.so がビルドされていません。以下で zlib.so のビルドとインストールを行います。 今 Ruby をビルドしたディレクトリはそのままにしておいて、適当な作業場へ移動します。
D:\tmp\ruby-1.9.1-p0>cd ..
zlib のソースコードをいただいて、ビルドを実行します。
D:\tmp> wget http://www.zlib.net/zlib-1.2.3.tar.gz
D:\tmp> tar xvzf zlib-1.2.3.tar.gz
D:\tmp> cd zlib-1.2.3
D:\tmp\zlib-1.2.3> nmake -f win32\Makefile.msc
D:\tmp\zlib-1.2.3> mt -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2
Makefile.msc にはマニフェストを埋め込む記述が無かったので、手動で埋め込んでいることに注意してください。
できあがった zlib1.dll を ruby.exe が配置されている場所にコピーしておきます。
D:\tmp\zlib-1.2.3> copy zlib1.dll d:\ruby19\bin
zlib.so のビルドを行います。Ruby をビルドしたディレクトリにある ext\zlib へ移動します。
D:\tmp\zlib-1.2.3> cd ..\ruby-1.9.1-p0\ext\zlib
D:\tmp\ruby-1.9.1-p0\ext\zlib>
extconf.rb を実行して、Makefile を作り直します。先に zlib をビルドしたディレクトリを渡して、インクルードファイル zlib.h やリンクに必要なスタティックライブラリの場所を伝えます。
D:\tmp\ruby-1.9.1-p0\ext\zlib> d:\ruby19\bin\ruby.exe extconf.rb --with-zlib-include=d:\tmp\zlib-1.2.3 --with-zlib-lib=d:\tmp\zlib-1.2.3
checking for deflateReset() in z.lib... no
checking for deflateReset() in libz.lib... no
checking for deflateReset() in zlib1.lib... no
checking for deflateReset() in zlib.lib... yes
checking for zlib.h... yes
checking for kind of operating system... Win32
creating Makefile

D:\tmp\ruby-1.9.1-p0\ext\zlib>
ビルドとインストールを実行します。
D:\tmp\ruby-1.9.1-p0\ext\zlib>nmake
...
D:\tmp\ruby-1.9.1-p0\ext\zlib>nmake install

Microsoft(R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

install -c -p -m 0755 zlib.so d:\ruby19\lib\ruby\site_ruby\1.9.1\i386-msvcr90

D:\tmp\ruby-1.9.1-p0\ext\zlib>
お疲れ様でした。

Nov 25, 2008

MPRTest : 円筒・円錐を追加


 
直方体の他に、
  • 円筒 (Cylinder)
  • 円錐 (Cone)
  • 球 (Sphere)
を追加しました。円筒・円錐それぞれのサポート写像には GJK アルゴリズムで使用するものをそのまま利用しています。 Gino van den Bergen 氏の著作が参考になります。
凸多面体同士の交差判定/接触点情報の算出を行う Minkowski Portal Refinement (MPR) アルゴリズム の実験プログラムです。

Nov 16, 2008

MPRTest


任意の凸多面体同士の交差判定/接触点情報の算出ができるという Minkowski Portal Refinement (MPR) アルゴリズム の実験プログラムです。




とりあえず直方体同士の交差判定のみ実装してあります。 MPR自体は接触点情報(※接触法線等)も算出可能です。詳細は Game Programming Gems 7 や XenoCollide (著者本人のサポートページ)で。
GJK(+EPA)アルゴリズムと同等の用途に利用でき、なおかつわかりやすくて数値計算的にシンプルでロバストであるというのが謳い文句です。流行るでしょうか。