利用OpenGL 绘制基本图元 五角星

利用OpenGL 绘制基本图元 五角星
利用OpenGL 绘制基本图元 五角星

实验1:利用OpenGL 绘制基本图元

1、实验要求和目的:

a、掌握vc++程序开发环境,熟悉OpenGL基本程序结构。

b、掌握基本图元的绘制方法。

2、实验内容:

a、点、线、三角形、多边形的绘制

3、实验步骤:

a、OpenGL相关库文件的安装;

b、新建工程,OpenGL相关.lib链接,.cpp文件中包含相关.h文件

c、输入、调试、运行OpenGL绘制基本图元的程序。

d、设计五角星(填充)及过渡色扇面(三角,四角)的生成算法的实现程序。

4、实验代码

#include

#include

#include

#include

#include

voidmyDraw() {

glClear (GL_COLOR_BUFFER_BIT);

glColor3f (0.0, 0.0, 1.0);

glPointSize(1.0);

/*

假设五角星外接圆半径为1,有一个角朝上,以五角星中心为原点:

则五个角顶点坐标分别为(按顺时针):

A(0,1)

B(cos18°,sin18°)

C(cos54°,-sin54°)

D(-cos54°,-sin54°)

E(-cos18°,sin18°)

假设t为内部五边形外接圆半径,

t=(1+tan^2(18°))/(3-tan^2(18°)),即0.3819660112501

则五个顶点所对应的坐标为(即内部五边形的五个顶点):

BB(-t*cos18°,-t*sin18°)3

CC(-t*cos54°,t*sin54°) 2

DD(t*cos54°,t*sin54°) 1

AA(0,-t) 4

EE(t*cos18°,-t*sin18°)5

*/

//up

glBegin(GL_TRIANGLES); // 绘制三角形

glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点

glVertex3f(0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0), 0.0f); // 1 glVertex3f(-0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0),0.0f); // 2 glEnd();

glColor3f (0.0, 1.0, 1.0);

//left-up

glBegin(GL_TRIANGLES); // 绘制三角形

glVertex3f( -1.0f*cos(18*3.14/180.0), 1.0*sin(18*3.14/180.0), 0.0f); //

glVertex3f(-0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0),0.0f);//2 glVertex3f(-0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); // 3 glEnd();

glColor3f (1.0, 0.0, 1.0);

//left-down

glBegin(GL_TRIANGLES); // 绘制三角形

glVertex3f( -1.0f*cos(54*3.14/180.0), -1.0*sin(54*3.14/180.0), 0.0f); //

glVertex3f(-0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); //3 glVertex3f(0.0,-0.38f, 0.0f); // 4

glEnd();

glColor3f (0.0, 1.0, 0.0);

//right-down

glBegin(GL_TRIANGLES); // 绘制三角形

glVertex3f(1.0f*cos(54*3.14/180.0),-1.0f*sin(54*3.14/180.0), 0.0f);

glVertex3f(0.0,-0.38f, 0.0f); // 4

glVertex3f(0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); // 5

glEnd();

glColor3f (1.0, 0.4, 0.5);

//right-up

glBegin(GL_TRIANGLES); // 绘制三角形

glVertex3f( 1.0f*cos(18*3.14/180.0), 1.0*sin(18*3.14/180.0), 0.0f); //

glVertex3f(0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); // 5 glVertex3f(0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0), 0.0f); // 1 glEnd();

glColor3f (0.5, 1.0, 1.0);

glBegin(GL_POLYGON);

glVertex3f(0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0), 0.0f); // 1 glVertex3f(-0.38f*cos(54*3.14/180.0),0.38f*sin(54*3.14/180.0),0.0f); // 2 glVertex3f(-0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); //3 glVertex3f(0.0,-0.38f, 0.0f); // 4

glVertex3f(0.38f*cos(18*3.14/180.0),-0.38f*sin(18*3.14/180.0),0.0f); // 5 glEnd();

glFlush();

}

int main(intargc, char* argv[]) {

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(500, 500);

glutInitWindowPosition(0,0);

glutCreateWindow("Sterpinski Triangle");

glutDisplayFunc(myDraw);

glutMainLoop();

return 0;

}

D图像生成算法原理

D图像生成算法原理 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

3D图像生成算法原理 一、建齐次坐标 二、着色模型 三、Z缓存 四、纹理映射 在这些步骤中,显示部分(GPU)只负责完成第三、四步,而前两个步骤主要是依靠 CPU 来完成。而且,这还仅仅只是3D图象的生成,还没有包括游戏中复杂的AI运算。 场景切换运算等等……无疑,这些元素还需要CPU去完成,这就是为什么在运行大型3D的时候,当场景切换时再强劲的显卡都会出现停顿的现象。 3D芯片的处理对象是多边形表示的物体。用多边形表示物体有两个优点:首先是直接(尽管繁琐), 多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处理(shading)技术消除;其次是仅存储多边形顶点的几何信息, 多边形内部每个象素的明暗颜色计算所需的信息由这些顶点信息插值而来,这正是易于用图形硬件支持的快速明暗处理技术。 支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的物体,通过对这种物体的表面进行三角剖分, 用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。

