文档视界 最新最全的文档下载
当前位置:文档视界 › 从OpenGL图形系统谈计算机图形学的应用领域_吴婷

从OpenGL图形系统谈计算机图形学的应用领域_吴婷

计算机图形学OpenGL中绘制太阳_地球_月亮的运动模型源代码

#include static int day = 148; // day的变化:从0到359 void myDisplay(void) { glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(75, 1, 1, 400000000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1); // 红色的“太阳” glColor3f(1.0, 0.0, 0.0); glutSolidSphere(69600000, 100, 100); // 蓝色的“地球” glColor3f(0.0, 0.0, 1.0); glRotatef(day/360.0*360.0, 0.0, 0.0, -1.0); glTranslatef(150000000, 0.0, 0.0); glutSolidSphere(15945000, 100, 100); // 黄色的“月亮” glColor3f(1.0, 1.0, 0.0); glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0, 0.0, -1.0); glTranslatef(38000000, 0.0, 0.0); glutSolidSphere(4345000, 100, 100); glFlush(); glutSwapBuffers(); } void myIdle(void) { ++day; if( day >= 360 ) day = 0; myDisplay(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowPosition(100, 100); glutInitWindowSize(450, 450);

研究生计算机图形学课程室内场景OpenGL--实验报告Word版

《高级计算机图形学》实验报告 姓名:学号:班级: 【实验报告要求】 实验名称:高级计算机图形学室内场景 实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。 实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、 纹理映射技术以及实时绘制技术。 一、实验效果图 图1:正面效果图

图2:背面效果图 图4:背面效果图

图4:室内场景细节效果图 图5:场景角度转换效果图

二、源文件数据代码: 共6个文件,其实现代码如下: 1、DlgAbout.cpp #include "StdAfx.h" #include "DlgAbout.h" CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() 2、FormCommandView.cpp #include "stdafx.h" #include "Tool.h" #include "MainFrm.h" #include "FormCommandView.h" #include "ToolDoc.h" #include "RenderView.h" // Download by https://www.docsj.com/doc/d613342777.html, #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // CFormCommandView IMPLEMENT_DYNCREATE(CFormCommandView, CFormView) CFormCommandView::CFormCommandView() : CFormView(CFormCommandView::IDD) { //{{AFX_DATA_INIT(CFormCommandView)

秋双学位计算机图形学

2006年秋双学位计算机图形学作业题目 教材计算机图形学(第二版) 第一次P105 3.17 利用中点算法并考虑对称性,推导在区间-10<=x<=10上,对下列曲线进行扫描转换的有效算法:y=(1/12)*x3 3.20 考虑对称性,建立中点算法对形式为y=ax2-b的任意抛物线进行扫描转换,参数a,b及x的范围从输入值获得。 第二次P106 3.34 利用circle函数,编写一个程序,显示具有合适标记的饼图。程序的输入包括:在某些区间上给定数据分布的数据组,饼图的名称和区间的名称。每部分的标记将是显示在饼图边界外靠近对应饼图部分的地方。 第三次10.7 P139 4.20 编写一个程序,使用指定的图案对给定的椭圆内部进行填充。 第四次10.14 P168 5.12 确定对于任何直线y=mx+b的反射变换矩阵的形式。 第四次10.22 比较若干条相对于裁剪窗口的不同方向的线段的Cohen-Sutherland和梁友栋-Barsky裁剪算法的算术运算次数。 第五次10.29 6.18 将梁友栋-Barsky算法改称多边形裁剪算法。 第六次11.4 8.13 设计一个程序,该程序允许用户使用一个笔画设备交互式地画图。 第七次11.11 10.9 建立一个将给定的球、椭球或圆柱体变成多边形网格的一个算法。 第八次11.18 10.20 给出d=5的均匀周期性B-样条曲线的混合函数。 第九次11.25 11.13 设计关于任选平面反射的例程。 第十次 12.8 编写一个将透视投影棱台变换到规则平行六面体的程序。 上机 1.实现Cohen-Sutherland多边形裁剪算法,要求显示多边形被每一条窗口边裁剪后的结果。 2.编写一个程序,允许用户通过一个基本形状菜单并使用一个拾取设备,将每一个选取的 形状拖曳到指定位置,并提供保存和载入的功能。 3.. 写一篇综述性的调研报告,要求不少于3000字,独立完成。内容可以是计算机图形学理论或算法的研究。如:曲线、曲面拟合算法;几何造型方法的研究。如:分形树、分形山、树木、花草、云、瀑布、粒子系统等等。或任何你感兴趣的领域。 4.2006年秋双学位计算机图形学作业参考答案 P105 3.17 利用中点算法并考虑对称性,推导在区间-10<=x<=10上,对下列曲线进行扫描转换的有效算法:y=(1/12)*x3 解答:第一象限和第三象限中心对称

