重温了孔令德老师的《计算机图形学实验及课程设计(Visual C++版)(第2版)》这本教材,闲来无事便把“基本图元光栅扫描演示系统”、“递归动态球体演示系统”、“圆环动态纹理演示系统”、“动态光源演示系统”、“3DS家口演示系统”等五个课程设计项目进行了复现。废话不多说,上代码。源代码获取方式:1、手机打开“闲鱼”APP;2、选择搜索用户,输入关键字“家居小v”(搜索时没有双引号哈);3、选择你所需要的宝贝即可。
1、球体绘制函数
void CSphere::SetSize(int r)
{
this->r=r;
R=1000,d=800,Phi=90.0,Theta=0.0;
ReadPoint();
ReadFace();
InitParameter();
}
void CSphere::ReadPoint()//读入点坐标
{
int gafa=10,gbeta=10;//面片夹角
N1=180/gafa,N2=360/gbeta;//N1为纬度区间,N2为经度区间
if (P==NULL)
{
P=new CP3[(N1-1)*N2+2];//纬度方向除南北极点外有“N1-1”个点,“2”代表南北极两点
}
double afa1,beta1;
P[0].x=0;
P[0].y=r;
P[0].z=0;
//按行循环计算球体上的点坐标
for(int i=0;i<N1-1;i++)
{
afa1=(i+1)*gafa*PI/180;
for(int j=0;j<N2;j++)
{
beta1=j*gbeta*P