当然,用多边形表示物体也有其缺点,如增加了纹理映射和阴影生成的难度,当需要详细表示复杂物体时所需的三角形数量将变得非常庞大。 将多边形表示的物体显示到计算机屏幕上,这一过程涉及物体在计算机内部的表示方式即物体的数据结构, 由物体组成的场景的组织结构,物体从场景到屏幕空间要经过的一系列变换,以及产生最终屏幕图象要经过的一系列光栅化处理。 这些方面都涉及到特定的处理算法,相应的算法又有许多不同的变种。 下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍,这些是理解3D图形处理及图形硬件的基础。 一、3D物体的表示法 具有复杂外形的物体其表面可以由多边形面片来近似表示。以图1的圆柱为例,其柱面可以由2N个三角形近似,其两端可以由两个N边形来近似。 多边形模型在其轮廓上的分段线性特征是这一表示法主要的视觉缺陷,改进的唯一途径是增加多边形的分辨率。 对于一个复杂形体来说,为了充分表示其细节,常常要用到十万个以上的多边形。这将耗费许多数据库访问时间和绘制时间。 当将多边形模型进行放大处理时,会产生连接问题。这就是所谓的“几何走样”。

第四章:基本平面图形知识点及经典例题

第四章:基本平面图形知识点 一、寻找规律: (1) 2 n n - ◆ 数线段条数:线段上有n 个点(包括线段两个端点)时,共有(1) 2 n n -条线段 ◆ 数角的个数:以0为端点引n 条射线,当∠AOD<180°时, 则(如图)?小于平角的角个数为(1) 2 n n -. ◆ 数直线条数:过任三点不在同一直线上的n 点一共可画(1) 2 n n -条直线. ◆ 数交点个数:n 条直线最多有(1) 2 n n -个交点. ◆ 握手问题:数n 个人两两握手能握(1) 2 n n -次. 二、基本概念 1.线段、射线、直线 (1)线段:绷紧的琴弦、人行道横线都可以近似地看做线段. 线段的特点:是直的,它有两个端点. (2)射线:将线段向一方无限延伸就形成了射线. 射线的特点:是直的,有一个端点,向一方无限延伸. (3)直线:将线段向两个方向无限延长就形成了直线. 直线的特点:是直的,没有端点,向两方无限延伸. 2.线段的中点 把一条线段分成两条相等的线段的点,叫做线段的中点. 利用线段的中点定义,可以得到下面的结论: (1)因为AM=BM=12 AB ,所以M 是线段AB 的中点. (2)因为M 是线段AB 的中点,所以AM=BM=12 AB 或AB=2AM=2BM . 3.角 由两条具有公共端点的射线组成的图形叫做角,公共端点叫做角的顶点,两条射线叫做角的边. 角也可以看成是由一条射线绕着它的端点旋转而成的. 一条射线绕着它的端点旋转,当终边和始边成一条直线时,所成的角叫做平角.终边继续旋转,当它又和始边重合时,所成的角叫做周角. 4.角平分线 从一个角的顶点引出的一条射线,把这个角分成两个相等的角,这条射线叫做这个角的平分线. 5.两点之间的距离 两点之间的线段的长度,叫做这两点之间的距离. 6.直线的性质 经过两点有且只有一条直线,其中“有”表示“存在性”,“只有”表示“惟一性”. 7.线段的性质 两点之间的所有连线中,线段最短. 三、线段、角的表示方法 线段的记法: ①用两个端点的字母来表示 ②用一个小写英文字母表示 射线的记法: 用端点及射线上一点来表示,注意端点的字母写在前面 直线的记法: ①用直线上两个点来表示 ②用一个小写字母来表示 角的表示:①用三个大写字母表示,表示顶点的字母写在中间:∠AOB ; ②用一个大写字母表示:∠O ; ③用一个希腊字母表示:∠a; ④用一个阿拉伯数学表示:∠1。 四、线段、角的比较 度量法 叠合法 1.作一条线段等于已知线段 作法: O A 顶点 边 边 B a 1 O A 射线OA A B a 直线AB 直线a

基本图元的生成算法

