2009-01-01から1ヶ月間の記事一覧

種型の練習

球の法線計算まで実装することができた。 前回つくりかけのベクターは当初想定していた程度のものは完成。 早速組み込んで使ってみた。 正規化忘れをコンパイル時に検出できるのは悪くない感じ。 C++のエクスプレッションテンプレート(よく知らないw)のよう…

やはりVectorを定義することにした

前回はベクトルを[Floating]で済ますことにしたが気が変わって ベクトルを専用型にすることにした。 正規化されたベクトルをclass型として強制したりするとhaskellっぽいような気がしたので 煩雑なだけかもしれないがやってみる。Vector.hs module Vector wh…

球との交差

球との交差まで実装。 ようやくコーディングが軌道に乗ってきた。 haskellの難しさというか取っ付きの悪さはシンタックスの問題だと思った。 関数型がどうとかモナドが云々という段階に達する前に 括弧の要不要、','の要不要、type constructorとdata constr…

まずは画像出力

http://www.ryanlothian.com/articles/haskell-raytracer に倣って画像出力から。 main=do writeP3 "tmp.ppm" width height (rendering width height) where width=256 height=256 writeP3::String->Int->Int->[RGB24]->IO() writeP3 filepath width height …

プログラミング以外のメモ

haskell用のctag $ find -name \*.\*hs | xargs hasktags .vimrcに追記すると便利かも autocmd FileType haskell :set makeprg=ghc\ --make\ % hackageのビルド $ runhaskell Setup configure $ runhaskell Setup build $ sudo runhaskell Setup install Set…

バイナリPPMの出力

調べるのにすごい苦労してしまった。 [Word8]がByteStringであることはすぐにわかったのだが Int->Word8の変換方法が見つからなくて難航。 たまたま検索でかかったコード辺からようやく判明した。 toEnumとするとInt->Word8にできるらしい。 リファレンスを…

PCL使ってみる

C++

http://www.xmailserver.org/libpcl.html とりあえず使い方をメモ。 #include <iostream> #include <pcl.h> struct co_wrap { void (*func)(co_wrap &arg); std::pair<int, int> result; bool isEnd; co_wrap(void(*_func)(co_wrap &arg)) : func(_func), isEnd(false) {} inline void r</int,></pcl.h></iostream>…

今度はHaskellでやってみようかと

年末からC++で書いていたRayTracerはマルチスレッド化したときに速度が低下する原因が 突き止められなくて士気が下がってしまった。 Intel TBBでもpthreadでも同じように遅くなるので書き方がよろしくないところがどこかにある。 なんらかの競合が起きている…

SDL.netを試してみた

C#でOpenGLを使いたい。 どうせならクロスプラットフォームにしたいということで とりあえずsdldotnet-6.1.0.tar.gzを入手。 解凍してexamplesにあるSdlDotNetExamples.exeを試してみた。 $ mono SdlDotNetExamples.exe Unhandled Exception: System.DllNotF…

quickfixを有効にする

Makefileを作っておく。 RayTracer.exe: RayTracer.cs gmcs $^ -pkg:dotnetvimで以下を入力する。 compiler: mcs これでmake時にエラー行に飛べる。csファイルを開いたら自動的にcompilerコマンドを入れる。 ~/.vimrc autocmd FileType cs :compiler mcs

メモ

http://mono-project.com/Mono_Basics //using System; //using System.Windows.Forms; public class HelloWorld : System.Windows.Forms.Form { static public void Main () { System.Windows.Forms.Application.Run (new HelloWorld ()); } public HelloWo…

mpdのSJISパッチをまた書いた。

cygwin用パッチとid3tag v2をSJISというかユニコード以外に対応させるパッチ(これはLinuxでも必用)を書いた。 http://gunload.web.fc2.com/mpd/index.htmlバージョンが上がる度にid3tagのところが書き変わっていてパッチを作り直さないといけないのだが 一向…

pthreadを導入

例によって速度低下orz う〜む。 実装としてはスレッドそれぞれが同じピクセルを弄らないという前提で 一切ロックしないで作った。 レンダリングの条件はオーバーサンプリングなしで通常のレイトレース。 光源はdirectional一個でシーンに鏡面・透明無し。 …

ファンクタと関数ポインタ両用の入れ物

c++

pthreadのラッパークラスをファンクタに対応させるべく、 clxのソースを見てどうやって関数ポインタとファンクタを一緒くたに扱っているのか調べてみた。 仕組みとしては仮想関数呼び出しをテンプレートクラスで継承する手法になっていた。 こんな感じ。 #in…

pthread練習

c++

そろそろやっとこうかと。 #include <pthread.h> #include <iostream> class Thread { pthread_t id; pthread_mutex_t mutex; pthread_cond_t condition; public: // used from main template<typename FUNC> void main_Start(FUNC func) { pthread_mutex_init(&mutex, NULL); pthread_cond_init(</typename></iostream></pthread.h>…

意外にもcygwinでMusicPlayerDaemonが動いた

http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki のcygwinへのインストールについて(mpd-0.14.1) けっこう頑張りが必要だがなんか適当にやったらできたのでメモ。 まず、 cygwinのsetup.exeのインストーラでcategory audioで要りそうなものをインストー…

usingはよろしくないと思うのだが・・・

C#の修行中にサンプルコードを見てて気になったのだが、 せっかくnamespaceにわけてあるものを丸ごとインポートするのが氾濫しすぎていると思った。 C#のusing, C++のusing namespace, pythonのfrom HOGE import * あたりがそうなのだが 他にもあるだろう。 …

はじめました

C#

事情によりC#のラーニングを開始。 むしろGentooにmonoをインストールしてそっちで修行開始。hello.cs namespace MyProgram { //using System; class Test { static void Main() { System.Console.WriteLine("Hello C#!"); } } }コンパイル $ mcs hello.cs $…

透明と反射を実装

延々とリファクタリングを続けてようやく前進できるようなった。 半歩戻って普通の再帰レイトレースを実装。

TinyJSONを改造してみた

{ // comment key: 99, HOGE: /* comment */ "FUGA" } というような2種類のコメントとクォートされていないkeyを許すように緩めた。 JSONの純粋性は損なわれたが実用性重視で。以下改造 diff --git a/include/tinyjson/tinyjson.hpp b/include/tinyjson/tiny…

mpl実験終了

boost::mpl::listで格納する型を指定できるUniformGridを作って それを使えるように一式書き換える作業が完了。 6割か7割くらいソースを弄るはめになった。 結果から言うと便利なのかどうか微妙。 まだちゃんと測っていないがboost::mpl::for_eachの実行は …

データ構造を模索

UniformGridににいろんな種類の形状を突っ込む方法を模索中。 インターフェースとしてはこんなのがあって、 Shape { result intersect(const Ray &ray); }; 具体的には、TriangleとSphereを格納したい。 ゆくゆくは無限平面とか曲面とかintersect関数が定義…

gimp-painter-入れてみる

http://www24.atwiki.jp/sigetch_2007/pages/20.html意外と手間取った、ていうかまだ作業中。普通にソースから/usr/localにインストールする 方向で作業開始。まずはインストール済みの安定版の2.4をunmerge。 gimpの最新版(2.6.4)のソースと件のパッチを入…

PathTrace?

年末年始モードを終えて通常モードに復帰。 文献を参考に適当にPathTraceを実装した。 あっているのかわからないがそれっぽいノイズが出現。 ToDo http://tpot.jpn.ph/t-pot/program/97_RayTraceMonteCarlo/index.html 見てやり直す。