研究開発

グラフを描く(4)

第4章 3Dグラフを描いてみる

最後は3Dなグラフに挑戦してみましょう。
3Dといえば柱状体がもっとも簡単に描ける3D図形です。
手続きBeginXtrd(startDistance, endDistance : REAL);
手続きEndXtrd;
を使って描けます。
四角形を入れることで、3D棒グラフが描けるようになります。
Z方向の値を高さで表現するので endDistanceを変化させます。
棒グラフの位置は正方形の位置で決まります。

BeginXtrd( 0, 50 );
	Rect( 0, 0, 10, 10 );
EndXtrd;

BeginXtrd( 0, 20 );
	Rect( 20, 0, 30, 10 );
EndXtrd;

BeginXtrd( 0, 30 );
	Rect( 40, 0, 50, 10 );
EndXtrd;

さらに色を付けてみましょう。2D四角形の面に色を付けます。

BeginXtrd( 0, 50 );
	FillBack( 0, 65535, 0 );
	Rect( 0, 0, 10, 10 );
EndXtrd;

BeginXtrd( 0, 20 );
	FillBack( 65535, 0, 0 );
	Rect( 20, 0, 30, 10 );
EndXtrd;

BeginXtrd( 0, 30 );
	FillBack( 0, 0, 65535 );
	Rect( 40, 0, 50, 10 );
EndXtrd;

円グラフは厚みをつけるだけで、それっぽくなります。
円グラフを描いてみるのコードに手を加えてみましょう。

PROCEDURE enGraph;
VAR
	startAngle, sweepAngle : REAL;
BEGIN
	BeginXtrd( 0, 5 );
	startAngle := 90;

	FillBack( 0, 65535, 0 );
	PenFore( 0, 65535, 0 );
	sweepAngle := 50*360/(20+30+50);
	ArcByCenter( 0, 0, 50, startAngle, -sweepAngle );
	startAngle := startAngle - sweepAngle;

	FillBack( 65535, 0, 0 );
	PenFore( 65535, 0, 0 );
	sweepAngle := 30*360/(20+30+50);
	ArcByCenter( 0, 0, 50, startAngle, -sweepAngle );
	startAngle := startAngle - sweepAngle;

	FillBack( 0, 0, 65535 );
	PenFore( 0, 0, 65535 );
	sweepAngle := 20*360/(20+30+50);
	ArcByCenter( 0, 0, 50, startAngle, -sweepAngle );

	EndXtrd;
END;
Run( enGraph );