图形学实验三--线画图元生成算法实验.doc

图形学实验三--线画图元生成算法实验.doc

ID:60825805

大小:39.50 KB

页数:7页

时间:2020-12-20

图形学实验三--线画图元生成算法实验.doc_第1页
图形学实验三--线画图元生成算法实验.doc_第2页
图形学实验三--线画图元生成算法实验.doc_第3页
图形学实验三--线画图元生成算法实验.doc_第4页
图形学实验三--线画图元生成算法实验.doc_第5页
资源描述:

《图形学实验三--线画图元生成算法实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《计算机图形学》实验报告线画图元生成算法实验姓名闫学森学号专业计算机科学与技术班级三班天津大学计算机科学与技术学院2015年12月5日一、实验目的(1)实现DDA直线生成算法(2)实现Bresenham直线生成算法(3)实现中点画圆算法二、实验内容(1)自定义直线段起始点和终点坐标;(2)采用不同的彩色显示两种算法生成的直线结果;三、实验结果四、实验分析和总结此实验是图形学的第一个算法,按照书上的步骤一步一步的实现也有难度。DDA算法比较简单,向上取整即可。Bresenham比较复杂,变量较多。两个算法有

2、几个方面需要注意:1.斜率大于一,x,y坐标互换;2.斜率为负时,起始点与终止点坐标互换。五、源代码voidDrawCir(inta,intb,intx3,inty3,CDC*pDC){//画圆的对称点CPenmyPen1;myPen1.CreatePen(PS_SOLID,1,RGB(0,255,0));CPen*pOldPen=pDC->SelectObject(&myPen1);//设置点的颜色intx,y;//所画点的坐标//对称的八个点x=a+x3;//第一象限y=b+y3;for(inti=0

3、;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+x*3+i,100+y*3);pDC->LineTo(100+x*3+i,100+y*3+3);}for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+y*3+i,100+x*3);pDC->LineTo(100+y*3+i,100+x*3+3);}x=-a+x3;//第三象限y=-b+y3;for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+x*3+

4、i,100+y*3);pDC->LineTo(100+x*3+i,100+y*3+3);}for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+y*3+i,100+x*3);pDC->LineTo(100+y*3+i,100+x*3+3);}x=-a+x3;//第二象限y=b+y3;for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+x*3+i,100+y*3);pDC->LineTo(100+x*3+i,100+y*3+3

5、);}for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+y*3+i,100+x*3);pDC->LineTo(100+y*3+i,100+x*3+3);}x=a+x3;//第四象限y=-b+y3;for(inti=0;i<3;++i){//将点所在的地方涂色pDC->MoveTo(100+x*3+i,100+y*3);pDC->LineTo(100+x*3+i,100+y*3+3);}for(inti=0;i<3;++i){//将点所在的地方涂色pDC->Mov

6、eTo(100+y*3+i,100+x*3);pDC->LineTo(100+y*3+i,100+x*3+3);}}voidCtest21lineView::OnDraw(CDC*pDC){Ctest21lineDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);CPenmyPen1;myPen1.CreatePen(PS_SOLID,1,RGB(0,0,0));CPen*pOldPen=pDC->SelectObject(&myPen1);for(intx=100;x<=

7、700;x+=3){//画y轴线pDC->MoveTo(x,100);pDC->LineTo(x,700);}for(inty=100;y<=700;y+=3){//画x轴线pDC->MoveTo(100,y);pDC->LineTo(700,y);}intx0=12,y0=14,x1=40,y1=54,x2=80,y2=54;//设置起始点终止点if(x1

8、ject();myPen1.CreatePen(PS_SOLID,1,RGB(255,0,0));pOldPen=pDC->SelectObject(&myPen1);//设置DDA点的颜色doublem1=(double)(y1-y0)/(double)(x1-x0);intx=x0,y=y0;//所画点的坐标doubleyi,xi;yi=y0;//DDA算法xi=x0;if(m1<1){//斜率小于1for(intj=0;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。