ページ 11

CGの描画について

Posted: 2014年6月04日(水) 15:16
by aci
グラフィックの描画について質問です。球の描画なのですが、下のプログラムで描画される球をもう一つ描画する様にするにはどこをどう改良すればいいのでしょうか。
1つまでは描画できたのですが2つにするのがどうしてもわかりませんでした。よろしくお願いします。

コード:

#include		"win3d.h"

main()
{
	Ball	Ba=	Ball( Point(0,0,70),70);				//	球体の記述
	Polygon	Wa(	Point( 200, 200,-50),Point(-200, 200,-50),//	床の記述
				Point(-200,-200,-50),Point( 200,-200,-50) );
	Color	Cb= RED;			
	Color	Cw= 0.3*WHITE+0.4*BLUE;			

	Win3D	w("EX5_2");                                        //  EX5_2はファイル名
	Point	V0=Point(500,500,500);						//	視点の記述
	Point	L0=Point(0,400,1000);						//	照明光の記述
	w.setview(V0);

	for(int x=0; x<w.size_x; x++)
		for(int y=0; y<w.size_y; y++){
			Vector	V=unit(w.world(Point(x,y,-w.dv))-V0);//	視線ベクトルの計算
			Ray		VR=Ray(V0,V);						//	視線の記述
			float	s=1;								//	日向か日陰を表す

			Point	P;									//	交点座標
			Vector	N,D;
			Color	Cs=0.25*CYAN;
			if(Ba.hit(VR,P,N)<INFINITY){				//	視線が球体と交わるかの判定
     			Vector	L=unit(P-L0);					//	照明光の方向ベクトル
				Cs=shading(V,L,N,Cb,1);
			}
 			else if(Wa.hit(VR,P,N)<INFINITY){			//	視線が床と交わるかの判定
     			Vector	L=unit(P-L0);					//	照明光の方向ベクトル
				Ray 	LR=Ray(L0, L);  				//  照明光線の記述
				if(Ba.hit(LR,P,D)<INFINITY)s=0;			//	照明光が球体と交わるかの判定
				Cs=shading(V,L,N,Cw,s);
			}
			w.color(Cs);
			w.point(x,y);
	}
	pause("EX5_2");
}

Re: CGの描画について

Posted: 2014年6月04日(水) 17:22
by softya(ソフト屋)
使っているライブラリを全く知りませんが、こうすればよいのではないでしょうか。
Ball Ba2= Ball( Point(0,0,1400),70); // 球体の記述
以下Baと同じ処理を加える。