资源描述:
《tetfsc计算机图形学程序代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-+懒惰是很奇怪的东西,它使你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉;它剥夺你对前途的希望,割断你和别人之间的友情,使你心胸日渐狭窄,对人生也越来越怀疑。—罗兰实验一、直线的生成一、实验内容根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。二、算法原理介绍双击直线生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(openworkspace)。打开直线生成view.cpp,按注释改写下列函数:1.voidCMyView::OnDdaline()(此
2、为DDA生成直线)2.voidCMyView::OnBresenhamline()(此为Bresenham画直线)3.voidCMYView::OnMidPointLine()(此为中点画线法)三、程序源代码1.DDA生成直线画法程序:floatx,y,dx,dy,k;dx=(float)(xb-xa);dy=(float)(yb-ya);k=dy/dx;x=xa;y=ya;if(abs(k)<1){for(x=xa;x<=xb;x++){pdc->SetPixel(x,int(y+0.5),COLOR);y=y+k;}}if(abs(k)>=1){for(y=ya;y<=yb;y++){
3、pdc->SetPixel(int(x+0.5),y,COLOR);x=x+1/k;}}//DDA画直线结束}1.Bresenham画直线源程序:floatb,d,xi,yi;inti;floatk;k=(yb-ya)/(xb-xa);b=(ya*xb-yb*xa)/(xb-xa);if(k>0&&k<=1)for(i=0;i=0){xi=xa+1;yi=ya;xa++;ya=ya+0.5;}if(d<0){xi=xa+1;yi=ya+1;xa++;ya=ya+1.5;}pdc->SetPixel(xi,y
4、i,COLOR);}//BresenHam画直线结束}2.中点画线法源程序:floatb,d,xi,yi;inti;floatk;k=(yb-ya)/(xb-xa);b=(ya*xb-yb*xa)/(xb-xa);if(k>0&&k<=1)for(i=0;i=0){xi=xa+1;yi=ya;xa++;ya=ya+0.5;}if(d<0){xi=xa+1;yi=ya+1;xa++;ya=ya+1.5;}pdc->SetPixel(xi,yi,COLOR);}//BresenHam画直线结束}四、实验结果抓图
5、与分析1、DDA生成直线2、Bresenham画直线3、中点画线法实验二、bresenham画圆一、实验内容根据提供的程序框架,修改部分代码,用Bresenham画法画一段圆弧或者画圆。二、算法原理介绍双击experiment.dsw打开,或者先启动VC++,文件(file)→打开工作空间(openworkspace)。打开直线生成view.cpp,按注释改写下列函数:voidCMyView::OnBresenhamCircle()三、程序源代码bresenham画圆源程序voidBresenhan_circle();intx,y=180,color=1,xcenter,ycenter;x
6、=0;intd=3-2*180;while(xSetPixel(0+x,0+y,COLOR);pdc->SetPixel(0+x,0-y,COLOR);pdc->SetPixel(0-x,0+y,COLOR);pdc->SetPixel(0-x,0-y,COLOR);pdc->SetPixel(0+y,0+x,COLOR);pdc->SetPixel(0+y,0-x,COLOR);pdc->SetPixel(0-y,0+x,COLOR);pdc->SetPi
7、xel(0-y,0-x,COLOR);}四、实验结果抓图与分析实验三、二维图形的几何变换一、实验内容以一条直线段为例,完成目标的平移、绕任一点旋转。(缩放等其它变换选做)二、实验步骤和方法1、打开二维变换.dsw2、改写二维变换view.cpp里的voidCMyView::Onrecycle()函数(需要改写的地方我已经做了说明)。3、生成直线的函数采用VC里的函数。4、函数的主要任务是计算出变换后的坐标。三、程序源代码