基本图元的生成算法 一、实验目的1、初步了解显示窗口与视区的关系2、掌握OpengGL点、直线、多边形的绘制3、掌握DDA直线生成算法。4、掌握Bresenham直线生成算法二、实验环境硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境:操作系统:Windows XP。语言开发工具:VC6.0。 三、实验内容与要求 1、调出实验一的源代码运行,调整修改使得显示窗口大小改变时,绘制的矩形大小随之改变。如图2-1所示。提示:(1)在main函数里添加注册窗口变化函数glutReshapeFunc(myreshape); (放在glutMainLoop()之前)(2)在程序中添加窗口改变子函数,参数w,h为当前显示窗口的宽和高 void myreshape(GLsizei w, GLsizei h) { glViewport(0,0,w,h); //设置视区位置 glMatrixMode(GL_PROJECTION);//设置投影变换模式 glLoadIdentity(); //调单位矩阵,清空当前矩阵堆栈 if(w<=h) gluOrtho2D(0,300,0,300*(GLfloat)h/(GLfloat)w); //设置裁剪窗口大小 else gluOrtho2D(0,300*(GLfloat)w/(GLfloat)h,0,300); } a) 显示窗口改变前 b)显示窗口变大后 未修改前的初始源程序参考如下: /*my first program.cpp*/ #include void display(void)

{ glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区 glRectf(0,0,0.5,0.5); glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的 OpenGL命令得到执行 } void main(int argc, char** argv) { glutInit(&argc, argv); //初始化GLUT库 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //设置显示模式 glutInitWindowSize(100, 200); glutCreateWindow("hello"); //创建窗口,标题为“hello” glutDisplayFunc(display); //用于绘制当前窗口 glutMainLoop(); //表示开始运行程序,用于程序的结尾 } 2、自己参照讲义或教材按照自己的构思画二维平面图形, 修改样本程序 circle-algorithm.cpp将上面的矩形替换成自己构思的二维平面图形。注意顶点的顺序。 参考函数: (1)、点绘制举例 glPointSize(2.0) //点的大小设置 glBegin(GL_POINTS); glColor3f(1.0,1.0,1.0); glVertex2f(-0.5,-0.5); //顶点 glColor3f(1.0,0.0,1.0); glVertex2f(-0.5,0.5); glColor3f(0.0,1.0,1.0); glVertex2f(0.5,0.5); glColor3f(1.0,1.0,0.0); glVertex2f(0.5,-0.5); glEnd() (2)、直线/三角形/四边形绘制举例 glLineWidth(2.0); glBegin(GL_LINES); // glBegin(GL_LINE_STRIP); // glBegin(GL_LINE_LOOP); // glBegin(GL_TRIANGLES); // glBegin(GL_TRIANGLE_STRIP); // glBegin(GL_TRIANGLE_FAN); // glBegin(GL_QUADS); // glBegin(GL_TRIANGLE_STRIP); glVertex2f(-0.5,0.5);

3D图像生成算法原理

3D图像生成算法原理 一、建齐次坐标 二、着色模型 三、Z缓存 四、纹理映射 在这些步骤中,显示部分(GPU)只负责完成第三、四步,而前两个步骤主要是依靠 CPU 来完成。而且,这还仅仅只是3D图象的生成,还没有包括游戏中复杂的AI运算。 场景切换运算等等……无疑,这些元素还需要CPU去完成,这就是为什么在运行大型3D的时候,当场景切换时再强劲的显卡都会出现停顿的现象。 3D芯片的处理对象是多边形表示的物体。用多边形表示物体有两个优点:首先是直接(尽管繁琐), 多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处理(shading)技术消除;其次是仅存储多边形顶点的几何信息, 多边形部每个象素的明暗颜色计算所需的信息由这些顶点信息插值而来,这正是易于用图形硬件支持的快速明暗处理技术。 支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的物体,通过对这种物体的表面进行三角剖分, 用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。 当然,用多边形表示物体也有其缺点,如增加了纹理映射和阴影生成的难度,当需要详细表示复杂物体时所需的三角形数量将变得非常庞大。

将多边形表示的物体显示到计算机屏幕上,这一过程涉及物体在计算机部的表示方式即物体的数据结构, 由物体组成的场景的组织结构,物体从场景到屏幕空间要经过的一系列变换,以及产生最终屏幕图象要经过的一系列光栅化处理。 这些方面都涉及到特定的处理算法,相应的算法又有许多不同的变种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍,这些是理解3D图形处理及图形硬件的基础。 一、3D物体的表示法 具有复杂外形的物体其表面可以由多边形面片来近似表示。以图1的圆柱为例,其柱面可以由2N个三角形近似,其两端可以由两个N边形来近似。 多边形模型在其轮廓上的分段线性特征是这一表示法主要的视觉缺陷,改进的唯一途径是增加多边形的分辨率。 对于一个复杂形体来说,为了充分表示其细节,常常要用到十万个以上的多边形。这将耗费许多数据库访问时间和绘制时间。 当将多边形模型进行放大处理时,会产生连接问题。这就是所谓的“几何走样”。 物体的多边形表示既可以通过交互设计人工提取,也可以通过激光扫描设备得到。总之,多边形表示的物体并不特别适合于交互操作或做自由的形状改变。 当改变物体的形状时很难保证多边形表示的完整性得到保持。 对多边形明暗着色所需要的信息存储在一个分层的数据结构中,每一个物体表面由指向多边形表的指针定义,该多边形表包含了近似该表

第四章图形的基本认识知识梳理完整版

学习好资料欢迎下载 第四章、图形的基本认识知识梳理 第一节、生活中的立体图形: 1、区分:柱体、锥体和球体: : 如图所示)、柱体分为圆柱和棱柱,(1 、椎体分为圆锥和棱锥,如图所示:2() (3)、球体,如图所示:

2、柱体的特征:(1)、上下两地面的形状和大小都一样;(2)、侧面的各棱在空间中是平行的;、上、下两底面都是圆形,则为圆柱,上下两底面都是多边形,则为棱柱;(3)底面多边形是几边形,柱体就是几棱柱。3椎体的特征:、;1):只有一个底面(棱锥的各棱在空间中是相交的)(、底面是圆形,则为圆锥,底面是多边形,则为棱锥,底面多边形是几边)(2 形,柱体就是几棱锥。多面体:围成多面体的各面是平的面。、4 3页:变式练习)、欧拉公式:顶点数+面数—棱数=2。(爱好者955 第二节、由立体图形到视图:(以左视图为主)。 1、清楚视图的分类:一般将视图分为主视图、俯视图、侧视图)1()、主视图:从物体正面得到的投影(从正面看,能看到的物体轮廓。)(2)、俯视图:从物体上面得到的投影(从上面看,能看到的物体轮廓。)(3)、侧视图:从物体侧面得到的投影(从侧面看,能看到的物体轮廓。(4)、三视图均为平面图形。(5)、参考题目---理科爱好者:题, 2、3,课堂精练97页:变式练习11、2题。71、5、6、题,100页课堂精练98页双基过关 (以圆锥为例)、三视图的一般位置排放:2 、主视图在俯视图正上方,左视图正左方;(1)(2)、俯视图在主视图的正下方;(3)、左视图在主视图的正右方;、三视图的绘图规则:3 、高平齐:主视图和左视图必须在同一水平线上,高度要相等。1)(、长对正:俯视图在主视图正下方,长短要一致。)(2 3()、宽相等:俯视图与俯视图的宽度要一致。、看不到的轮廓线要用虚线表示出来。(4)和变式练习。1页:例题97理科爱好者:---、参考题目)5(. 学习好资料欢迎下载

计算机基础第四章

第四章 一、单选题 1. A/D转换器的功能是将____。 A.声音转换为模拟量 B.模拟量转换为数字量 C.数字量转换为模拟量 D.数字量和模拟量混合处理 B 2. D/A转换器的功能是将____。 A.声音转换为模拟量 B.模拟量转换为数字量 C.数字量转换为模拟量 D.数字量和模拟量混合处理 C 3. 在多媒体的模拟波形声音数字化时,常采用的标准采样频率为____。 A 4. ____标准是用于视频影像和高保真声音的数据压缩标准。 A 5. 在windows7中,录音机录制的声音文件扩展名是_____。 B 6. ____标准是静态数字图像数据压缩标准。 C 7. 把连续的影视和声音信息经过压缩后,放到网络媒体服务器上,让用户边下载边收看,这种技术称为____。 A.流媒体技术 B.网络信息传输技术 C.媒体技术 D.网络媒体技术 A

8. ____是流媒体技术的基础。 A.数据传输 B.数据压缩 C.数据存储 D.数据运算 B 9. 通常所说的16位声卡的意思是____。 A.声卡的数据和地址总线都是16位 B.声卡采样后的量化位数是16位 C.声卡信号处理时数据长度是16位 D.声卡采用16位的ISA接口 B 10. 多媒体计算机在对声音讯息进行处理时,必须配备的设备室____。 A.扫描仪 B.彩色打印机 C.音频卡 D.数码相机 C 11. 以下____不是计算机中使用的声音文件格式。 C 12. 以下____文件是视频影像文件。 A 13. 在goldwave主窗口中,要提高放音音量,应用____菜单中的命令。 A.文件 B.效果 C.编辑 D.选项 B 14.立体声双声道采样频率为,量化位数为8位,一分钟这样的音乐需要的存储量可按____公式计算。 字节 字节 字节 字节 C 15. 以下叙述错误的是____。 A.位图图像由数字阵列信息组成,阵列中的各项数字用来描述构成图像的各个点(称为像素)的亮度和颜色等信息。 B.矢量图中用于描述图形内容的指令可描述成该图形的所有直线,圆、圆弧、矩形、曲线等图元的位置、维数和形状等。 C.矢量图不会因为放大而产生马赛克现象 D.位图图像放大后,表示图像内容和颜色的像素数量相增加

计算机图形学 实验一 基本图形元素生成算法

西北农林科技大学实习报告 学 院名称:理 学 院 专业班级: 姓名: 学 号: 课程:计算机图形学实验 报告日期: 第十二周 实验一 基本图形元素生成算法 一.实验目的 1)熟练掌握基本图形元素生成算法。 2)对高级语言的图形模式的设定有比较详细的了解。 3)对基本图形类(或函数)的调用方法有一个比较详细的了解。 二.实验步骤 1)DDA 算法、Bresenham 算法进行比较,选定比较合适的算法。 2)画出程序流程图; 3)编写程序的源程序; 4)编辑源程序并进行调试; 5)进行特殊模式的运行测试,并结合情况进行调整。 三.实验内容 选定一种基本图形(直线段),编写生成该基本图形的源程序,并能在计算机上编译运行,画出正确的图形。 1. 原理简介 Bresenham 算法是计算机图形学领域使用最广泛的直线扫描转换方法。 其原理是:过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素。 如果令d0=0, d=d+k (k 为直线斜率,假设k <1,当d ≥1时,减1) 保证d 在0、1之间;当d >0.5, (X0,Y0)→(X0+1,Y0+1) ;d <0.5, (X0,Y0)→(X0+1,Y0)。 具体步骤: 下面是01k ≤≤的时候的算法,其他时候类似 (1) 输入直线的两个端点000111(,)(,)P x y P x y 和

