计算机图形学实验报告
计算机图形学实验报告
计算机图形学
实习报告
姓名:
学号:
专业:
学院:
实习性质:
指导教师:
实习时间:
实习成绩:指导教师签名:
目录(一)基本图元绘制
(二)图形变换
(三)曲线曲面
(一)基本图元绘制
一、实验名称
《基本图元绘制》
二、实验目的
1.学会在Visual Studio 2010中新建MFC工程;
2.掌握在MFC工程中编写计算机图形学算法的方法;
3.至少掌握一种直线画线算法(DDA画线法、中点画线法、Bresenham画线法)的实现;
4.至少掌握一种画圆算法(中点画圆法、Bresenham画圆法)的实现;
三、实验内容
1. 直线画线算法(DDA画线法、中点画线法、Bresenham画线法)的实现;
2. 画圆算法(中点画圆法、Bresenham画圆法)的实现;
四、实验步骤
1打开Visual Studio 2010软件
在开始菜单找到Microsoft Visual Studio 2010,单击Microsoft Visual Studio 2010打开。
2新建MFC工程
单击File->New->Project菜单
所示:
在弹出的对话框中单击Next
在弹出的对话框中,按下图进行设置,设置完成后,单击Finish
生成的工程如下图所示:
打开*View.cpp文件,找到OnDraw函数
将对/*pDC*/的注释去掉
在OnDraw函数中设计算法,下图为其中的一种画线算法
Studio 2010 C++ 调试学习更多技巧)
确认程序没有错误后,对程序进行编译:
编译完成后,可执行程序
上述示例代码的执行效果如下图所示。
4画线算法设计
《计算机图形学》实验报告
《计算机图形学》实验报告
目录
1实验2:直线的生成 (1)
1.1实验要求和目的 (1)
1.2实验课时 (1)
1.3实验环境 (1)
1.4实验内容 (1)
1.5核心代码 (3)
1.6实验结果 (7)
1.6.1DDA算法 (10)
1.6.2Mid-Bresenham算法 (11)
1.7心得与体会 (12)
2实验4:BSpline曲线绘制 (13)
2.1实验要求和目的 (13)
2.2实验课时 (13)
2.3实验环境 (13)
2.4实验内容 (13)
2.5核心代码 (16)
2.6实验结果 (18)
2.6.1B-样条算法 (19)
2.6.2Bezeir算法 (22)
2.7心得与体会 (24)
附录 (25)
BSpline曲线控制点的测试数据 (25)
数据1 (25)
数据2 (27)
数据3 (29)
数据4 (30)
数据5 (31)
数据6 (33)
数据7 (36)
数据8 (38)
1实验2:直线的生成
1.1实验要求和目的
理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;
编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。
1.2实验课时
3学时
1.3实验环境
本试验提供自带实验平台
·开发环境:Visual C++ 6.0
·实验平台:Free_Curve(自制平台)
1.4实验内容
本实验提供名为 Experiment_Frame_One的平台,该平台提供基本绘制、设置、输入
计算机图形学实验报告
计算机图形学实验报告
在计算机图形学课程中,实验是不可或缺的一部分。通过实验,我们可以更好地理解课程中所学的知识,并且在实践中掌握这些
知识。在本次实验中,我学习了如何使用OpenGL绘制三维图形,并了解了一些基本的图形变换和视图变换。
首先,我们需要通过OpenGL的基本命令来绘制基本图形,例
如线段、矩形、圆等。这些基本的绘制命令需要首先设置OpenGL 的状态,例如绘制颜色、线段宽度等,才能正确地绘制出所需的
图形。
然后,在实验中我们学习了图形的变换。变换是指通过一定的
规则将图形的形状、位置、大小等进行改变。我们可以通过平移、旋转、缩放等变换来改变图形。变换需要按照一定的顺序进行,
例如先进行旋转再进行平移等。在OpenGL中,我们可以通过设
置变换矩阵来完成图形的变换。变换矩阵包含了平移、旋转、缩
放等信息,通过矩阵乘法可以完成图形的复合变换。
最后,视图变换是指将三维场景中的图形投影到二维平面上,
成为我们所见到的图形。在实验中,我们学习了透视投影和正交
投影两种方式。透视投影是指将场景中的图形按照视点不同而产
生不同的远近缩放,使得图形呈现出三维感。而正交投影则是简单地将场景中的图形按照平行投影的方式呈现在屏幕上。在OpenGL中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。
通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。
计算机图形学实验报告
《计算机图形学》
实验报告
学号:0908610211
姓名:宋雪英
班级:计算机0961
项目:
1.利用其它两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。
2.利用方形、线性两种画刷来绘制圆和椭圆。
3.实现交互式二维图形的放缩,旋转和对称变换
2012年12月25日
基本图形的生成技术
一、实验目的
在一个图形系统中,基本图形(也称为图元、图素等)的生成技术是最基本的,任何复杂的图形都是由基本图形组成的,基本图形生成的质量直接影响该图形系统绘图的质量。所以,需要设计出精确的基本图形生成算法,以确保图形系统绘图的精确性。本次实验的目的就是利用Bresenham 算法和中心画线法两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。利用方形、线性两种画刷来绘制圆和椭圆。实现交互式二维图形的放缩,旋转和对称变换。
二、实验任务
1.利用其它两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。
2.利用方形、线性两种画刷来绘制圆和椭圆。
3.实现交互式二维图形的放缩,旋转和对称变换。
三、画直线的实验内容
任务一:利用其它两种画直线方法实现放大10陪显示方法交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。
1、设计思路
第一步:建立DDAMouseLine工程文件;
计算机图形学实验报告
计算机图形学实验报告
实验目的:通过本次实验,深入了解并掌握计算机图形学的基本原理和相关技术,培养对图形处理的理解和能力。
实验内容:
1. 图像的基本属性
- 图像的本质及表示方法
- 像素和分辨率的概念
- 灰度图像和彩色图像的区别
2. 图像的处理技术
- 图像的采集和处理
- 图像的变换和增强
- 图像的压缩和存储
3. 计算机图形学的应用
- 图像处理在生活中的应用
- 计算机辅助设计中的图形学应用
- 三维建模和渲染技术
实验步骤和结果:
1. 在计算机图形学实验平台上加载一张测试图像,分析其像素构成
和基本属性。
2. 运用图像处理技术,对测试图像进行模糊、锐化、色彩调整等操作,观察处理后的效果并记录。
3. 学习并掌握计算机图形学中常用的处理算法,如卷积、滤波等,
尝试应用到测试图像上并进行实验验证。
4. 探讨计算机图形学在数字媒体制作、虚拟现实、计算机辅助设计
等领域的应用案例,并总结其在实践中的重要性和价值。
结论:
通过本次实验,我对计算机图形学有了更深入的了解,掌握了图像
处理技术的基本原理和应用方法。计算机图形学作为一门重要的学科,对多个领域有着广泛的应用前景,有助于提高数字媒体技术、虚拟现
实技术等领域的发展水平。希望在未来的学习和工作中能进一步深化
对计算机图形学理论和实践的研究,不断提升自己在这一领域的专业
能力和创新意识。
计算机图形学实验报告=
要点三
可视化参数调整
通过调整VTK中的可视化参数,如颜 色映射、透明度等,实现了对数据分 布和特征的精细展示。
性能评估与分析
01
帧率测试
通过记录每秒渲染的帧数(FPS), 我们对渲染性能进行了评估。在保证 图像质量的同时,我们的程序实现了 较高的帧率,保证了流畅的视觉体验 。
02
内存使用分析
通过分析内存使用情况,我们发现程 序的内存占用随着数据量和模型复杂 度的增加而增加,但仍在可接受的范 围内。
图形优化
为了提高渲染效率,我们采用了多种优化技术,如裁剪、视野裁剪、屏幕空间排序等。
数据可视化结果
要点一
基于VTK的数据可视 化
使用VTK库,我们成功地将3D医学影 像数据(如CT、MRI)导入并实现了 数据的可视化。
要点二
数据预处理
为了更好地展示数据,我们对原始数 据进行了多种预处理,如去噪、平滑 、插值等。
需要进一步深入研究
实验中涉及的原理和技术较多,需要进一步深入研究和理解。
研究展望与未来发展
图形学技术的进一步 发展
随着计算机技术和硬件性能的不 断提升,计算机图形学将会有更 多的发展空间和可能性。未来, 我们可以期待更多的图形学技术 和应用的出现。
跨领域应用
计算机图形学在游戏开发、电影 制作、虚拟现实等领域的应用越 来越广泛,未来我们可以期待其 在更多领域的应用和发展。
计算机图形学实验报告
计算机图形学 实验报告
实验一:二维线画图元的生成
实验目的:掌握直线段的生成算法,并用C/WIN-TC/VC++实现算法,包括中点法生成直线,微分数值法生成直线段等。
实验内容:用不同的方法生成斜率不同的直线段,比较各种方法的效果。 Bresenham 算法的思想
Bresenham 画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只需要检查一个误差项的符号,就可以确定该列的所有对象。 1.1方法一:直线的中点算法 算法的主要思想:
讨论斜率k ∈[1,+∞)上的直线段的中点算法。 对直线01p p ,左下方的端点为0p (x0,y0),右上方的端点为1p (x1,y1)。直线段的方程为: y m x B =+
⇔y
y x B x y y x x B x
∆=
+⇔∆=∆+∆∆ (,)0F x y xy yx xB ⇔=∆-∆-∆= 现在假定已求得像素(,,i r i x y ),则如图得
,,11(,]22
i i r i r x x x ∈-
+ 由于直线的斜率k ∈[1,+∞),故m=1/k ∈(0,1],则
1,,13(,]22i i r i r x x x +∈-+ 在直线1i y y =+上,区间,,13
(,]22i r i r x x -+内存在两个像素NE 和E 。根据取整原则,当
11(,)i i x y ++在中点M 11
计算机图形学实验报告
04
实验四:渲染复杂场景
实验目的
掌握渲染复杂场景的基本流程和方法 理解光线追踪和着色器在渲染过程中的作用
熟悉渲染引擎的实现原理和技巧 提高解决实际问题的能力
实验步骤
• 准备场景文件 • 使用3D建模软件(如Blender)创建或导入场景模型,导出为常用的3D格式(如.obj或.fbx)。 • 导入场景文件 • 在渲染引擎(如Unity或Unreal Engine)中导入准备好的场景文件。 • 构建场景图 • 根据场景的层次结构和光照需求,构建场景图(Scene Graph)。 • 设置光照和材质属性 • 为场景中的物体设置光照和材质属性(如漫反射、镜面反射、透明度等)。 • 编写渲染脚本 • 使用编程语言(如C或JavaScript)编写渲染脚本,控制场景中物体的渲染顺序和逻辑。 • 运行渲染程序 • 运行渲染程序,观察渲染结果。根据效果调整光照、材质和渲染逻辑。 • 导出渲染图像 • 将渲染结果导出为图像文件(如JPEG或PNG),进行后续分析和展示。
2. 通过属性设置和变换操作,实现了对图形的定 制和调整,加深了对图形属性的理解。
4. 实验的不足之处:由于时间限制,实验只涉及 了基本图形的绘制和变换,未涉及更复杂的图形 处理算法和技术,如光照、纹理映射等。需要在 后续实验中进一步学习和探索。
02
实验二:实现动画效果
实验目的
《计算机图形学》实验报告
《计算机图形学》实验报告
一、实验目的
计算机图形学是一门研究如何利用计算机生成、处理和显示图形的
学科。通过本次实验,旨在深入理解计算机图形学的基本原理和算法,掌握图形的生成、变换、渲染等技术,并能够运用所学知识解决实际
问题,提高对图形学的应用能力和编程实践能力。
二、实验环境
本次实验使用的编程语言为 Python,使用的图形库为 Pygame。开
发环境为 PyCharm。
三、实验内容
1、直线的生成算法
DDA 算法(Digital Differential Analyzer)
Bresenham 算法
DDA 算法是通过计算直线的斜率来确定每个像素点的位置。它的
基本思想是根据直线的斜率和起始点的坐标,逐步计算出直线上的每
个像素点的坐标。
Bresenham 算法则是一种基于误差的直线生成算法。它通过比较误
差值来决定下一个像素点的位置,从而减少了计算量,提高了效率。
在实验中,我们分别实现了这两种算法,并比较了它们的性能和效果。
2、圆的生成算法
中点画圆算法
中点画圆算法的核心思想是通过判断中点的位置来确定圆上的像素点。通过不断迭代计算中点的位置,逐步生成整个圆。
在实现过程中,需要注意边界条件的处理和误差的计算。
3、图形的变换
平移变换
旋转变换
缩放变换
平移变换是将图形在平面上沿着指定的方向移动一定的距离。旋转变换是围绕一个中心点将图形旋转一定的角度。缩放变换则是改变图形的大小。
通过矩阵运算来实现这些变换,可以方便地对图形进行各种操作。
4、图形的填充
种子填充算法
扫描线填充算法
种子填充算法是从指定的种子点开始,将相邻的具有相同颜色或属
计算机图形学作业实验报告
计算机图形学实验报告
班级:
学号:
姓名:
指导教师:
完成日期:
实验一:多边形填充
一、实验目的
了解多边形属性,熟悉相关函数的调用。
二、实验内容
步骤和实现:首先进行初始化工作,进行显示模式(单缓冲区)和窗口等设定,主要实现根据两个函数,一个是指定场景绘制函数,glutDisplayFunc(Paint),paint函数中设置了两个三角形,一个填充,一个不填充。用到了启用多边形点画模式glEnable(GL_POL YGON_STIPPLE)的函数,和指定多边形点画模式(填充) glPolygonStipple(fly)的函数。另外一个就是循环执行OpenGl命令的glutMainLoop()函数。
三、实验结果
四、源程序
// POL Y_STIPPLE.C
#include <gl/glut.h>
void makeObject() // 定义一个三角形
{ glBegin(GL_TRIANGLES); // 开始定义三角形
// 按逆时针方向指定三角形的顶点坐标
glVertex2f(-0.95, -0.95);
glVertex2f(0.95, -0.95);
glVertex2f(0, 0.95);
glEnd(); // 三角形定义结束
}
void display()
{ GLsizei w = glutGet(GLUT_WINDOW_WIDTH); // 程序窗口宽度
GLsizei h = glutGet(GLUT_WINDOW_HEIGHT); // 程序窗口高度
GLubyte fly[] = // 第二个三角形点画模式的mask值
计算机图形学实验报告
姓名:学号:
目录
实验一直线的DDA算法
一、【实验目的】
1.掌握DDA算法的基本原理。
2.掌握DDA直线扫描转换算法。
3.深入了解直线扫描转换的编程思想。
二、【实验内容】
1.利用DDA的算法原理,编程实现对直线的扫描转换。
2.加强对DDA算法的理解和掌握。
三、【测试数据及其结果】
四、【实验源代码】
#include
#include
#include
#include
GLsizei winWidth=500;
GLsizei winHeight=500;
void Initial(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0);
}
void DDALine(int x0,int y0,int x1,int y1) {
glColor3f(1.0,0.0,0.0);
int dx,dy,epsl,k;
float x,y,xIncre,yIncre;
dx=x1-x0; dy=y1-y0;
x=x0; y=y0;
if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy);
xIncre=(float)dx/(float)epsl;
yIncre=(float)dy/(float)epsl;
for(k=0;k<=epsl;k++)
{
glPointSize(3);
glBegin(GL_POINTS);
glVertex2i(int(x+0.5),(int)(y+0.5));
计算机图形学实验报告
计算机图形学实验报告
计算机图形学实验报告
引言
计算机图形学是研究计算机生成和处理图像的学科,它在现代科技和娱乐产业中扮演着重要的角色。本实验报告旨在总结和分享我在计算机图形学实验中的经验和收获。
一、实验背景
计算机图形学实验是计算机科学与技术专业的一门重要课程,通过实践操作和编程,学生可以深入了解图形学的基本原理和算法。本次实验主要涉及三维图形的建模、渲染和动画。
二、实验内容
1. 三维图形建模
在实验中,我们学习了三维图形的表示和建模方法。通过使用OpenGL或其他图形库,我们可以创建基本的几何体,如立方体、球体和圆柱体,并进行变换操作,如平移、旋转和缩放。这些基本操作为后续的图形处理和渲染打下了基础。
2. 光照和着色
光照和着色是图形学中重要的概念。我们学习了不同的光照模型,如环境光、漫反射和镜面反射,并了解了如何在三维场景中模拟光照效果。通过设置材质属性和光源参数,我们可以实现逼真的光照效果,使物体看起来更加真实。3. 纹理映射
纹理映射是一种将二维图像映射到三维物体表面的技术。通过将纹理图像与物
体的顶点坐标相对应,我们可以实现更加细致的渲染效果。在实验中,我们学
习了纹理坐标的计算和纹理映射的应用,使物体表面呈现出具有纹理和细节的
效果。
4. 动画和交互
动画和交互是计算机图形学的重要应用领域。在实验中,我们学习了基本的动
画原理和算法,如关键帧动画和插值技术。通过设置动画参数和交互控制,我
们可以实现物体的平滑移动和变形效果,提升用户体验。
三、实验过程
在实验过程中,我们首先熟悉了图形库的使用和基本的编程技巧。然后,我们
计算机图形学实验报告
计算机图形学实验报告4(总18页)
--本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小--
《计算机图形学》实验报告
实验九 二维图形变换
一、实验教学目标与基本要求
1.掌握图形变换的基本算法原理;
2.实现若干典型二维图形变换算法。
二.理论基础
1.生成前几次实验中的基本图形;
2.对生成的基本图形进行平移、旋转、放缩、对称等变换。
3. 对计算机绘图的原理有一定的认识。
三.算法设计与分析 1.二维变换
1. 平移变换
2.比例变换
• Sx = Sy =1 等比例变换
• Sx = Sy >1 放大
[][][
]
100**1101011x
y x y x y x y x T y T T T ⎡⎤
⎢⎥=•=++⎢⎥⎢⎥⎣⎦
[][]100**1101011x y x y x y x y T T x T y T ⎡⎤
⎢⎥=⎢⎥
⎢⎥
⎣⎦⎡⎤=++⎣⎦
[][][]00**11000011x y x y S x y x y S S x S y ••⎡⎤
⎢⎥=•⎢⎥
⎢⎥⎣⎦
=
• Sx = Sy <1 缩小 • Sx ≠ Sy ≠1 3.对称变换
当b=d =0, a =-1, e =1时
关于Y 轴对称
当b=d =0, a =1, e =-1时
关于X 轴对称
当b=d =0, a =-1, e =-1时
关于原点对称
当b=d =1, a =e =0时
关于直线y=x 对称 当b=d =-1, a =e =0时
[][][]0**1100011a d x y x y b e ax by dx ey ⎡⎤
计算机图形实验报告
计算机图形实验报告
计算机图形实验报告
引言:
计算机图形学是一门研究如何使用计算机生成、处理和显示图像的学科。在现
代科技的发展中,计算机图形学的应用越来越广泛,涉及到许多领域,如电影
制作、游戏开发、虚拟现实等。本实验报告将介绍我在计算机图形实验中的学
习和实践经验。
一、实验目的
本次实验的主要目的是通过学习和实践,掌握计算机图形学的基本概念和技术。具体来说,我们将学习如何使用计算机编程语言实现简单的图形绘制、变换和
渲染等功能。
二、实验过程
1. 学习基本概念
在开始实验之前,我们首先学习了计算机图形学的基本概念,包括点、线、多
边形等基本图元的表示方法,以及坐标系统和颜色模型等相关知识。这些基础
概念为后续的实验操作打下了坚实的基础。
2. 图形绘制
在实验中,我们使用了一种编程语言来实现图形的绘制。通过编写代码,我们
可以在计算机屏幕上绘制出各种形状的图形,如直线、矩形、圆等。这些图形
的绘制是通过计算机的像素点来实现的,我们可以通过改变像素点的颜色和位
置来绘制出不同的图形。
3. 图形变换
除了图形的绘制,我们还学习了图形的变换技术。通过对图形进行平移、旋转、缩放等操作,我们可以改变图形的位置、大小和形状。这些变换操作可以通过
矩阵运算来实现,通过改变矩阵的数值,我们可以对图形进行不同的变换操作。
4. 图形渲染
图形渲染是计算机图形学中的一个重要环节。通过对图形进行光照、阴影和纹
理等处理,我们可以使图形看起来更加真实和逼真。在实验中,我们学习了一
些基本的渲染算法,如平均法线法、Phong光照模型等,通过应用这些算法,
计算机图形学实验报告
熟悉图形渲染流程
了解图形渲染的 基本原理和流程
掌握图形渲染的 关键技术和技巧
熟悉图形渲染的 应用场景和优势
掌握图形渲染的 未来发展方向和 趋势
掌握OpenGL的使用
学习OpenGL的基本概念和原理 掌握OpenGL的编程接口和开发流程 理解OpenGL在计算机图形学中的应用和优势 学会使用OpenGL进行基本的图形渲染和交互操作
初始化:设置投影矩阵、视口 等基本参数
绘制:使用基本图元(如三角 形、矩形等)进行绘制
渲染:将绘制结果渲染到窗口 中
光照模型
简介:光照模 型是计算机图 形学中用于模 拟物体表面光 照效果的数学
模型。
类型:包括漫 反射、镜面反 射、环境光等 类型的光照模
型。
应用场景:广 泛应用于游戏 开发、电影制 作、建筑设计
等领域。
实验内容:通 过实验掌握光 照模型的原理 和实现方法, 了解不同光照 模型对物体表 面光照效果的
影响。
纹理映射
定义:将纹理图像映射到三维物 体表面的过程
方法:根据物体表面的几何形状, 将纹理图像按照一定的规则和算 法进行拉伸、扭曲和拼接等操作, 最终覆盖在物体表面
添加标题
添加标题
添加标题
添加标题
提高编程能力
熟练使用相关编程语言和工 具
掌握计算机图形学的基本原 理和算法
计算机图形学实验报告
实验一:二维图形的绘制和变换
一、实验目的
掌握基本的图形学算法,熟悉VC下图形学的编程,初步了解并使用OpenGL 绘制图形。
二、实验内容
二维图形的绘制和变换,绘制包括直线、三角形、矩形,变换包括平移、旋转、缩放。
三、实验原理
二维图形的绘制和变换:
在图形系统中,矩阵是实现变换的标准方法。平移变换、旋转变换和缩放变换的矩阵表示形式如下。
平移变换:P’=P+T。
旋转变换:P’=R*P。
缩放变换:P’=S*P。
引入齐次坐标后,平移、旋转和缩放变换的矩阵表示形式如下所示。
(1)平移变换:
[1 0 0]
[x’, y’, 1] = [x, y, 1] [0 1 0]
[tx ty 1]
(2)旋转变换:
[cosɵsinɵ0]
[x’, y’, 1] = [x, y, 1] [-sinɵcosɵ0]
[0 0 1]
(3)缩放变换:
[s x0 0]
[x’, y’, 1] = [x, y, 1] [0 s y0]
[0 0 1]
四、实验代码及结果
1.编写对一个三角形分别实现平移、缩放、旋转等变化的源码及效果图。
实验核心代码
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glLoadIdentity ();
glColor3f (1.0, 1.0, 1.0);
glTranslatef(-100.0,-50.0,1.0);
draw_triangle ();
glLoadIdentity ();
glTranslatef (0.0, 100.0, 1.0);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教育科学与技术学院
2016/2017学年第一学期
实验报告
实验课程名称计算机图形学
专业教育技术学
学生学号 B******** 学生姓名朱志耀
指导教师熊健、闫静杰
指导单位通信与信息工程学院
日期:2016年11月24日
1、每项实验报告的内容
============================================================================== 实验一:直线的生成算法实现
一、实验目的:
理解直线生成的原理;
二、实验内容:
1、了解直线的生成原理
2、掌握几种基本的直线生成算法:DDA画线法、中点画线法、Bresenham画线法。
3、仿照教材关于直线生成的Bresenham算法,编译程序。
4、调试、编译、运行程序。
三、实验方法及编程:
a)实现方法介绍本次实验是在Turbo C 2.0的平台上编译实现的;Bresenham算法
的基本原理是:过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的
顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。
b)实现代码及分析
#include "stdio.h"
#include "graphics.h"
Bresenham_line(x0,y0,x1,y1,color)
int x0,y0,x1,y1,color;
{
int x,y,dx,dy,i,e;
float k;
dx=x1-x0;
dy=y1-y0;
k=(dy*1.0)/dx; /*求斜率*/
e=2*dy-dx;
x=x0;
y=y0;
for (x=x0; x<=x1; x++)
{
putpixel(x,y,RED);/*画红色的像素点*/
e=e+2*dy;
if(e>=0)
{
y++;
e=e-2*dx;
}
}
}
int main()
{
int x0,y0,x1,y1,c;
int graphdriver=DETECT,graphmode=0;
/*自动搜索显示器类型和显示模式*/
initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");
/*初始化图形系统*/
setbkcolor(WHITE); /*设置背景为白色*/
setcolor(BLUE); /*设置直线为蓝色*/
Bresenham_line(100,100,500,500,3);
/*画以(100,100)为起点,(500,500)为终点,3为像素点的直线*/
getch();
/*从控制台读取一个字符,但不显示在屏幕上*/
closegraph(); /*关闭图形系统*/
}
四、实验结果及分析:
这幅图片是以Bresenham直线扫描算法绘制的以(100,100)为起点,(500,500)为终点的一条直线,背景被设置为了白色,以蓝色画出了这条直线。
实验二:自由曲线的生成算法实现
一、实验目的:
理解曲线生成的原理
二、实验内容:
1、了解自由曲线的生成原理。
2、掌握三次样条曲线和Bezier曲线的生成算法。
3、仿照教材关于自由曲线生成的Bezier算法,编译程序。
4、调试、编译、运行程序。
三、实验方法及编程:
a)实现方法介绍本次实验是在Turbo C 2.0的平台上编译实现的;用光滑参数曲线
段逼近折线多边形,只需要根据给出的数据点就可以构造出曲线,曲线次数严格依
赖于确定该段曲线的数据点个数,曲线形状依赖于多边形的形状,多边形的第一个
顶点和最后一个顶点在曲线上。
b)实现代码及分析
#include
#include
#include
#include
#include
#define N 1000
int n;//控制点的个数
struct point //控制点的坐标
{
double x;
double y;
}point[N];
void init() //输入控制点的坐标
{
int i;
printf("please input the number of the points: ");
scanf("%d",&n);
printf("please input the location of the points\n");
for(i=0;i scanf("%lf %lf",&point[i].x,&point[i].y); } void sol1() //绘制控制多边形的轮廓 { int i; setcolor(RED); for(i=0;i line((int)point[i].x,(int)point[i].y,(int)point[i+1].x,(int)point[i