图形学习题1.docx

上传人:b****4 文档编号:2971839 上传时间:2022-11-16 格式:DOCX 页数:24 大小:219.05KB
下载 相关 举报
图形学习题1.docx_第1页
第1页 / 共24页
图形学习题1.docx_第2页
第2页 / 共24页
图形学习题1.docx_第3页
第3页 / 共24页
图形学习题1.docx_第4页
第4页 / 共24页
图形学习题1.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图形学习题1.docx

《图形学习题1.docx》由会员分享,可在线阅读,更多相关《图形学习题1.docx(24页珍藏版)》请在冰豆网上搜索。

图形学习题1.docx

图形学习题1

第一章绪论

1.图形学研究的任务是什么?

计算机图形学是研究在计算机中输入,表示,处理和显示图形的原理,方法及硬件设备的学科。

2.请描述图形图象系统的硬件组成

采集(输入)(作用:

将各种形式的信息转换成适合计算处理的形式)

纸带输入机→二维交互式输入(键盘,鼠标,输入板,扫描仪,光笔等)→三维(空间球,数据手套等)

显示:

随机扫描显示器→存储管式显示器→光栅扫描显示器。

输出:

打印机和绘图仪

第二章计算机图形系统

1.当显示器分辨率为1024*768时,计算24位位图做需要的桢缓存内存。

1024*768*3Byte=2.25M

2.请解释VC++中的CDC类

是设备上下文的基类,其他的设备上下文类都是CDC的派生类。

CDC类非常庞大,包含170多个成员,利用它可以访问整个显示设备和其他输出设备。

3.VC++单文档程序,解释OnDraw,WMZPAINT,CDC,ccben+DC,Cpain+DC,并说明他门之间的关系。

Visuale++所编写的Windows应用程序通常在视图类中通过在OnDraw函数中添加绘图代码来完成图形生成。

OnDraw函数是CView类的虚拟成员函数。

它在CViewvn派生类中被重新定义。

每次CView类封装的试图窗口在接到WM—PAINT消息后就会通过消息映射函数OnPaint调用它,WM—PAINT消息是在某个视图窗口需要重画或刷新其显示内及时发出的,如果程序的数据被改变,则可以调用视图Invalidate成员函数,并最终调用OnDraw函数未完成绘图。

窗口的绘图画面CClientDC是窗口客户区的设备上下文类,代表了客户区,

窗口的绘图画面如果重新编写视图的Onpaint()函数,就需要使用CPaintDC类来定义一个对象CPaintDC类是nPaint()函数使用设备上下文代表了

第三章基本光栅图形生成技术

1请用代码描述使用DDA算法绘制一条斜率介于-45度和45度(即|m|<=1)之间直线的步骤。

解:

假设线段的两个端点(x1,y1)和(x2,y2),且x1

intx=x1,y;

floatyf=y,m=(y2-y1)/(x2-x1);

while(x<=x2)

{

y=Floor(yf+0.5);

setpixel(x,y);

x++;

yf=yf+m;

}

2请用代码描述使用DDA算法绘制一条斜率介于45度和-45度之(即|m|=1)之间直线的步骤。

解:

假设线段的两个端点(x1,y1)和(x2,y2),且y1

intx,y=y1;

floatxf=x,

minv=(x2-x1)/(y2-y1);

while(y<=y2)

{

x=Floor(xf+0.5);

setpixel(x,y);

x=xf+minv;

y++;

}

3.写出使用Bresenham算法绘制一条斜率介于0度和45度(即|m|<=1)之间直线的步骤

解:

(1)计算初始值:

dx=x2-x1,dy=y2-y1,InC1=2dy

InC2=2(dy-dx),d=InC1-dx

(2)设置左下方的端点坐标为(x,y),同时将xend设为x的最大值。

如果dx<0,则x=x2,y=y2和xend=x,如果dx>0,那么x=x,y=y和xend=x2。

(3)在当前的(x,y)坐标画一个点。

(4)判断整条线段是否已经画完,如果x=xend就停止。

(5)计算下一像素的位置。

如果d<0,那么d=d+InC1。

如果d>=0,那么d=d+InC2,并且y=y+1

(6)增加x:

x=x+1

(7)在当前的(x,y)坐标画一个点。

(8)转到步骤(4)。

4.请指出用Bresenham算法绘制从像素点(1,1)到(8,5)的线段时的像素位置。

解:

首先必须先找到初始值。

在这个例子中,

dx=x2-x1=8-1=7dy=y2-y1=5-1=4

因此,InC1=2dy=2*4=8

InC2=2(dy-dx)=2*(4-7)=—6

D=InC1-dx=8-7=1

由算法算出的值示于下图

d

x

y

1

1

1

1+InC2=-5

2

2

-5+InC1=3

3

2

3+InC2=-3

4

3

-3+InC1=5

5

3

5+InC2=-1

6

4

-1+InC1=7

7

4

7+InC2=1

8

5

5,请推导出Bresenham算法的迭代公式P(32-33)

d1=y-yi=(k(xi+1)+b)-yi

d2=(yi+1)-y=yi+1-(k(xi+1)+b)

所以d1-d2=2k(xi+1)-2yi+2b-1

设dy=y1-y0,dx=x1-x0,k=△y/△x=dy/dx

所以dx(d1-d2)=2dyxi-2dxyi+c

(c=2dy+dx(2b-1))

令di=dx(d1-d2)

因为dx>0

所以当di<0时,右方像素(xi+1,yi)接近

di>0时右上方(xi+1,yi+1)