计算机图形学 实验 利用OpenGL实现图形的平移、旋转、缩放

XXXXXXXX大学(计算机图形学)实验报告 实验名称利用OpenGL实现图形的平移、旋转、缩放 实验时间年月日 专业姓名学号 预习操作座位号 教师签名总评 一、实验目的: 1.了解OpenGL下简单图形的平移、旋转、缩放变换的编程的基本思想; 2.掌握OpenGL下简单图形的平移、旋转、缩放变换的编程的基本步骤; 二、实验原理: 在OpenGL中,可以使用下面三个函数便捷地实现简单图形平移、旋转、缩放变换的功能: glRotatef(theta, vx, vy, vz); glTranslatef(dx, dy, dz); glScalef(sx,sy,sz); 三、实验内容: // 1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "glut.h" #include "math.h" void display() { glClear( GL_COLOR_BUFFER_BIT); // Clear the frame buffer glColor3f( 0.0, 1.0, 1.0); // Set current color to green glBegin( GL_POLYGON); // Draw the triangle glV ertex2f( 0.0, -0.2); glV ertex2f( 0.2, 0.0); glV ertex2f( 0.0, 0.0); glEnd(); glFlush(); } void dsp()

计算机图形学第二版课后习题答案

第一章绪论 概念:计算机图形学、图形、图像、点阵法、参数法、 图形的几何要素、非几何要素、数字图像处理; 计算机图形学和计算机视觉的概念及三者之间的关系; 计算机图形系统的功能、计算机图形系统的总体结构。 第二章图形设备 图形输入设备:有哪些。 图形显示设备:CRT的结构、原理和工作方式。 彩色CRT:结构、原理。 随机扫描和光栅扫描的图形显示器的结构和工作原理。 图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算 第三章交互式技术 什么是输入模式的问题,有哪几种输入模式。 第四章图形的表示与数据结构 自学,建议至少阅读一遍 第五章基本图形生成算法 概念:点阵字符和矢量字符; 直线和圆的扫描转换算法; 多边形的扫描转换:有效边表算法; 区域填充:4/8连通的边界/泛填充算法;

内外测试:奇偶规则,非零环绕数规则; 反走样:反走样和走样的概念,过取样和区域取样。 5.1.2 中点 Bresenham 算法(P109) 5.1.2 改进 Bresenham 算法(P112) 习题答案