(2)计算初始值00,,,,x y e x x x y y ??=-?== (3)绘制点(,)x y (4)e 更新为2e y +?。判断e 的符号,若0e >,则(,)x y 更新为(1,1)x y ++,同时将e 更新为2e x -?;否则(,)x y 更新为(1,)x y + (5)当直线没画完时,重复步骤(3)和(4),否则结束 流程图为: 2.图形描述: 用中点Bresenham 算法画出从(0,0)到(800,200)的直线段。如图所示: 用中点Bresenham 算法画出从(0,0)到(800,200)的直线段。如图所示:

第四章基本平面图形典型例题

第四章基本平面图形练习题 典型考题一: 线段的中点问题 1.已知线段AB=10cm,在AB的延长线上取一点C,使AC=16cm,则线段AB的中点与AC的中点的距离为 2.如果A,B,C三点在同一条直线上,且线段AB=4cm, BC=2cm,则那么A,C两点之间的距离为 3.已知线段AB=20cm,在直线AB上有一点C,且BC=10cm,M是线段AC的中点,求线段AM的长. 4.如图,点C在线段AB上,AC=8cm,CB=6cm,点M,N分别是AC,BC的中点. (1)求线段MN的长; (2)若C为线段AB上任一点,满足AC+CB=acm,其它条件不变,你能猜想MN的长度吗并说明理由; (3)若C在线段AB的延长线上,且满足AC﹣BC=bcm,M、N分别为AC、BC的中点,你能猜想MN的长度吗?请画出图形,写出你的结论,并说明理由; (4)你能用一句简洁的话,描述你发现的结论吗? 典型考题二: 角的平分线问题 1.已知:OC是∠AOB的平分线,若∠AOB=58°,则∠AOC= 2.如图,OC是∠AOB的平分线,OD平分∠AOC,若∠COD=25°,则∠AOB的度数为