所以第b+1步:

di+1=2dyxi+1-2dxyi+1+c

di+1-di=2dy(xi+1-xi)-2dx(yi+1-y0)

因为xi+1=xi+1

所以di+1=di+2dy-2dx(yi+1-yi)

若右方:

则yi+1=yi所以di+1=di+2dy

若右上方:

则yi+1=yi所以di+1=di+2dy-2dx

第一次参数d0=2dy-dx

6.区域填充算法对水平边的处理方法是怎样的,请分析。

 

7.各边形定点坐标v1---v8如下:

v1=(2,4),v2=(9,4),v3=(9,7),v4=(8,7),v5=(8,9),v6=(4,9),v7=(4,7),v8=(2,7)说明扫描线y=6,7,8,9,10时,哪些边会被激活?

解:

x列包含对应最低点的x坐标,水平不包括:

含其中

Edge

ymin

ymax

x

1/m

E2

4

7

9

0

E8

4

7

2

0

E4

7

9

8

0

E6

7

9

4

0

当扫描线的值y=边界线被激活。

此后边界线保持活跃,直到扫描线的值y大于边界线的ymax值。

因此扫描线y=6,7,8,9和10时被激活的边界线如下所示:

当y=6时,E2和E8被激活

当y=7时,边E2和E8的ymax=y,所以继续保持活跃。

与此同时E4和E6也被激活

当y=8时,近E2和E8被移出边界列表。

E4和E6继续保持活跃。

当y=9时,活跃的边没有变化

当y=10时,边E4和E6被移出边界列表,边界列表变为空。

8.在区域填充法中,什么是扫描线?

它来源于光栅显示器的显示原理。

对于屏幕上所有待显示像素的信息,将这些信息按从上到下从左至右的方式显示。

在这里,每一趟自左至右的显示所涉及的像素集合具有相同的y坐标值,形成一条直线,它就是一条y方向扫描线。

同样道理,每一趟从上到下同样也能形成x方向扫描线。

不过,人们更加习惯自左至右的扫描线。

第四章图形变换

1.导出平面坐标系X-O-Y中点(x,y)绕原点O转动θ的变换矩阵。

解:

如上图x′=rcos(θ+φ),y′=rsin(θ+φ)

x=rcosφy=rsinφ

∴x′=rcos(θ+φ)=r(cosθcosφ-sinθsinφ)=xcosθ-ysinθ

y′=rsin(θ+φ)=r(sinθcosφ+cosθsinφ)=xsinθ+ycosθ

设P′=『x′P=『x且Rθ=『cosθ-sinθ

y′』,y』sinθcosθ』

P′=RθP

2.点P(2,-4)绕原点转动30度的新坐标是什么?

解;R30°=『cos30°-sin30°=『√3/2-1/2

Sin30°cos30°』1/2√3/2』

新的坐标可以通过矩阵乘法得到

『√3/2-1/2·『2=『√3+2

1/2√3/2』-4』1-2√3』

3.写出点Q(x,y)绕定点P(h,k)旋转的变换矩阵

解:

通过三步确定:

(1)平移对象,使它的旋转中心P与原点重合。

(2)绕原点旋转(3)将P平移回(h,k)

使用V=hI+kJ作为平移向量,Rθ.P可通过组合变换得到:

Rθ.0′=Tv·Rθ·T-V

附:

旋转变换的通用矩阵Rθ.P=『10h『cosθ–sinθ0『10-h

O1ksinθcosθ001-k

O01』001』001』

=『cosθ–sinθ(-hcosθ+ksinθ+h)

sinθcosθ(-hsinθ-kcosθ+k)

001』

 

4,将三角形A(0,0),,B(1,1),C(5,2)放大2倍,保持C不动,写出变换矩阵和ABC的新位置。

解:

变换矩阵(V=5I+2J向量)得V=5I+2J

10520010-5

S2,2,C=TV·S2,2·T-V=01202001-2

001001001

20-5

=02-2

001

x

用y表示坐标为(x,y)的P点,得出

1

20-50-5

S2,2,C·A=02-2·0=-2

00111

20-51-3

S2,2,C·B=02-2·1=0

00111

20-555

S2,2,C·C=02-2·2=2

00111

∴ABC的新位置是

A、1(5,-2),B(-3,0),C(5,2)

(附)

相对于固定点P(h,k)缩放变换的通用矩阵是

Sa,b,p=Tv·Sa,b·T-v

10ha0010-h

=01k0b001-k

001001001

A0-ah+h

=0b-bk+k

001

5,为什么要使用齐次坐标的表达式?

答:

为了使各种变换的表示形式一致,从而使变换合成更容易,引入齐次坐标,平移变换为矢量加法,旋转缩放为矩阵的乘法,

齐次坐标就是用n+1维向量表示n维向量。

一方面可以表示无穷点,一方面是所有几何变换都可以用矩阵乘法来表示,获得平移,旋转,所放的一致性,表示

平移X´100△XX

Y´010△YY

Z´=001△Z*Z或P´=T*P

100011

 

缩放

X´Sx000X

Y´0Sy00Y

Z´=00Sz0*Z或P´=S*P

100011

旋转:

绕X轴旋转

X´1000X

Y´0cosα-sinα0Y

Z´=0sinαcosα0*Z或P´=Rx(α)*P

100011

绕Y轴旋转

X´cosα0sinα0X

Y´0100Y

Z´=-sinα0cosα0*Z或P´=Ry(α)*P

100011

绕Z轴旋转

X´cosα-sinα0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1