习题5(P144) 5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。(P111) 解: k<=-1 |△y|/|△x|>=1 y为最大位移方向 故有 构造判别式: 推导d各种情况的方法(设理想直线与y=yi+1的交点为Q): 所以有: y Q-kx Q-b=0 且y M=y Q d=f(x M-kx M-b-(y Q-kx Q-b)=k(x Q-x M) 所以,当k<0, d>0时,M点在Q点右侧(Q在M左),取左点 P l(x i-1,y i+1)。 d<0时,M点在Q点左侧(Q在M右),取右点 Pr(x i,y i+1)。 d=0时,M点与Q点重合(Q在M点),约定取右点 Pr(x i,y i+1) 。 所以有 递推公式的推导: d2=f(x i-1.5,y i+2) 当d>0时, d2=y i+2-k(x i-1.5)-b 增量为1+k =d1+1+k

计算机图形学与图像处理教案

精编资料 了解图形学与图像处理的发展,应用以及当前国际国内研究的热点和重要成果;理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等;... 图形,图像 计算机图形学与图像处理教案 学时:36,其中讲授26学时,上机10学时。 适用专业:信计专业与数学专业。 先修课程:高等数学、线性代数、数据结构、VC++或者C# 一、课程的性质、教育目标及任务: 计算机图形学与图像处理实际上是两门课程的一个综合。这是一门研究图形学与图像处理的基本理论、方法及其在智能化检测中应用的学科,是计算机科学与技术等电子信息类本科专业的专业课。 本课程侧重于对图形学的基本图元的基本生成,以及图像处理中对图像在空间域与频率域的基本处理算法的研究。并对图形学与图像处理基本理论和实际应用进行系统介绍。目的是使学生系统掌握图形学与图像处理的基本概念、原理和实现方法,学习图形学与图像处理分析的基本理论、典型方法和实用技术,具备解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下扎实的基础。 二、教学内容基本要求: 1.了解图形学与图像处理的发展、应用以及当前国际国内研究的热点和重要成果; 2.理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等; 3.掌握图形学与图像处理中最基本、最广泛应用的概念、原理、理论和算法以及基本技术和方法; 4.能够运用一门高级语言编写简单的图形学与图像处理软件,实现各种图形学与图像处理的算法。 三、主要教学内容:

学习图形学的基本概念,了解光栅显示系统的原理;掌握基本图元的生成算法:直线的生成算法、曲线的生成算法、多边形的生成算法;掌握区域填充、线段剪裁以及多边形的剪裁;掌握图元的几何变换、以及投影的基本理论。 了解图像的概念;图像数字化的基本原理:取样、量化、数字图像的表示;线性系统理论在图像变换,滤波中的应用:线性系统理论、离散图像变换、小波变换;图像编码压缩、增强,以及复原的基本方法:无失真压缩、有失真压缩、变换编码、压缩标准、图像滤波原理、复原滤波器、直方图运算、点运算;图像识别的基本原理和方法:图像分割、图像分析、图像分类; 四、学时安排 总课时72学时,图形学36学时,其中包括26个学时讲授,10个学时上机;图像处理36学时,其中包括26个学时讲授,10个学时上机; 五、参考书目: (1), Donald Hearn & M,Pauline Baker (2),< Computer Graphics with OpenGL, Third Edition> Donald Hearn & M,Pauline Baker (3),计算机图形学实用技术陈元琰,张晓竞,科学出版社 (4),计算机图形学倪明田,吴良芝北京大学出版社 (5) <>, Rafael C. Gonzalez & Richard E. Woods. Publishing House of Electronics Industry. (6) << Image Processing ,Analysis, and Machine Vision ( second Edition)>> ,Milan Sonka, V aclav Hlavac. Publishing House of People Post 第一讲图形学基本概念 重点: 了解图形学概念;掌握图形学中的几个概念:分辨率,光栅,扫描线,像素,帧缓冲器;了解图形学的基本用途;掌握图形学光栅扫描显示系统的工作原理; 难点: 光栅扫描显示系统的工作原理; 教学方法: 课堂讨论式教学方法,基于问题式以及启发式教学方法相结合。双语教学。 主要内容: 1,什么是计算机图形学? 2,计算机图形学的主要用途是什么? 3,计算机图形学中的一些基本概念: 什么是分辨率?什么是光栅?什么是光栅扫描系统的扫描线?什么是像 素?什么是帧缓冲器?什么是刷新率?

计算机图形学试验指导一–OpenGL基础

计算机图形学实验指导(一) –OpenGL基础 1.综述 这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是Visual C++,它对OpenGL提供了完备的支持。 尽管OpenGL包括渲染命令,但却独立于任何窗口系统和操作系统。因此,OpenGL并不包括用来打开窗口以及从键盘或鼠标读取事件的命令。在这里,我们应用GLUT库简化Windows窗口操作。 2.准备GLUT库 下载glut压缩包后,解压,把glut32.dll放在Windows的system32目录下,将glut32.lib 放在C:\program files\Microsoft Visual Studio\VC98\Lib目录中,将glut.h放在C:\program files\Microsoft Visual Studio\VC98\Include\GL目录中 2.在VC中新建项目 新建一个项目。 选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,回车即可。VC为你创建一个工作区(WorkSpace),你的项目就放在这个工作区里。 为项目添加文件 为了使用OpenGL,我们需要在项目中加入相关的Lib文件:glut32.lib 选中菜单Project->Settings项,在link选项卡中的Object/Library modules栏中加入glut32.lib。 选择菜单File中的New选项,弹出一个分页的对话框,选中页Files中的C++sourcefile,填入文件名,钩选添加到刚才建的那个工程里,然后就可以开始编程了。 3.一个OpenGL的例子 #include //初始化OpenGL void init(void) { glClearColor(0.0f, 0.0f, 0.0f, 0.0f);//设置背景颜色 glShadeModel(GL_FLAT);//设置明暗处理 } //主要的绘制过程 void display(void) { glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓存 glBegin(GL_LINES);//开始画直线 glColor3f(1.0f, 1.0f, 1.0f);//设置颜色为白色 glVertex2f(30.0f, 30.0f);//第一根线的两个端点 glVertex2f(200.0f, 400.0f);

计算机图形学基础教程习题课1(第二版)(孙家广-胡事民编著)

1.列举计算机图形学的主要研究内容。 计算机中图形的表示方法、图形的计算、图形的处理和图形的显示。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 2.常用的图形输出设备是什么? 显示器(CRT、LCD、等离子)、打印机、绘图仪等。 2.常用的图形输入设备是什么? 键盘、鼠标、跟踪球、空间球、数据手套、光笔、触摸屏、扫描仪等。 3.列出3种图形软件工具。 AutoCAD、SolidWorks、UG、ProEngineer、CorelDraw、Photoshop、PaintShop、Visio、3DMAX、MAYA、Alias、Softimage等。 错误:CAD 4.写出|k|>1的直线Bresenham画线算法。 d d d d 设直线方程为:y=kx+b,即x=(y-b)/k,有x i+1=x i+(y i+1-y i)/k=x i+1/k,其中k=dy/dx。因为直线的起始点在象素中心,所以误差项d的初值d0=0。y下标每增加1,d的值相应递增1/k,即d=d+1/k。一旦d≥1,就把它减去1,这样保证d在0、1之间。 ●当d≥0.5时,最接近于当前象素的右上方象素(xi+1,y i+1),x方向加1,d减 去1; ●而当d<0.5时,更接近于上方象素(x i,yi+1)。

为方便计算,令e=d-0.5,e的初值为-0.5,增量为1/k。 ●当e≥0时,取当前象素(x i,y i)的右上方象素(xi+1,y i+1),e减小1; ●而当e<0时,更接近于上方象素(xi,yi+1)。 voidBresenhamline (int x0,int y0,intx1, inty1,int color) { int x,y,dx,dy; float k,e; dx= x1-x0, dy = y1-y0,k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; i≤dy; i++) {drawpixel(x, y,color); y=y+1,e=e+1/k; if (e≥0) { x++, e=e-1;} } } 4.写出|k|>1的直线中点画线算法。 构造判别式:d=F(M)=F(xp+0.5,y p+1)=a(x p+0.5)+b(yp+1)+c ●当d<0,M在Q点左侧,取右上方P2为下一个象素; ●当d>0,M在Q点右侧,取上方P1为下一个象素; ●当d=0,选P1或P2均可,约定取P1为下一个象素;