3.如图,∠AOB=90°,∠BOC=30°,OM平分∠AOC,ON平分∠BOC, (1)求∠MON的度数。 (2)如果(1)中∠AOB=α,其他条件不变,求∠MON的度数。 (3)如果(1)中∠BOC=β(β为锐角),其他条件不变,求∠MON的度数。 (4)从(1)(2)(3)的结果你能看出什么规律? 4.已知∠AOB=120°,∠AOC=30°,OM平分∠AOC,ON平分∠AOB, (1)求∠MON的度数; (2)通过(1)题的解法,你可得出什么规律? 5.已知∠AOB是一个直角,作射线OC,再分别∠AOC和∠BOC的平分线OD、OE.(1)如图①,当∠BOC =70°时,求∠DOE的度数; (3)当射线OC在∠AOB外绕O点旋转时,画出图形,判断∠DOE的大小否发生变化若变化,说明理由;若不变,求∠DOE的度数.

第1-4章课后习题参考答案

第一章 1、试述计算机图形学研究的基本内容? 答:(1)几何模型构造技术;(2)图形生成技术;(3)图形操作与处理方法;(4)图形信息的存储、检索与交换技术;(5)人机交互及用户接口技术;(6)动画技术;(7)图形输出设备与输出技术;(8)图形标准与图形软件包得技术开发。 2、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。 答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画制作。 图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中的射线探伤。 模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。 3、计算机图形学与CAD、CAM技术关系如何? 答:见课本P4-5页的1.1.3节。 4、举3个例子说明计算机图形学的应用。 答:①事务管理中的交互绘图 应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。 ②地理信息系统 地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。 ③计算机动画 用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。 5、计算机绘图有哪些特点? 答:见课本P8页的1.3.1节。 6、计算机生成图形的方法有哪些? 答:计算机生成图形的方法有两种:矢量法和描点法。 ①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。 ②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。当像素点具有多种颜色或多种灰度等级时,就可以显示彩色图形或具有不同灰度的图形。 7、当前计算机图形学研究的课题有哪些?

第四章_基本平面图形知识点梳理

