计算机图形学大作业

更新时间:2023-09-20 04:41:01 阅读量: 医药卫生 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

延安大学

计算机图形学期末作业

学号: 1060414014016 姓名:秦红志 班级:信息14 学期:2017.3-2017-7

1. 简述彩色光栅扫描显示器的工作原理,并说明显示器能显示的彩色颜色个数与显存大小之间的关系。 答:

(1)工作原理:光栅扫描显示器是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度。其基本结构由三部分组成:显示器、图形控制器和缓存寄存器。

光栅扫描将CRT屏幕分成由像素构成的光栅网格,其中的每个像素点都具有灰度和颜色,所有像素的灰度和颜色信息保存在一个专门的内存区域中,简称帧缓存。CRT中的水平和垂直偏转线圈分别产生水平和垂直磁场,电子束在不同方向磁场力作用下从左向右,从上向下扫描荧光屏,产生一幅幅光栅,并由显示内容控制所扫描的像素点是否发亮,从而形成具有多种彩色及多种明暗度的图像。

(2)关系:显示器颜色的数目和一帧画面可同时显示的颜色数,与荧光屏的质量有关,并受显示存储器容量的影响。

设分辨率为m×n、颜色数为K,显存大小为V:

V?m?n?log2Kbit

2. 使用中点画圆法绘制一个椭圆,椭圆的相关参数自己决定

x2y2答:(1)核心思想:由椭圆的方程:2?2?1可得其隐函数形式:

abF(x,y)?b2x2?a2y2?a2b2

由椭圆的4对称性,以一象限椭圆弧为例。

圆弧分上下两部分,以弧上斜率为-1的点(法向两个分量相等的点分界点)作为分界点。由几何知识可推导出分界点所在法向量分量满足关系式2b2x=2a2y。

在分界点的上半部法向量的y分量更大;在下部分,法向量的x分量更大。 因而可得出,在上部分(xp,yp)的中点,有x,y法向量分量关系如下:

b2(xp+1)

从而该关系式可作为算法中判断当前点处于上下部分的依据。

与圆中点算法类似:在确定一个像素点后,接着代入两个候选像素点的中点坐标值与椭圆隐函数中,由隐函数的正负,来最终确定选取的像素点。

①设椭圆上一确定点(0,b),即椭圆与y轴交点。其下一候选元素点中点为(1,b-0.5)。将之代入椭圆隐函数内可得

d1=b2+a2(0.25-b)

该式作为算法中的初始判断条件,确定下一点的坐标值。

②当d1<0,表明中点在椭圆内,则取确定点正右侧像素点即(1,b); 则以该点为初始点,重复①的过程,得到

d2=d1+b2 (2xp+3)

当d1≥0,表明中点在椭圆外,则取确定点右下方像素点即(1,b-1); 则以该点为初始点,重复①的过程,得到

d2=d1+b2 (2xp+3)+a2 (-2yp+2)

不断重复上述过程,每次x坐标增加1像素,得到相应y的取值。即可画出椭圆的上半部分曲线。当x,y的取值不满足判别式(*)时,此时y的增量小于x的增量,故迭代过程变为y每次变化1像素。

同理。由上述循环结束可得到分界点的坐标,由分解点坐标开始。代入下一像素点的中点坐标于椭圆隐函数中,进行判断从而确定x的取值。

d1<0时,d2= d1+ b2 (2xp+2)+a2 (-2yp+3) d1≥0时,d2= d1+ a2 (-2yp+3)

当y=0时,算法结束。则最终确定了一象限的一段椭圆圆弧。再由坐标关系变换,补充算法描点,即可得到一个有中点圆算法画出的椭圆。

(2)程序运行截图:

(3)算法源代码:

inta,b; a=200,b=100; int x0,y0; x0=300,y0=200; intx,y; x=0,y=b;

double d=b*b+a*a*(0.25-b);

for(x=0;x<=a;x++) {

if(2*b*b*(x+1)<2*a*a*(y-0.5)) {

pDC->SetPixel(x+x0,y+y0,RGB(255,0,0)); pDC->SetPixel(x+x0,-y+y0,RGB(0,255,0)); pDC->SetPixel(-x+x0,y+y0,RGB(0,0,255)); pDC->SetPixel(-x+x0,-y+y0,RGB(255,255,0)); if(d<0) {

d=d+b*b*(2*x+3); } else {

d=d+b*b*(2*x+3)+a*a*(-2*y+2); y--; } } else {

break; } }

for(;y>=0;y--) {

pDC->SetPixel(x+x0,y+y0,RGB(0,0,255)); pDC->SetPixel(x+x0,-y+y0,RGB(0,0,255)); pDC->SetPixel(-x+x0,y+y0,RGB(0,0,255)); pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,255)); d=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b; if(d<0) {

d=d+b*b*(2*x+2)+a*a*(-2*y+3); x++; }

else {

d=d+a*a*(-2*y+3); }

}

3. 多边形填充的有效边表法,多边形的相关参数自己决定。 答:

(1)核心思想:

①先计算一些特殊的交点:如果某个边的最低点是ymin,那么这个边与扫描线y=ymin一定相交,且x坐标就是顶点的坐标x。

②然后根据边的连贯性,按从下到上的顺序,使用增量法计算各条扫描线与边的交点序列。

③根据交点的配对原则,判断位于多边形内部的区段。 ④对位于多边形内的直线段进行着色。 (2)程序运行截图:

(3)算法源代码: 添加头文件、命名空间

structEdgeNode{

double x; double dx; intymax; };

#include #include using namespace std;

构造函数

bool operator <(EdgeNode a, EdgeNode b) {

if(a.x

return true; else

本文来源:https://www.bwwdw.com/article/d4gh.html

Top