计算机图形学课程教学大纲

《计算机图形学》课程教学大纲一、课程基本信息 课程代码:110053 课程名称:计算机图形学 英文名称:Computer Graphics 课程类别:专业课 学时:72 学分: 适用对象:信息与计算科学专业本科生 考核方式:考试(平时成绩占总成绩的30%) 先修课程:高级语言程序设计、数据结构、高等代数 二、课程简介 中文简介: 计算机图形学是研究计算机生成、处理和显示图形的学科。它的重要性体现在人们越来越强烈地需要和谐的人机交互环境:图形用户界面已经成为一个软件的重要组成部分,以图形的方式来表示抽象的概念或数据已经成为信息领域的一个重要发展趋势。通过本课程的学习,使学生掌握计算机图形学的基本原理和基本方法,理解图形绘制的基本算法,学会初步图形程序设计。 英文简介: Computer Graphics is the subject which concerned with how computer builds, processes and shows graphics. Its importance has been shown in people’s more and more intensively need for harmony human-machine interface. Graphics user interface has become an important part of software. It is a significant trend to show abstract conception or data in graphics way. Through the learning of this course, students could master Computer Graphics’basic theories and methods,understand graphics basic algorithms and learn how to design basic graphics program. 三、课程性质与教学目的 《计算机图形学》是信息与计算科学专业的一门主要专业课。通过本课程的学习,使学生掌握基本的二、三维的图形的计算机绘制方法,理解光栅图形生成基本算法、几何造型技术、真实感图形生成、图形标准与图形变换等概念和知识。学会图形程序设计的基本方法,为图形算法的设计、图形软件的开发打下基础。 四、教学内容及要求 第一章绪论 (一)目的与要求 1.掌握计算机图形学的基本概念; 2.了解计算机图形学的发展、应用; 3.掌握图形系统的组成。