第四章基本平面图形 一、知识点总结 1、线段:绷紧的琴弦,人行横道线都可以近似的看做线段。线段有两个端点。 2、射线:将线段向一个方向无限延长就形成了射线。射线有一个端点。 3、直线:将线段向两个方向无限延长就形成了直线。直线没有端点。 一条直线上有n个点,则在这条直线上一共有 2)1 (- ?n n 条线段,一共有2n条射线。 平面内的n条直线相交,最多也只有 2)1 (- ?n n 个交点。 4、点、直线、射线和线段的表示 在几何里,我们常用字母表示图形。 一个点可以用一个大写字母表示。 一条直线可以用一个小写字母表示或用直线上两个点的大写字母表示。 一条射线可以用一个小写字母表示或用端点和射线上另一点来表示(端点字母写在前面)。 一条线段可以用一个小写字母表示或用它的端点的两个大写字母来表示。 5、点和直线的位置关系有两种: ①点在直线上,或者说直线经过这个点。 ②点在直线外,或者说直线不经过这个点。 6、直线的性质 (1)直线公理:经过两个点有且只有一条直线。(或者说两点确定一条直线。) (2)过一点的直线有无数条。 (3)直线是是向两方面无限延伸的,无端点,不可度量,不能比较大小。 (4)直线上有无穷多个点。 (5)两条不同的直线至多有一个公共点。 7、线段的性质 (1)线段公理:两点之间的所有连线中,线段最短。 (2)两点之间的距离:两点之间线段的长度,叫做这两点之间的距离。 (3)线段的中点到两端点的距离相等。 (4)线段的大小关系和它们的长度的大小关系是一致的。 8、线段的中点: 点M把线段AB分成相等的两条相等的线段AM与BM,点M叫做线段AB的中点。 9、角: 有公共端点的两条射线组成的图形叫做角,两条射线的公共端点叫做这个角的顶点,这两条射线叫做这个角的边。 或:角也可以看成是一条射线绕着它的端点旋转而成的。 10、平角和周角:一条射线绕着它的端点旋转,当终边和始边成一条直线时,所形

《计算机图形学》答案,第四章

第四章:P215 1、将中点画线算法推广以便能画出任意斜率的直线 算法设计: (1)输入直线的起点坐标P0(x0,y0)和终点坐标P1(x1,y1). (2)定义直线当前点坐标x和y,定义中点偏差判别式d、直线斜率k、像素点颜色rgb (3)x= x0,y= y0计算d=0.5-k,k=( y1-y0)/(x1-x0), rgb=RGB=(0,0,255). (4)绘制点(x,y),判断d的符号,若d<0,则(x, y)更新为(x+1,y+1),d更新为d+1-k,否则(x, y)更新为(x+1,y),d更新为d-k. (5)如果当前点x小于(x1,重复步骤(4),否则结束。 程序主要代码: MidPointLine(x0,y0,x1,y1,color) { int a,b,delta1,delta2,d,x,y; a = y0 – y1; b = x1 – x0; d = 2*a – b; delta1 = 2 * a; delta2 = 2 * (a+b); x = x0; y = y0; if (a x1) { If (d<0) { x++; y++; d+ = delta2; } Else { X++; D+=delta1; } Putpixel(x,y,color); }

Else While (x=0) { y = y + 1; e = e – 2 * dy; } } }

基本图形生成算法(基于VC++6.0实现)

仲恺农业工程学院实验报告纸计算科学学院(院、系)信计082 班计算机图形学课学号:200811314211 姓名:孙青海实验日期:2011/5/20 教师评定 实验一基本图形生成算法 一、实验目的与要求: 1. 掌握中点Bresenhanm绘制直线的原理 2. 设计中点Bresenhanm算法 3. 掌握八分法中点Bresenhanm算法绘制圆的原理 4. 设计八分法绘制圆的中点Bresenhanm算法 5. 掌握绘制1/4椭圆弧的上半部分和下半部分的中点Bresenhanm算法原理 6. 掌握下半部分椭圆偏差判别式的初始值计算方法 7.设计顺时针四分法绘制椭圆的中点Bresenhanm算法 二、实验描述: 1. 使用中点Bresenhanm算法绘制斜率为01 ≤≤的直线。 k 2. 使用中点Bresenhanm算法绘制圆心位于屏幕客户区中心的圆。 3. 使用中点Bresenhanm算法绘制圆心位于屏幕中心的椭圆。 三、实验结果: 1.打开VC++6.0程序; 2.创建一个MFC工程,命名为exper1;选择单文档和作为静态的DLL,然后完 成创建MFC工程; 3.在ResourceView工作区窗口插入三个Dialog,第一个对话框作为画直线时用户 输入起点坐标和终点坐标使用,第二个对话框作为画圆时用户输入所要画圆的半径使用,第三个对话框作为画椭圆时用户输入所要画椭圆的长半径和短半径

使用; 4.通过右键点击对话框选择建立类向导,因为本对话框是新建对话框还没有建立 类向导,在此要新建一个line类,如下图所示,按照此方法将其他的两个对话框建立类向导分别为画圆建立Round类,画椭圆,建立Ellips类; 5.完成类得建立后,对该对话框中的输入框进行添加变量与其关联,具体步骤如 下图所示,按照此方法将所有的对话框中的输入框进行变量添加;

第4章图形的初步认识教案

第四章图形的初步认识 第1课时 教学目的: 1、通过学习能认识常见的图形,并能对常见的图形进行分类、分辨; 2、能够对实际中的物体进行抽象化为图形; 3、能了解多面体中的欧拉公式。 教学分析: 重点:基本图形的认识与分辨; 难点:欧拉公式的应用与认识。 教具准备:每个小组准备相关的立体图形及实际生活物品。 教学设想:强调几何学与实际生活的理论联系实际。 教学过程: 教学过程设计分析备注 一、知识导向: 本节从学生的生活周围入手,通过观察认识到生活以生活的周围存在着规则的 和不规则的物体,规则物体是我们进一步学习和研究的对象。对于教材中出现的一 些概念,如圆柱、棱柱等,都不是定义,仅是描述性的说法。教学中不要求学生掌 握严格的概念,只要求能通过具体图形进行识别或判断。在教学中注意引导学生观 察、体验数学概念的抽象和形成的过程。 二、新课讲授: 1、知识基础: 我们都知道,我们的生活空间是一个三维的世界,我们生活中的生活中的物体都是立体的物体,而这些物体中有一部分是较有规则的,如: 生活物体苹果、球天坛顶端塔顶粉笔盒笔筒类似图形球体圆锥棱锥棱柱圆柱 2、知识形成: 图1 图2 图3 图4 图5 在上面的图形中: (1)图1所表示的立体图形是柱体(圆柱体); (2)图2所表示的立体图形是柱体(棱柱体); (3)图3所表示的立体图形是锥体(圆锥体); (4)图4所表示的立体图形是球体; (5)图5所表示的立体图形是锥体(棱锥体); 另外,棱柱有三棱柱、四棱柱、五棱柱、六棱柱……等; 棱锥有三棱锥、四棱锥、五棱锥、六棱锥……等;数学的学习应是与实际相联系的数学,才是有用的数学,如何从实际物体中抽象出几何图形是重要的第一步。

第四章 基本图形生成算法

10,,111<≤??=???+=+=++m x y m m y y x x i i i i 其中:第四章 基本图形生成算法 一、 直线的扫描转换 1. 数值微分算法 直接使用直线方程法、DDA 算法(增量算法) 优点:DDA 算法比直接用直线方程的方法快:没有浮点乘法; 缺点:求每个连续点时,需要浮点加法;加0.5舍尾取整,不利于硬件实现;表示长直线时,由于精度限制→累计误差; 2. 中点画线法 原理:1、确定与直线距离最近的点P ;2、利用点P 确定下一个点 3. Bresenham 画线算法 算法基本思想:每次迭代在增量最大方向上均走一步,其方向由增量的正负而定,另一方向上是否也走,取决于计算出来的点与直线上的点的误差,根据误差决定是否走一步。 例如取X 方向为最大增量方向,则有: 算法优点:-快速增量算法;-要获得准确的数学结果,只需通过整数的加、减法和乘2运算;计算机中乘2可以容易的通过算术移位实现。 给出使用Bresenham 算法画斜率介于0到45度之间的直线所需的步骤。 -解答: §1、计算初始值:dx=x2-x1; dy = y2 – y1; lnc1=2dy; lnc2 = 2(dy – dx);d = lnc1-dx §2、设置左下方的端点坐标为(x,y ),同时将Xend 设为x 的最大值。如果dx<0,则x=x2,y=y2,Xend=x1. 如果dx>0,则x=x1,y=y1,Xend=x2; §3、在当前(x ,y )坐标画一个点; §4、判断整条线段是否已经画完,如果x=Xend ,则停止; §5、计算下一个象素的位置,如果d<0,那么d=d+lnc1,如果d>=0,则d=d+lnc2,且y=y+1; §6、增加x:x=x+1; §7、在当前的(x,y)坐标画一个点; §8、转到步骤4;

(完整word版)第四章基本平面图形单元测试含答案,推荐文档

单元测试(四)基本平面图形 (时间:120分钟满分:150分) 题号一二三总分合分人复分人 得分 一、选择题(本大题共15 题号123456789101112131415 选项 1. A.线段B.射线C.直线D.弧线 2.下列图形中表示直线AB的是( ) A B C D 3.下面四个图形中,是多边形的是( ) 4.下列说法正确的是( ) A.平角是一条直线B.角的边越长,角越大 C.大于直角的角叫做钝角D.把线段AB向两端无限延伸可得到直线AB 5.木匠在木料上画线,先确定两个点的位置,就能把线画得很准确,其依据是( ) A.两点确定一条直线B.两点确定一条线段 C.过一点有一条直线D.过一点有无数条直线 6.如图,若∠AOC=∠BOD,则∠AOD与∠BOC的关系是( ) A.∠AOD>∠BOC B.∠AOD<∠BOC C.∠AOD=∠BOC D.无法确定 7.如图,点C在线段AB上,则下列说法正确的是( ) A.AC=BC B.AC>BC C.图中共有两条线段D.AB=AC+BC 8.如图是一块手表早上8时的时针、分针的位置图,那么分针与时针所成的角的度数是( ) A.60°B.80° C.120°D.150°

9.下列计算错误的是( ) A.0.25°=900″ B.1.5°=90′ C.1 000″=(5 18)°D.125.45°=1 254.5′ 10.如图,OA是北偏东30°方向的一条射线,若∠AOB=90°,则OB的方位角是( ) A.西偏北60°B.北偏西60° C.北偏东60°D.东偏北60° 11.如图,OC是∠AOB的平分线,OD平分∠AOC,若∠COD=25°,则∠AOB的度数为( ) A.100°B.80° C.70°D.60° 12.已知线段AB=5 cm,在直线AB上画线段BC=2 cm,则AC的长是( ) A.3 cm B.7 cm C.3 cm或7 cm D.无法确定 13.过多边形的一个顶点可以引出6条对角线,则多边形的边数是( ) A.7 B.8 C.9 D.10 14.将一个圆分成四个扇形,它们的圆心角的度数比为4∶4∶5∶7,则这四个扇形中,圆心角最大的是( ) A.54°B.72°C.90°D.126° 15.两条直线最多有1个交点,三条直线最多有3个交点,四条直线最多有6个交点,…那么六条直线最多有( ) A.21个交点B.18个交点C.15个交点D.10个交点 二、填空题(本大题共5小题,每小题5分,共25分) 16.要在A、B两个村庄之间建一个车站,则当车站建在A、B村庄之间的线段上时,它到两个村庄的路程和最短,理由是________________. 17.如图,点A、B、C在直线l上,则图中共有________条线段,有________条射线. 18.如图,已知C为线段AB的中点,D在线段CB上.若DA=6,DB=4,则CD=________. 19.如图,将一副直角三角板叠在一起,使直角顶点重合于点O,则∠AOB=155°,则∠COD=________,∠BOC =________ .

实验二_基本图元生成算法

实验二基本图元的生成算法 一、实验目的 1、初步了解显示窗口与视区的关系 2、掌握OpengGL点、直线、多边形的绘制 3、掌握DDA直线生成算法。 4、掌握Bresenham直线生成算法 二、实验环境 硬件要求: PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境: 操作系统:Windows XP。 语言开发工具:VC6.0。 三、实验内容与要求 1、调出实验一的源代码运行,调整修改使得显示窗口大小改变时,绘制的矩形大小随之改变。如图2-1所示。 提示:(1)在main函数里添加注册窗口变化函数 glutReshapeFunc(myreshape); (放在glutMainLoop()之前) (2)在程序中添加窗口改变子函数,参数w,h为当前显示窗口的宽和高 void myreshape(GLsizei w, GLsizei h) { glViewport(0,0,w,h); //设置视区位置 glMatrixMode(GL_PROJECTION);//设置投影变换模式 glLoadIdentity(); //调单位矩阵,清空当前矩阵堆栈 if(w<=h) gluOrtho2D(0,300,0,300*(GLfloat)h/(GLfloat)w); //设置裁剪窗口大小 else gluOrtho2D(0,300*(GLfloat)w/(GLfloat)h,0,300); }

a) 显示窗口改变前 b)显示窗口变大后 图2-1 未修改前的初始源程序参考如下: /*my first program.cpp*/ #include void display(void) { glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓冲区 glRectf(0,0,0.5,0.5); glFlush(); //用于刷新命令队列和缓冲区,使所有尚未被执行的 OpenGL命令得到执行 } void main(int argc, char** argv) { glutInit(&argc, argv); //初始化GLUT库 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //设置显示模式 glutInitWindowSize(100, 200); glutCreateWindow("hello"); //创建窗口,标题为“hello” glutDisplayFunc(display); //用于绘制当前窗口 glutMainLoop(); //表示开始运行程序,用于程序的结尾 } 2、自己参照讲义或教材按照自己的构思画二维平面图形, 修改样本程序 circle-algorithm.cpp将上面的矩形替换成自己构思的二维平面图形。注意顶点的顺序。 参考函数: (1)、点绘制举例 glPointSize(2.0) //点的大小设置 glBegin(GL_POINTS); glColor3f(1.0,1.0,1.0);

计算机图形学基本图元生成系统的设计与实现毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!) 错误!未找到引用源。 题目计算机图形学基本图元生成系统的设计与实现 学生姓名刘晓东学号1118014007 所在学院数学与计算机科学学院 专业班级计本1101班 指导教师高虎 __ 完成地点陕西理工学院 2015年 6 月 3 日

