VC++4.0で、OpenGLのプログラムをビルドするには?
 デフォルトの設定では、リンクでエラーが出ちゃいます。VC++4.0のビルドメニューの中の、設定→リンク→オブジェクト/ライブラリモジュール(L)の項に、opengl32.libとglu32.libとglaux.libを加えておきましょう。
 あとWindows95の場合は、opengl32.dllとglu32.dllを\Windows\Systemに放り込んでおくのを忘れないように。

基本となる骨格(Frame)のデータ型
 さんざん悩んだ末に決めたデータ型が、
struct	Frame{
	struct{
		long	x1;
		long	y1;
		long	z1;
		struct{
			long	x;
			long	y;
			long	z;
		}	Euler;
	}	Local;

	struct{
		long	x0;
		long	y0;
		long	z0;
		long	x1;
		long	y1;
		long	z1;
		struct{
			long	x;
			long	y;
			long	z;
		}	Euler;
	}	Global;

	struct	Frame	*PreviousFrame;	
};
てな感じの自己参照的構造体。
 基本的に、始点が(x0,y0,z0)で終点が(x1,y1,z1)になっている。Localに(x0,y0,z0)が無いのは、ローカル座標の原点は(0,0,0)に決めているから。
 これを、
	struct		Frame	*Head, *Trunk
でポインタ宣言をして、
	Head	= ( struct Frame * )malloc( sizeof( struct Frame ) );
	Trunk	= ( struct Frame * )malloc( sizeof( struct Frame ) );
でメモリ領域を確保して、
	Head->PreviousFrame = Trunk;
でデータのリンク構造を設定する。
 任意の骨格のグローバル始点は、その前の骨格(Previous Frame)のグローバル終点な訳だから、
	Head->Global.x0		= Head->PreviousFrame->Global.x1;
	Head->Global.y0		= Head->PreviousFrame->Global.y1;
	Head->Global.z0		= Head->PreviousFrame->Global.z1;
とすればいい。
 うーん、かっこいい。我ながら、イカしたデータ構造だぜ(自己陶酔モード)。
 ま、この構造でどうにもならなくなった場合はその時に考えなおすとして(^_^;、とりあえずはこの方針ですすめて行くことにしよう。

 個々の骨格の名称は、右図の通り。
 Right * な骨格は、そのままLeft * になる。
 ちなみにこの名称は、英和辞書と和英辞書を片手にてきとーに決めた物なので、本当に正しいという保証はまるで無い。特に、Buttock、Trunkあたりが怪しい(^_^;。
 あ、Navel(へそ)は骨格じゃないです。これが全ての原点。この、骨格野郎の命の源となる点です。


Back!!