计算机图形学 opengl 文字显示

#include #include #include #pragma comment(linker, "/subsystem:console") using namespace std; void myReshape(GLsizei w,GLsizei h) { glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w<=h) glOrtho(-20.0,20.0,-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-50.0,50.0); else glOrtho(-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-20.0,20.0,-50.0,50.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void drawCNString(const char* str) { int len=0, i; wchar_t* wstring; HDC hDC = wglGetCurrentDC(); GLuint list = glGenLists(1); for(i=0; str[i]!='\0'; ++i) { if( IsDBCSLeadByte(str[i]) ) ++i; ++len; } wstring = (wchar_t*)malloc((len+1) * sizeof(wchar_t)); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstring, len); wstring[len] = L'\0'; for(i=0; i

《计算机图形学》习题

《计算机图形学》习题(中文) 一、填空题: 1.计算机图形学是指使用计算机通过()在显示设备上构造出图形来。答案:算法和程序 2.图象的分辨率指的是在水平和垂直方向上每单位长度所包含的()数目。 答案:象素点 3.计算机图形系统由硬件设备及相应的()两部分组成。 答案:程序系统(软件) 4.阴极射线管主要由3部分组成:电子枪、()和荧光屏。 答案:偏转系统 5.直线的属性包括:()、()和线色。 答案:线型线宽 6.有些情况下屏幕的左上角象素点被认为是屏幕坐标系的原点。当把这个系统下的象素坐标(x,y)转换到以屏幕的左下角点为原点的坐标系下时,假定垂直方向象素点数目为m,则该点的坐标变为( ). 答案: (x,m-y-1) 7.Hermite 曲线是给定曲线段的两个端点坐标以及两端点处的()来描述曲线的。 答案:切线矢量 8.Bezier曲线通过特征多边形的()。 答案:起点和终点 9.交互式图形系统的基本交互任务包括()、()、数值输入及文字输入。 答案:定位选择 10.衡量CRT的重要性能指标分别是分辨率和纵横比。 11.如果屏幕的分辨率是640×480,则如果是一个只能显示黑白图形的显示器,则需要VRAM的大小为:(640×480)/8=38400 bytes≈3.8Kb 12.常用的输入设备:键盘、鼠标。 13.写出颜色分别为红、绿、蓝的RGB值_(255,0,0)、(0,255,0)、(0,0,255)。 14.种子填充算法中内部定义的或边界定义的区域可以分为4连接和 8连接两种连通方式。 15.二维图形旋转变换中,逆时针为正方向顺时针为负方向 二、选择题: 1.经国际标准化组织批准的第一个图形标准是 ( )。 A. 3D CORE B.GKS C. PHIGS D. CKS

计算机图形学课程教学大纲

计算机图形学课程教学大 纲 Final approval draft on November 22, 2020

