ぎょーむ日誌 2001-08-20 
 
	 
 2001 年 08 月 20 日 (月) 
 
	-  0700 起床.
		なぜか眠い.
		7 時間ぐらい寝たはずなんだが.
	
 -  朝飯・弁当の準備.
		あれ炊飯終ってない.
		タイマーの設定間違えたか.
		シャワー.
		朝飯.
		コーヒー.
		朝のラジオ,
		なんかヘンだ
		……
		腕時計で時刻を確認.
		0540.
	
 -  ……
		これは,
		つまり
		……
		昨晩,
		半分寝てるアタマで目覚し時計を設定したときに,
		間違えて時刻を 2 時間すすめてしまった!!
		うう.
		訂正.
		0500 起床.
		5 時間しか寝てない.
	
 -  とはいえ,
		気温高くなる前に移動したいので
		独房群にむかう.
		0555 自宅発.
		曇だけど日がさしている.
		特急に乗って
		0605 京急平和島発.
		普通に乗り換えて
		0635 京急上大岡発.
		0650 研究所着.
		いつもより 2 時間早くついてしまった.
	
 -  眠い.
		とりあえずメイル書いたり,
		
			matpack
		
		コンパイルしてみたり.
	
 -  matpack
		……
		こりゃあ,
		カンタンだわ.
		八木アンテナのローブを描画させる
		こういうデモプログラムなんかも入っていたんだけど,
 
        #include "matpack.h"
        int main (void) 
        {
                Scene scene;
                ...
                scene.Transform(...)
                ...
                scene.AddLight( Vector3D(-0.5,-4,0.5),  white, 1);
                ...
                Vector3D camera_position( distance, 1.2*distance, 1.4*distance), 
                         look_direction (-distance,-1.2*distance,-1.4*distance);
                scene.Look(camera_position, look_direction, FieldOfView(45), 0);
                ...
                MpImage image(size,size);
                scene.Open(image);
                ...
                scene.Show();
                ...
        }
                image.WritePngFile("isosurf-demo3.png");
		と追加するだけで,
		下のような図を PNG ファイルとして出力してくれる.
		出力先は各種ビットマップだけでなく,
		Postscript なども含まれている.
		なかなかよさそう.
	-  おっと,
		こんなことやって遊んでいたらもう 0900 か.
		朝から何をやってんだか.
	
 -  とりあえず Abis PipeTree を側面から支援するはずの
		VitPolygon クラスを定義してみる.
	
 -  途中で 1 時間ほど,
		これまた仕事と関係ない,
		Perl モジュールの導入というか
		
			perl -MCPAN -e 'install ...'
		
		が使いこなせなくてぢたばたする.
	 -  VitPolygon の基底たる Vit で
		string を使った名前の登録なんかをやってる.
		なんでこんなモノいれたんだろう?
		わけわからんけど,
		基底にさかのぼって削除.
		ついでに Location も
		純粋仮想関数として定義する必要ナシ.
		モノを考えずに作ってるというか
		……
	
 -  いや,
		Vit::Location は必要だったみたいだ.
		うう.
	
 -  早起きしたわりには,
		というか早起きしためにというか
		……
		あまり仕事のはかどらなかった長い午前終了.
		昼飯食う.
	
 -  甲山さんからアロメトリーメイル.
		Abies では
		(シュート長さ) = 28 * (シュート太さ)1.1 ?
		ほとんど線形だな
		……
	
 -  昼からも三次元ライブラリ関係の改善.
		VitPolygon という変な名前はやめて
		VitTriangle とする.
		核心部は三次元空間にひらひらと飛ぶ三角形を
		ビームで撃ったときに当たったかハズれたか,
		の判定である.
		いずれ詳しく説明するとして,
		やることは 3 × 3 の逆行列の計算である.
		こんなかんぢ.
 
	...        // Preparation to generate 3x3 inverse matrix
        double  x0( p0.X() ), y0( p0.Y() ), z0( p0.Z() );
        double  x1( p1.X() ), y1( p1.Y() ), z1( p1.Z() );
        double  x2( p2.X() ), y2( p2.Y() ), z2( p2.Z() );
        double  xy01_10( x0 * y1 - x1 * y0 );
        double  xy12_21( x1 * y2 - x2 * y1 );
        double  xy20_02( x2 * y0 - x0 * y2 );
        double  yz01_10( y0 * z1 - y1 * z0 );
        double  yz12_21( y1 * z2 - y2 * z1 );
        double  yz20_02( y2 * z0 - y0 * z2 );
        double  zx01_10( z0 * x1 - z1 * x0 );
        double  zx12_21( z1 * x2 - z2 * x1 );
        double  zx20_02( z2 * x0 - z0 * x2 );
        // Determinant
        double  det( x0 * yz12_21 + x1 * yz20_02 + x2 * yz01_10 );
	...
        // Vector composition
        Xyz     gaze_vector( gaze->NormalizedDirection() );
        double  gx( gaze_vector.X() );
        double  gy( gaze_vector.Y() );
        double  gz( gaze_vector.Z() );
        double  a0( yz12_21 * gx + zx12_21 * gy + xy12_21 * gz );
        double  a1( yz20_02 * gx + zx20_02 * gy + xy20_02 * gz );
        double  a2( yz01_10 * gx + zx01_10 * gy + xy01_10 * gz );
	...
	-  私はふだんはもうすこし読みやすいコード書くんだけど,
		この部分はあえてこう書いた.
		そう,
		いつかの失敗を彷彿とさせるんだけど,
		つねに愚かしくなりがちな高速化のためである.
		かかる自己満足的な努力はあれこれあって
		……
		たとえば,
		みればわかるように一度も割り算を使っていない,
		とか
		(しかしあとで小規模な実験してみたら,
		ぢつはこういう工夫はあまり意味なかった).
	
 -  さてと,
		あとは
{ a0, a1, a2 }
		の符号がことごとく同じであれば「当たり」,
		でなければ「ハズれ」となる
		……
		んだけど
		……
		あれれ?
		うまくいかないなぁ.
	 -  バグとれぬまま無念の撤退.
		1800 研究所発.
		普通に乗って
		1810 京急杉田発.
		特急に乗り換えて
		1819 京急上大岡発.
		1900 帰宅.
	
 -  晩飯終ってからも気合のバグとり.
	
 -  2230 よーやくまともに動いた.
		すごくつまらん間違いだった.
		最後の 
{ a0, a1, a2 }
		の算出でしくじっていた
		(上のコードは修整ずみ).
 
	
		
			
			 
			
		 | 
		
			[VitTriangle]
			 
			三角形の障害物 (緑).
			赤線はそれにぶつかってる「視線」.
			黄線はわきをすりぬけたもの.
			これは POV-Ray による作図.
			(左図クリックすると拡大)
		 | 
	
 
	-  こんなチンケな三角形のためにまるまる一日つぶしてしまった.
		前途遼遠,
		先ゆき暗雲.
		嗚呼.
	
 -  しかも久しぶりに galeon やめて Netscape で見てみると
		……
		過去 10 日ほどの「ぎょーむ日誌」レイアウトかなりがたがた.
		これは Netscape が悪いんだい,
		とべそをかきつつ,
		ぢりぢり修整する.
		ああ,
		睡眠時間が.
	
 -  (一言近況)
		
			「ニセ」アカマツの難所は越えたけど,
			いまだ終らず.
			オオシラビソな PipeTree はドロ沼の予感.
			大型で強い勢力の台風 11 号は接近中.
			いったいどうなるんでしょうね.
			(2001.08.20)
		
	
 -  今日の食卓
	
		-  朝 (0530):
			米 0.7 合.
			ゴーヤ・タマネギ・ニンジン・マイタケの
			炒めもの.
		
 -  昼 (1210):
			弁当.
			米 0.7 合.
			朝と同じ.
		
 -  晩 (1910):
			米 0.7 合.
			朝と同じ.