计算机图形学基本图元生成系统的设计与实现 刘晓东 (陕西理工学院数学与计算机科学学院计算机科学与技术专业1101班,陕西汉中 723001) 指导教师:高虎 [摘要]:本设计旨在提高计算机图形学课程效果,直观地显示部分图形学算法,将抽象知识可视化,方便学生理解。该系统以VC++6.0作为开发环境,实现了基本图元的生成,设置线条属性、曲线和曲面的生成等,这一系统的开发和应用会对图形学课程的教学提供较大的帮助。 [关键词]:计算机图形学;VC++6.0;可视化

Computer Graphics Primitives to Generate Basic System Design and Implementation Liu Xiaodong (Grade 11,Class 01, Major Computer Sinence and Technology ,School of Mathematics and Computer Science,Shaanxi University of Technology,Hanzhong 723001, Shaanxi) Tutor:Gao Hu Abstract: This design aims to improve the effect of computer graphics course,display some visual graphics algorithms,make the abstract knowledge visualization,being convenient for studengs to understand.With VC++6.0 as development environment,the system realizes the basic figure generated, seting line properties,curve and cured surface formation.Development and application of this system will provide great

第四章、图形的基本认识知识梳理(完整版)

第四章、图形的基本认识知识梳理 第一节、生活中的立体图形: 1、区分:柱体、锥体和球体: (1)、柱体分为圆柱和棱柱,如图所示: (2)、椎体分为圆锥和棱锥,如图所示: (3)、球体,如图所示: 2、柱体的特征: (1)、上下两地面的形状和大小都一样; (2)、侧面的各棱在空间中是平行的; (3)、上、下两底面都是圆形,则为圆柱,上下两底面都是多边形,则为棱柱; 底面多边形是几边形,柱体就是几棱柱。 3、椎体的特征: (1):只有一个底面(棱锥的各棱在空间中是相交的); (2)、底面是圆形,则为圆锥,底面是多边形,则为棱锥,底面多边形是几边形,柱体就是几棱锥。 4、多面体:围成多面体的各面是平的面。 5、欧拉公式:顶点数+面数—棱数=2。(爱好者95页:变式练习3) 第二节、由立体图形到视图: 1、清楚视图的分类:一般将视图分为主视图、俯视图、侧视图(以左视图为主)。(1)、主视图:从物体正面得到的投影(从正面看,能看到的物体轮廓。)(2)、俯视图:从物体上面得到的投影(从上面看,能看到的物体轮廓。)(3)、侧视图:从物体侧面得到的投影(从侧面看,能看到的物体轮廓。)(4)、三视图均为平面图形。 (5)、参考题目---理科爱好者: 97页:变式练习1,课堂精练1、2、3题, 98页双基过关1、5、6、7题,100页课堂精练2题。 2、三视图的一般位置排放:(以圆锥为例) (1)、主视图在俯视图正上方,左视图正左方; (2)、俯视图在主视图的正下方; (3)、左视图在主视图的正右方; 3、三视图的绘图规则: (1)、高平齐:主视图和左视图必须在同一水平线上,高度要相等。 (2)、长对正:俯视图在主视图正下方,长短要一致。 (3)、宽相等:俯视图与俯视图的宽度要一致。 (4)、看不到的轮廓线要用虚线表示出来。 (5)、参考题目---理科爱好者:97页:例题1和变式练习。

相关文档
最新文档