《计算机图形学》课程教学大纲 一、课程基本信息 课程代码:110053 课程名称:计算机图形学 英文名称:Computer Graphics 课程类别:专业课 学时:72 学分:3.5 适用对象:信息与计算科学专业本科生 考核方式:考试(平时成绩占总成绩的30%) 先修课程:高级语言程序设计、数据结构、高等代数 二、课程简介 中文简介: 计算机图形学是研究计算机生成、处理和显示图形的学科。它的重要性体现在人们越来越强烈地需要和谐的人机交互环境:图形用户界面已经成为一个软件的重要组成部分,以图形的方式来表示抽象的概念或数据已经成为信息领域的一个重要发展趋势。通过本课程的学习,使学生掌握计算机图形学的基本原理和基本方法,理解图形绘制的基本算法,学会初步图形程序设计。 英文简介: Computer Graphics is the subject which concerned with how computer builds, processes and shows graphics. Its importance has been shown in people’s more and more intensively need for harmony human-machine interface. Graphics user interface has become an important part of software. It is a significant trend to show abstract conception or data in graphics way. Through the learning of this course, students could master Computer Graphics’basic theories and methods,understand graphics basic algorithms and learn how to design basic graphics program. 三、课程性质与教学目的 《计算机图形学》是信息与计算科学专业的一门主要专业课。通过本课程的学习,使学生掌握基本的二、三维的图形的计算机绘制方法,理解光栅图形生成基本算法、几何造型技术、真实感图形生成、图形标准与图形变换等概念和知识。学会图形程序设计的基本方法,为图形算法的设计、图形软件的开发打下基础。 四、教学内容及要求 第一章绪论 (一)目的与要求 1.掌握计算机图形学的基本概念; 2.了解计算机图形学的发展、应用;

计算机图形学-绘制太阳系

实验名称:绘制太阳系(实验八) 班级:信09-1 学号:2108190911211 姓名:王杰 【实验目的】 1. 掌握GLUT实用包中创建多面体以及二次曲面的函数 2. 掌握OpenGL中的基本光照函数 3. 对几何变换、投影变换等内容进行复习 【实验内容】 1.在窗口绘制三个球体,分别代表太阳、地球和月球 2.为每个球体设置恰当的几何变换,要求: (1)太阳在场景中间 (2)地球在自转的同时绕太阳旋转 (3)月球在自转的同时绕地球旋转 3.为场景添加适当的光照渲染 4.源程序 #include static int day = 365; // day的变化:从0到359 void myDisplay(void) { glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(75, 1, 2, 400000000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -20000000, 200000000, 0, 0, 0, 0, 0, 1); // 黄色的"太阳" glColor3f(1.0f, 2.0f, 0.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glutSolidSphere(69600000, 100, 100); // 蓝色的"地球" glColor3f(0.0f, 2.0f, 1.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(150000000, 0.0f, 0.0f); glutSolidSphere(15945000, 100, 100);

计算机图形学OpenGL(键盘控制三维汽车)

计算机图形学OpenGL ——键盘控制三维汽车 源程序: #include"stdafx.h" #include #include #include #include #include static GLfloat xRot = 0.0f; static GLfloat yRot = 0.0f;

void Display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(xRot, 1.0f, 0.0f, 0.0f); //绕x轴旋转 glRotatef(yRot, 0.0f, 1.0f, 0.0f); //绕y轴旋转 //车下半部 glBegin(GL_POLYGON); glColor3f(0.1, 0.1, 0.8); glVertex3f(-40.0f,0.0f,15.0f); glVertex3f(40.0f,0.0f,15.0f); glColor3f(1, 0.5, 0.8); glVertex3f(40.0f,-15.0f,15.0f); glVertex3f(-40.0f,-15.0f,15.0f); glEnd(); glBegin(GL_POLYGON); glColor3f(0.3, 0.2, 0.5); glVertex3f(40.0f,0.0f,-15.0f); glVertex3f(40.0f,0.0f,15.0f); glVertex3f(40.0f,-15.0f,15.0f); glVertex3f(40.0f,-15.0f,-15.0f); glEnd(); glBegin(GL_POLYGON); glColor3f(0.3, 0.1, 0.3); glVertex3f(-40.0f,0.0f,-15.0f); glVertex3f(-40.0f,0.0f,15.0f); glVertex3f(-40.0f,-15.0f,15.0f); glVertex3f(-40.0f,-15.0f,-15.0f); glEnd(); glBegin(GL_POLYGON); glColor3f(0.1, 0.1, 0.8); glVertex3f(-40.0f,0.0f,-15.0f); glVertex3f(40.0f,0.0f,-15.0f); glColor3f(1, 0.5, 0.8); glVertex3f(40.0f,-15.0f,-15.0f); glVertex3f(-40.0f,-15.0f,-15.0f); glEnd(); glBegin(GL_POLYGON); glColor3f(0, 0, 1); glVertex3f(-40.0f,0.0f,15.0f); glVertex3f(-40.0f,0.0f,-15.0f); glVertex3f(40.0f,0.0f,-15.0f); glVertex3f(40.0f,0.0f,15.0f); glEnd(); glBegin(GL_POLYGON);

