计算机图形学4
- 格式:ppt
- 大小:2.17 MB
- 文档页数:86
计算机科学与技术考试:2022计算机图形学真题模拟及答案(4)共22道题1、在光线跟踪(Ray Tracing)算法中,在哪种情况下应继续跟踪光线?()(单选题)A. 光线的光强度已经很弱B. 光线的深度已经很深C. 光线遇到某一物体D. 光线遇到背景试题答案:C2、使用下列二维图形变换矩阵:产生变换的结果为()。
(单选题)A. 图形放大2倍,同时,沿X和Y坐标轴方向各移动1/2个绘图单位B. 图形缩小1/2倍,同时,沿X、Y坐标轴方向各移动1/2个绘图单位C. 沿X坐标轴方向缩小1/2倍,同时,沿Y坐标轴方向移动1/2个绘图单位D. 沿Y坐标轴方向缩小1/2倍,同时,沿X坐标轴方向移动1/2个绘图单位试题答案:C3、计算机绘图设备一般使用()颜色模型。
(单选题)A. RGBB. CMYC. HSVD. HLS试题答案:B4、下面关于反走样的论述,()是错误的。
(单选题)A. 提高分辨率B. 把像素当作平面区域进行采样C. 采用锥形滤波器进行加权区域采样D. 增强图象的显示亮度试题答案:D5、分辨率为1024×1024的显示器各需要()字节位平面数为24的帧缓存。
(单选题)A. 512KBB. 1MBC. 2MBD. 3MB试题答案:D6、分辨率为1024×1024的显示器各需要()字节位平面数为24的帧缓存。
(单选题)A. 512KBB. 1MBC. 2MBD. 3MB试题答案:D7、下面关于反走样的论述,()是错误的。
(单选题)A. 提高分辨率B. 把像素当作平面区域进行采样C. 采用锥形滤波器进行加权区域采样D. 增强图象的显示亮度试题答案:D8、下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中,()是错误的。
(单选题)A. cos aB. sin aC. sin aD. cos a试题答案:C9、计算机图形显示器一般使用()颜色模型。
(单选题)A. RGBB. CMYC. HSVD. HLS试题答案:A10、下列有关简单光反射模型的描述语句中,错误的论述为()。
10327王汝传计算机图形学1-4章部分课后作业参考答案第一章1、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。
解:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。
计算机图形学研究的是从数据描述到图形生成的过程。
例如计算机动画。
图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。
例如工业中射线探伤。
模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。
例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。
2、举3个例子说明计算机图形学的应用。
解:①事务管理中的交互绘图应用图形学最多的领域之一是绘制事务管理中的各种图形。
通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。
②地理信息系统地理信息系统是建立在地理图形基础上的信息管理系统。
利用计算机图形生成技术可以绘制地理的、地质的以及其他自然现象的高精度勘探、测量图形。
③计算机动画用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。
3、计算机生成图形的方法有哪些?解:计算机生成图形的方法有两种:矢量法和描点法。
①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短失线,从而得到一条近似的曲线。
尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。
(2)描点法4.什么叫虚拟现实技术和可视化?解:虚拟现实技术:利用计算机生成一种模拟环境,通过多种传感器和设备使用户“投入”到该环境中,实现用户和该环境直接进行交互的技术。
例如模拟飞机驾驶舱。
可视化技术:通过对空间数据场构造中间几何因素,或用图形绘制技术在屏幕上产生二维图象。
例如分子模型构造。
《计算机图形学》1-8章习题解答《计算机图形学》1-4章习题解答习题11.计算机图形学的研究内容是什么?答:几何模型构造,图形生成,图形操作与处理,图形信息的存储、检索与交换,人机交互及用户接口,动画,图形输出设备与输出技术,图形标准与图形软件包的研究等。
2.计算机图形学与图像处理有何联系?有何区别?答:计算机图形学与图像处理都是用计算机来处理图形和图像,结合紧密且相互渗透,但其属于两个不同的技术领域。
计算机图形学是通过算法和程序在显示设备上构造图形,是从数据到图像的处理过程;而图像处理是对景物或图像的分析技术,是从图像到图像的处理过程。
3.简述计算机图形学的发展过程。
答:略。
(参考:教材P3)4.简述你所理解的计算机图形学的应用领域。
5.如果使用每种基色占10比特的直接编码方式表示RGB 颜色的值,每一像素有多少种可能的颜色?答:824107374110242223101010==⨯⨯6.如果每个像素的红色和蓝色都用5比特表示,绿色用6比特表示,一共用16比特表示,总共可以表示多少种颜色?答:65536222655=⨯⨯7.解释水平回扫、垂直回扫的概念。
答:水平回扫:电子束从CRT 屏幕右边缘回到屏幕左边缘的动作。
垂直回扫:电子束到达每次刷新周期末尾,从CRT 屏幕右下角回到屏幕左上角的动作。
8.为什么很多彩色打印机使用黑色颜料? 答:彩色颜料(青、品红、黄)相对来说较贵,并且在技术上很难通过多种颜色产生高质量的黑色。
9.简述随机扫描显示器和光栅扫描显示器的简单工作原理和各自的特点。
答:随机扫描显示器的工作原理:要显示的图形定义是一组画线命令,存放在刷新缓存中,由显示控制器控制电子束的偏移,周期性地按画线命令依次画出其组成线条,从而在屏幕上产生图形。
特点:其显示的图形质量好,刷新缓存中的内容可局部或动态修改,分辨率和对比度高,并且图形不会产生锯齿状线条。
光栅扫描显示器的工作原理:将CRT屏幕分成由像素构成的光栅网格,其中像素的灰度和颜色信息保存在帧缓存中。
太原工业学院实验报告memDCmemDC.FillSolidRect(rect,pDC->GetBkColor());//按原来背景填充客户区,否则是黑色memDC.SetMapMode(MM_ANISOTROPIC);//memDC自定义坐标系memDC.SetWindowExt(rect.Width(),rect.Height());memDC.SetViewportExt(rect.Width(),-rect.Height());memDC.SetViewportOrg(rect.Width()/2,rect.Height()/2);rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);DrawObject(&memDC);//向memDC绘制图形pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,-rect.Width()/2,-rect.Height()/2,SRCCOPY);//将内存memDC中的位图拷贝到显示pDC中memDC.SelectObject(pOldBitmap);//恢复位图NewBitmap.DeleteObject();//删除位图S}(2)定义点表、面表、透视变换及其参数的初始化:void CTestView::ReadPoint()//点表{//顶点的三维坐标(x,y,z),立方体边长为2adouble a=150;P[0].x=-a;P[0].y=-a;P[0].z=-a;P[1].x=+a;P[1].y=-a;P[1].z=-a;P[2].x=+a;P[2].y=+a;P[2].z=-a;P[3].x=-a;P[3].y=+a;P[3].z=-a;P[4].x=-a;P[4].y=-a;P[4].z=+a;P[5].x=+a;P[5].y=-a;P[5].z=+a;P[6].x=+a;P[6].y=+a;P[6].z=+a;P[7].x=-a;P[7].y=+a;P[7].z=+a;}void CTestView::ReadFace()//面表{//面的顶点数和面的顶点索引F[0].SetNum(4);F[0].vI[0]=4;F[0].vI[1]=5;F[0].vI[2]=6;F[0].vI[3]=7;//前面F[1].SetNum(4);F[1].vI[0]=0;F[1].vI[1]=3;F[1].vI[2]=2;F[1].vI[3]=1;//后面F[2].SetNum(4);F[2].vI[0]=0;F[2].vI[1]=4;F[2].vI[2]=7;F[2].vI[3]=3;//左面F[3].SetNum(4);F[3].vI[0]=1;F[3].vI[1]=2;F[3].vI[2]=6;F[3].vI[3]=5;//右面F[4].SetNum(4);F[4].vI[0]=2;F[4].vI[1]=3;F[4].vI[2]=7;F[4].vI[3]=6;//顶面F[5].SetNum(4);F[5].vI[0]=0;F[5].vI[1]=1;F[5].vI[2]=5;F[5].vI[3]=4;//底面}void CTestView::InitParameter()//透视变换参数初始化{k[1]=sin(PI*Theta/180);k[2]=sin(PI*Phi/180);k[3]=cos(PI*Theta/180);k[4]=cos(PI*Phi/180);k[5]=k[2]*k[3];k[6]=k[2]*k[1];k[7]=k[4]*k[3];k[8]=k[4]*k[1];}void CTestView::PerProject(CP3 P)//透视变换{CP3 ViewP;ViewP.x=k[3]*P.x-k[1]*P.z;//观察坐标系三维坐标ViewP.y=-k[8]*P.x+k[2]*P.y-k[7]*P.z;ViewP.z=-k[6]*P.x-k[4]*P.y-k[5]*P.z+R;ScreenP.x=d*ViewP.x/ViewP.z;//屏幕坐标系二维坐标ScreenP.y=d*ViewP.y/ViewP.z;}(3)绘制立方体线框:void CTestView::DrawObject(CDC* pDC)//绘制立方体线框{CP2 t;CLine *line=new CLine;for(int nFace=0;nFace<6;nFace++)//面循环{for(int nPoint=0;nPoint<F[nFace].vN;nPoint++)//顶点循环{PerProject(P[F[nFace].vI[nPoint]]);if(0==nPoint){line->MoveTo(pDC,ScreenP);t=ScreenP;}elseline->LineTo(pDC,ScreenP);}line->LineTo(pDC,t);//闭合多边形}delete line;}(4)一点、两点、三点透视:void CTestView::OnOnepoint(){// TODO: 在此添加命令处理程序代码AfxGetMainWnd()->SetWindowText(CString("一点透视"));KillTimer(1);bPlay=FALSE;Phi=90;Theta=0;InitParameter();Invalidate(FALSE);}void CTestView::OnTwopoint(){// TODO: 在此添加命令处理程序代码AfxGetMainWnd()->SetWindowText(CString("二点透视"));KillTimer(1);bPlay=FALSE;Phi=90;Theta=30;InitParameter();Invalidate(FALSE);}void CTestView::OnThreepoint(){// TODO: 在此添加命令处理程序代码AfxGetMainWnd()->SetWindowText(CString("三点透视"));KillTimer(1);bPlay=FALSE;Theta=45;Phi=45;InitParameter();Invalidate(FALSE);}运行结果:一点透视:两点透视:三点透视:实验拓展:使用图标按钮旋转立方体的透视投影图。