计算机图形学文档格式.docx
- 文档编号:15842935
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:15
- 大小:344.44KB
计算机图形学文档格式.docx
《计算机图形学文档格式.docx》由会员分享,可在线阅读,更多相关《计算机图形学文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
时间
2017.3.31
、实验目的:
学会使用MFC,运用中点画圆算法和Bresenham画圆算法以及椭圆的扫描转换算法绘制圆和椭圆,并熟悉掌握制作过程。
二、实验环境:
Windows7
VC++6.0
3、实验内容:
打开vc6.0,点击新建—>
工程—>
MFCAppWizard[exe],创建项目名称(随便写),确定位置,然后点击确定。
选择创建的应用类型—>
单文档—>
完成。
点击确定。
中点画园算法:
添加成员函数:
1.展开Wangyanyanclasses—>
右击WangyanyanView—>
选择AddMemberFuntion(添加成员函数)—>
函数类型定义为void,函数描述为:
Midpoint_Circle—>
点击确定
2.展开Wangyanyanclasses—>
CWangyanyanView—>
在Midpoint_Circle()函数里添加形参,intr,intcolor,CClientDC&
dc
3.双击CWangyanyanView,在public中添加代码:
voidCWangyanyanView:
:
Midpoint_Circle(inty1,intr,intcolor,CClientDC&
dc);
记住最后加分号
4.展开CWangyanyan—>
双击OnDraw—>
添加代码:
CClientDCdc(this);
DDAline(100,RGB(255,145,200),dc);
5.双击DDAline,在函数体内编写如下代码:
Midpoint_Circle(intr,intcolor,CClientDC&
dc)
{
CPennewpen(PS_SOLID,1,color);
dc.SelectObject(&
newpen);
intx,y,d;
x=0;
y=r;
d=1-r;
while(x<
y)
{
dc.SetPixel(x+r,y+r,color);
dc.SetPixel(-x+r,y+r,color);
dc.SetPixel(-x+r,-y+r,color);
dc.SetPixel(x+r,-y+r,color);
dc.SetPixel(y+r,x+r,color);
dc.SetPixel(-y+r,x+r,color);
dc.SetPixel(y+r,-x+r,color);
dc.SetPixel(-y+r,-x+r,color);
if(d<
0)
{
d+=2*x+3;
x++;
}
else
d+=2*(x-y)+5;
y--;
}
}
调试程序:
运行结果:
Bresenham画圆算法:
添加成员函数
右击CWangyanyanView—>
选择AddMemberFuntion,函数类型定义为void,函数描述为:
Bresenham_Line—>
2.点击classes—>
CWangyanyanjview,在Bresenham_Circle函数里添加形参intr,intcolor,CClientDC&
Bresenham_Line(intr,intcolor,CClientDC&
dc);
最后加分号
4.展开CWangyanyanView—>
Bresenham_Circle(150,RGB(20,180,250),dc);
5.双击Bresenham_Circle,在函数体内编写如下代码:
voidCWangyanyanView:
Bresenham_Circle(intr,intcolor,CClientDC&
{
intx,y,delta,delta1,delta2,direction;
delta=2*(1-r);
while(y>
=0)
if(delta<
delta1+=2*(delta+y)-1;
if(delta1<
=0)direction=1;
elsedirection=2;
elseif(delta>
delta2=2*(delta-x)-1;
if(delta2<
=0)direction=2;
elsedirection=3;
direction=2;
switch(direction)
{case1:
x++;
delta+=2*x+1;
break;
case2:
delta+=2*(x-y+1);
case3:
y--;
delta+=(-2*y+1);
break;
}
椭圆的扫描转换算法:
Midpoint_Ellipse—>
3.点击classes—>
CWangyanyanjview,在Midpoint_Ellipse函数里添加形参inta,intb,intcolor,,CClientDC&
dc
Midpoint_Ellipse(inta,intb,intcolor,CClientDC&
dc);
CClientDCdc(this);
Midpoint_Ellipse(50,100,150,RGB(20,180,250),dc);
6.双击Midpoint_Ellipse,在函数体内编写如下代码:
voidCLYYMidpointEllipseView:
Midpoint_Ellipse(inta,intb,intcolor,CClientDC&
intx,y;
floatd1,d2;
y=b;
d1=b*b+a*a*(-b+0.25);
dc.SetPixel(x+a,y+b,color);
dc.SetPixel(-x+a,y+b,color);
dc.SetPixel(-x+a,-y+b,color);
dc.SetPixel(x+a,-y+b,color);
while(b*b*(x+1)<
a*a*(y-0.5))
if(d1<
d1+=b*b*(2*x+3);
else
d1+=(b*b*(2*x+3)+a*a*(-2*y+2));
y--;
d2=(b*(x+0.5))*(b*(x+0.5))+(a*(y-1))*(a*(y-1))-(a*b)*(a*b);
{
if(d2<
d2+=b*b*(2*x+2)+a*a*(-2*y+3);
d2+=a*a*(-2*y+3);
教师评语
签名:
日期:
年月日
成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学
![提示](https://static.bdocx.com/images/bang_tan.gif)