计算机图形学第六版答案

计算机图形学第六版答案 【篇一:计算机图形学第二版课后习题答案】 计算机图形学、图形、图像、点阵法、参数法、 图形的几何要素、非几何要素、数字图像处理; 计算机图形学和计算机视觉的概念及三者之间的关系; 计算机图形系统的功能、计算机图形系统的总体结构。 第二章图形设备 图形输入设备:有哪些。 图形显示设备:crt的结构、原理和工作方式。 彩色crt:结构、原理。 随机扫描和光栅扫描的图形显示器的结构和工作原理。 图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算 第三章交互式技术 什么是输入模式的问题,有哪几种输入模式。 第四章图形的表示与数据结构 自学,建议至少阅读一遍 第五章基本图形生成算法 概念:点阵字符和矢量字符; 直线和圆的扫描转换算法; 多边形的扫描转换:有效边表算法; 区域填充:4/8连通的边界/泛填充算法; 内外测试:奇偶规则,非零环绕数规则; 反走样:反走样和走样的概念,过取样和区域取样。 5.1.2 中点 bresenham 算法(p109) 5.1.2 改进 bresenham 算法(p112) 习题答案 习题5 (p144) 5.3 试用中点bresenham算法画直线段的原理推导斜率为负且大于 1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终 画图过程)。(p111) 解: k=-1 |△y|/|△x|=1 y为最大位移方向 故有 构造判别式:

推导d各种情况的方法(设理想直线与y=yi+1的交点为q): 所以有: yq-kxq-b=0 且 ym=yq d=f(xm-kxm-b-(yq-kxq-b)=k(xq-xm) 所以,当k0, d0时,m点在q点右侧(q在m左),取左点 pl(xi-1,yi+1)。 d0时,m点在q点左侧(q在m右),取右点 pr(xi,yi+1)。 d=0时,m点与q点重合(q在m点),约定取右点pr(xi,yi+1) 。所以有 递推公式的推导: d2=f(xi-1.5,yi+2) 当d0时, d2=yi+2-k(xi-1.5)-b 增量为1+k =d1+1+k 当d0时, d2=yi+2-k(xi-0.5)-b 增量为1 =d1+1 当d=0时, 5.7 利用中点 bresenham 画圆算法的原理, 推导第一象限y=0到y=x圆弧段的扫描转换算法 (要求写清原理、误差函数、递推公式及最终画图过程)。(p115)解:在x=y到y=0的圆弧中,(r,0)点比在圆弧上,算法从该点开始。 最大位移方向为y,由(r,0)点开始,y渐增,x渐减,每次y方向加1,x方向减1或减0。 +1)和左点pl(xi-1,yi+1),取pl和pr的中点m(xi-0.5,yi+1),设理想圆与y=yi+1的交点q, 构造判别式: d=f(xm,ym)=(x-0.5)+(yi+1)+r 当d0时,m在q点左方(q在m右),取右点pr(xi,yi+1) 当d0时,m在q点右方(q在m左),取左点pl(xi-1,yi+1) 当d=0时,m与q点重合,约定取左点pl(xi-1,yi+1) 222 所以有: 推导判别式: d=0时,取左点pl(xi-1,yi+1),下一点为(xi-1,yi+2)和(xi- 2,yi+2) d0时,取右点pr(xi,yi+1),下一点为(xi,yi+2)和(xi-1,yi+2)

计算机图形学基础教程实验报告

湖北民族学院信息工程学院实验报告 (数字媒体技术专业用) 班级:姓名:谌敦斌学号:031241318实验成绩: 实验时间:2013年10 月14 日9、10 节实验地点:数媒实验室课程名称:计算机图形学基础教程实验类型:设计型 实验题目:直线与圆的绘制 一、实验目的 通过本次实验,熟练掌握DDA、中点、Bresenham直线绘制方法和中点、Bresenham圆的画法,能够在vc环境下独立完成实验内容,逐渐熟悉opengl的语法特点,提高程序基本绘图的能力。 二、实验环境(软件、硬件及条件) Microsoft vc++6.0 多媒体计算机 三、实验内容 1.从DDA、中点、Bresenham画线法中任选一种,完成直线的绘制。 2.从中点、Bresenham画圆法中任选一种,完成圆的绘制。 四、实验方法与步骤 打开vc++6.0,新建一个工程,再在工程里面建一个.cpp文件,编辑程序,编译连接后执行即可。

程序如下 bresenham画线法: #include #include int bresenham(int x0,int y0,int x1,int y1,int color) { int x,y,dx,dy,e,i; dx=x1-x0; dy=y1-y0; e=-dx; y=y0; for(x=x0;x<=x1;x++) { putpixel(x,y,color); e+=2*dy; if(e>=0) { y++; e-=2*dx; } } return 0; } int main() { initgraph(640,480); bresenham(0,0,500,200,255); while(!kbhit()) { } closegraph(); return 0; } Bresenham画圆法: #include #include int circlepoints(int x,int y,int color) { putpixel(255+x,255+y,color); putpixel(255+y,255+x,color); putpixel(255-x,255+y,color);

计算机图形学OpenGL版实验1-4

实验1 OpenGL初识 一、实验目的: 熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘图的特点;利用VC+OpenGL作为开发平台设计程序,以能够在屏幕上生成任意一个像素点为本实验的结束。 二、实验内容: (1)了解和使用VC的开发环境,理解简单的OpenGL程序结构。 (2)掌握OpenGL提供的基本图形函数,尤其是生成点的函数。 三、该程序的作用是在一个黑色的窗口中央画一个矩形、三角形和三个点,如图所示。下面对各行语句进行说明: 首先,需要包含头文件#include ,这是GLUT的头文件。 然后看main函数。int main(int argc, char *argv[]),这个是带命令行参数的main函数。这种以glut开头的函数都是GLUT工具包所提供的函数,下面对用到的几个函数进行介绍; 1)glutInit,对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。其格式比较固定,一般都是glutInit(&argc, argv)就行; 2) glutInitDisplayMode,设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。更多信息,以后的实验教程会有讲解介绍; 3) glutInitWindowPosition,设置窗口在屏幕中的位置; 4) glutInitWindowSize,设置窗口的大小; 5) glutCreateWindow,根据前述设置的信息创建窗口。参数将被作为窗口的标题。注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop才能看到窗口; 6) glutDisplayFunc,设置一个函数,当需要进行画图时,这个函数就会被调用。(暂且这样理解); 7) glutMainLoop,进行一个消息循环。(现在只需知道这个函数可以显示窗口,并且等待窗口关闭后才会返回。) 在glutDisplayFunc函数中,我们设置了“当需要画图时,请调用myDisplay 函数”。于是myDisplay函数就用来画图。观察myDisplay中的三个函数调用,发现它们都以gl开头。这种以gl开头的函数都是OpenGL的标准函数,下面对用到的函数进行介绍: 1) glClearColor(0.0, 0.0, 0.0, 0.0) :将清空颜色设为黑色(为什么会有四个参数?); 2) glClear(GL_COLOR_BUFFER_BIT):将窗口的背景设置为当前清空颜色; 3) glRectf,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标; 4) glFlush,保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。 四、实验代码: # include void mydisplay(void)

相关文档
相关文档 最新文档