计算机图形学实验报告(原创)

合集下载

计算机图形学实验报告

计算机图形学实验报告

计算机图形学

实验报告

学号:

姓名:

班级:计算机 2班

指导老师:何太军

2010.6.19

实验一、Windows 图形程序设计基础

1、实验目的

1)学习理解Win32 应用程序设计的基本知识(SDK 编程);

2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。

4)学习MFC 类库的概念与结构;

5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);

6)学习使用MFC 的图形编程。

2、实验内容

1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。(可选任务)

2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,This

is my first SDI Application"。(必选任务)

3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。

3、实验过程

1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;

2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,This

is my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;

《计算机图形学》实验报告

《计算机图形学》实验报告

《计算机图形学》实验报告

目录

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中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。

通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学(computer graphics)的基本含义是使用计算机通过算法和程序在显示设备上构造图形。图形是人们通过计算机设计和构造出来的,不是通过摄像机、扫描仪等设备输入的图像。这里的图形可以是现实中存在的图形,也可以是完全虚拟构造的图形。以矢量图的形式呈现,更强调场景的几何表示,记录图形的形状参数与属性参数。例如,工程图纸(drawing),其最基本的图形单元是点、线、圆/弧等,其信息包含图元的几何信息与属性信息(颜色、线型、线宽等显式属性和层次等隐式属性)。

图像处理(image processing)则是研究图像的分析处理过程,图像处理研究的是图像增加、模式识别、景物分析等,研究对象一般为二维图像。图像以点阵图形式呈现,并记录每个点的灰度或色彩。例如,照片、扫描图片和由计算机产生的真实感和非真实感图·形等,最基本的图像单元(pels,picture elements)是点—像素(pixel),其信息实际上是点与它的属性信息(颜色、灰度、亮度等)。

计算机视觉(computer vision)包括获取、处理、分析和理解图像或者更一般意义的真实世界的高维数据方法,它的目的是产生决策形式的数字或者符号信息。

计算机图形学和计算机视觉是同一过程的两个方向。计算机图形学将抽象的语义信息转化成图形,计算机视觉则从图形中提取抽象的语义信息,图像处理研究的则是一个图像或一组图像之间的相互转化和关系,与语义信息无关。下表从输入和输出的角度对三者的区别进行辨析:

表2 图像处理&计算机视觉&计算机图形学对比

计算机图形学实验报告

计算机图形学实验报告

实验一、直线的生成

实验目的:

1、掌握DDA直线画法、中点画线法和Bresenham画线法

2、掌握VC++简单程序设计方法

实验内容:

根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。

实验步骤和方法:

双击基本图形生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开直线生成view.cpp,按注释改写下列函数:

void CMyView::OnDdaline() (此为DDA生成直线)

void CMyView::OnBresenhamline()(此为Bresenham画直线)

void CMYView::OnMidPointLine()(此为中点画线法)

程序代码说明:

1、直线的两个端点,由对话框输入,给定程序已经完成输入代码。

2、SetPixel的用法:

COLORREF SetPixel(int x, int y, COLORREF crColor);//x,y为坐标点。

COLORREF SetPixel(POINT point, COLORREF crColor);//point为坐标点。3、本实验事先提供DDA话直线的函数示范(红色部分是重点,其它部分可以

不看)中点画直线函数和BresenHam画直线函数由同学们参照dda直线的示例函数自己完成。

编写程序如下:

void CMyView::OnDdaline()

{

int xa,ya,xb,yb;//xa、ya起点,xb,yb终点,由输入对话框获得//输入对话框

《计算机图形学》实验报告

《计算机图形学》实验报告

实验报告模板

《计算机图形学》实验报告

一、实验目的及要求

1.实习三维图形的坐标系之间的变换;

2.三维图形几何变换;

3.掌握三维图形的坐标系之间的变换算法及三维图形几何变换的原理和实现;4.实现二维图形的基本变换(平移、旋转、缩放、错切、对称、复合等);5.实现三维图形的基本变换(平移、旋转、缩放、复合等);

二、理论基础

在齐次坐标理论下,二维图形几何变换矩阵可用下式表示:

=

=

=

i

f

c

h

e

b

g

d

a

T

n

k

x

x k

k

2,1,0

,

)

(

ϕ

平移变换:[x* y* 1] =[x y 1] *

00

00

001

t

s

⎛⎫

⎝⎭=[t*x s*y 1]

比例变换:[x* y* 1]=[x y 1] *

100

010

1

m n

⎛⎫

⎝⎭=[m+x n+y 1]

旋转变换:在平面上的二维图形饶原点逆时针旋转Ө角,变换矩阵为

[x* y* 1]=[x y 1] *

cos sin0

sin cos0

001

θθ

θθ

⎛⎫

- ⎪

⎝⎭= [x*cosө-y*sinө]

复合变换:以上各种变换矩阵都是以原点为参照点,当以任意参照点进行变换的时候,我们就要用到复合变换矩阵。

三维变换类似于二维,在画图时,把三维坐标转换为二维即可。

三、算法设计与分析

二维变换:

#define dx 50

#define dy 100

void CCGWithVCView::OnTransScale() //平移(50,100)

{

// TODO: Add your command handler code here

// AfxMessageBox(_T("Please Insert The Move Change Code!")) ;

计算机图形学实验报告

计算机图形学实验报告

《计算机图形学》

实验报告

学号: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

计算机图形学作业实验报告

计算机图形学作业实验报告

计算机图形学作业实验报告

计算机图形学实验报告班级:学号:姓名:指导教师:完成日期:实验一:多边形填充1、实验目的了解多边形属性,熟悉相关函数的调用。

二、实验内容步骤和实现:首先进行初始化工作,进行显示模式(单缓冲区)和窗口等设定,主要实现根据两个函数,一个是指定场景绘制函数,glutDisplayFunc(Paint),paint函数中设置了两个三角形,一个填充,一个不填充。

用到了启用多边形点画模式glEnable(GL_POLYGON_STIPPLE)的函数,和指定多边形点画模式(填充)glPolygonStipple(fly)的函数。

另外一个就是循环执行OpenGl命令的glutMainLoop()函数。

三、实验结果四、源程序//POLY_STIPPLE.C#includevoidmakeObject()//定义一个三角形{glBegin(GL_TRIANGLES);//开始定义三角形//按逆时针方向指定三角形的顶点坐标glVertex2f(-0.95,-0.95);glVertex2f(0.95,-0.95);glVertex2f(0,0.95);glEnd() ;//三角形定义结束}voiddisplay(){GLsizeiw=glutGet(GLUT_WINDOW_WIDTH);//程序窗口宽度GLsizeih=glutGet(GLUT_WINDOW_HEIGHT);//程序窗口高度GLubytefly[]=//第二个三角形点画模式的mask值{0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//0X03,0X80,0X01,0X C0,0X06,0XC0,0X03,0X60,//0X04,0X60,0X06,0X20,0X04,0X30,0X0C,

计算机图形学实验报告

计算机图形学实验报告

04
实验四:渲染复杂场景
实验目的
掌握渲染复杂场景的基本流程和方法 理解光线追踪和着色器在渲染过程中的作用
熟悉渲染引擎的实现原理和技巧 提高解决实际问题的能力
实验步骤
• 准备场景文件 • 使用3D建模软件(如Blender)创建或导入场景模型,导出为常用的3D格式(如.obj或.fbx)。 • 导入场景文件 • 在渲染引擎(如Unity或Unreal Engine)中导入准备好的场景文件。 • 构建场景图 • 根据场景的层次结构和光照需求,构建场景图(Scene Graph)。 • 设置光照和材质属性 • 为场景中的物体设置光照和材质属性(如漫反射、镜面反射、透明度等)。 • 编写渲染脚本 • 使用编程语言(如C或JavaScript)编写渲染脚本,控制场景中物体的渲染顺序和逻辑。 • 运行渲染程序 • 运行渲染程序,观察渲染结果。根据效果调整光照、材质和渲染逻辑。 • 导出渲染图像 • 将渲染结果导出为图像文件(如JPEG或PNG),进行后续分析和展示。
2. 通过属性设置和变换操作,实现了对图形的定 制和调整,加深了对图形属性的理解。
4. 实验的不足之处:由于时间限制,实验只涉及 了基本图形的绘制和变换,未涉及更复杂的图形 处理算法和技术,如光照、纹理映射等。需要在 后续实验中进一步学习和探索。
02
实验二:实现动画效果
实验目的

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验二维填充图的生成

1.图元填充

利用多种图元填充的方法绘制一面五星红旗。

方法有:扫描转换多边形的逐点判断法(编码算法),扫描线算法,区域填充的扫描线算法,自创的向内复制边法。

1.1说明:

1.1.1 宏定义和类型定义:

#define max 400

#define pi 3.14159265

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define false 0

#define true 1

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef int Status;

typedef int bool;

typedef struct {

int y,xLeft,xRight;

}SElemType;

typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

typedef struct Edge{

int ymax;

float x,deltax;

struct Edge *nextEdge;

}Edge;

Edge *EL[max];

typedef struct{

float x,y;

}point;

Status SetStackEmpty(SqStack *s)

{s->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告

班级2011010

专业地理信息系统

组别

组员

华北水利水电学院资源与环境学院GIS教研室

实验一

基本图形的生成和几何变换算法实现

实验目的:

1、利用c#程序实现输出直线、三角形、矩形等简单图形。

2、利用二维基本图形变换的原理实现简单图形的缩放、旋转等简单变换。

实验原理:

数学原理

1、调用DrawLines 可以实现直线的绘制;调用DrawPolygon 可以实现多边形的绘制;调用DrawRectangle 可以实现矩形的绘制。

2、基本几何变换:

假设),,(z y x P 表示三维空间上一个未被变换的点,而该点经过某种变换后得到新的点用)',','('z y x P 表示。

① 平移变换:

如果点)',','('z y x P 是由点),,(z y x P 在x 轴,y 轴和z 轴分别移动x ∆、y ∆、

z ∆距离得到的,则两点坐标关系为: x x x ∆+=' y y y ∆+=' z z z ∆+=' 则矢量形式为:T P P +=' 其中

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=''''z y x P , ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=z y x P , ⎥⎥⎥⎦

⎤⎢⎢⎢⎣⎡∆∆∆=z y x T

② 缩放变换:缩放变换改变物体的大小。有坐标关系 x s x x =' y s y y =' z s z z ='

其中,x s ,y s ,z s 分别为沿x ,y 和z 轴方向放大或缩小的比例。

得到矩阵形式为 ⎥⎥⎥⎦

⎢⎢⎢⎣⎡∙⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡z y x s s s z y x z y x

计算机图形学实验报告

计算机图形学实验报告

计算机图形学研究报告

报告内容速览

▪概述篇:计算机图形学概念/ 发展历史/ 中国计算机图形学发展/ 著名公司▪技术篇:计算机图形学总体框架/ 研究内容/ 相关技术算法

▪人才篇:领军人物/ 中坚力量/ 青年学者

▪会议篇:在各地举办的会议

▪应用篇:计算机图形学在各个领域的应用

▪趋势篇:计算机图形学的发展趋势

以下摘自概述篇:

01 计算机图形学概念

1. 什么是计算机图形学?(Computer Graphics)

关于计算机图形学的定义众说纷纭。IEEE对计算机图形学的定义为:Computer graphics is the art or science of producing graphical images with the aid of computer。

国际标准化组织ISO将计算机图形学定义为:计算机图形学是一门研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理方法和技术的学科。它是建立在传统的图学理论、应用数学及计算机科学基础上的一门边缘学科。

总而言之计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科,这里的图形是指三维图形的处理。

2. 相关概念辨析

▲表1 图形和图像辨析

计算机图形学&图像处理&计算机视觉:

▪计算机图形学(computer graphics)的基本含义是使用计算机通过算法和程序在显示设备上构造图形。图形是人们通过计算机设计和构造出来的,不是通过摄像机、扫描仪等设备输入的图像。这里的图形可以是现实中存在的图形,也可以是完全虚拟构造的图形。以矢量图的形式呈现,更强调场景的几何表示,记录图形的形状参数与属性参数。例如,工程图纸

计算机图形学报告

计算机图形学报告

沈阳航空航天大学

计算机图形学实验报告

班级:34140102学号:20130 姓名:成绩:

指导教师:

实验一:OpenGL绘制球体线框图

1.实验目的:

本实验要求熟悉OpenGL基本图元函数的使用。

通过使用OpenGL及GLUT库在Visual C++环境下编写图形绘制程序掌握图形绘制的一般框架,从而为进一步做综合性的图形绘制实验奠定基础

2.实验要求:

编写一个程序,在窗口中显示一个旋转的球体线框,利用光标键可启动图形旋转切换视点。

3.实验过程:

先配置环境,把相关文件放到相应的文件夹

C:\Program Files\Microsoft Visual Studio\VC98\Include\GL C:\WINDOWS\system32 C:\Program Files\Microsoft Visual Studio\VC98\Lib

建一个新工程,比照pdf敲代码

再通过VC++进行编译

4.实验结果:

程序运行后,弹出窗口,使用光标键可使球体旋转。

代码:include

#include

#include

#include

#include

void init();

void CALLBACK reshapae(GLsizei w,GLsizei h);

void CALLBACK display();

GLfloat s, h;

//回调函数,绘制窗口时调用

void CALLBACK display()

{

//清空窗口设置背景为白色

glClearColor(1, 1, 1, 1);

glClear(GL_COLOR_BUFFER_BIT);

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

计算机图形学实验报告——C字曲线算法

计算机图形学实验报告——C字曲线算法

1)算法原理介绍

实验环境:Microsoft Visual C++

C字线算法原理:C曲线由控制多边形通过一系列割角变换生成,具有连续性。C 曲线容易在计算机上快速产生, 用于计算机图形的实时处理。实验中还应用了C 曲线的凸包性、保凸性、局部无依赖性等性质。本实验程中GetMaxX()函数得到屏幕上的X方向上的最大值;GetMaxY()数得到屏幕上的Y方向上的最大值;

c(n,300,150,MaxX-300,150)函数画出C字样图形。

2)程序设计文档说明

一、课程设计目的

在掌握图形学的基本原理、算法和实现技术基础上,通过编程实践学会基本的图形软件开发技术。

1.了解Visual C++ 2005绘图的基本概念

2.了解Visual C++2005绘图环境

3.了解Visual C++2005绘图环境

4. 掌握用Visual C++ 2005绘图的基本命令

二、课程设计内容

仿照Windows的附件程序“画图”, 用C++语言编制一个具有交互式绘制和编辑多种图元功能的程序“C字曲线算法”,实现以下功能对应的设计内容:

(1) 能够以交互方式在图形绘制区绘制直线(折线);

(2)设置C字曲线的迭代次数,分析不同迭代次数的变化情况;

(3)通过帮助文档了解和使用函数。

三、实验步骤

1.新建MFC应用程序

1.1新建工程。运行VC++6.0,新建一个MFC AppWizard[exe]工程,并命名,选择保存

路径,确定。

1.2选择应用程序的类型,选择“单文档”,则可以通过菜单打开对话框

2.建立单文档应用程序,在其中调用对话框

2.1 查看工程资源

在单击完成之后,即建立了一个工程,在工程的左侧资源视图可以看到MFC向导为该程序提供的一些资源。

分别如下所示:

3.运行程序可以得到如下图形界面:

4、界面使用

点击左上角中间图表会出现迭代次数选择,确定后即可。

3)核心程序源代码

// TestView.cpp : implementation of the CTestView class

//

#include "stdafx.h"

#include "Test.h"

#include "TestDoc.h"

#include "TestView.h"

#include "InputDlg.h"

#define ROUND(x) int(x+0.5)//四舍五入

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

///////////////////////////////////////////////////////////////////////////// // CTestView

IMPLEMENT_DYNCREATE(CTestView, CView)

BEGIN_MESSAGE_MAP(CTestView, CView) //{{AFX_MSG_MAP(CTestView)

ON_COMMAND(ID_MENUC, OnMenuc)

//}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CTestView construction/destruction

CTestView::CTestView()

{

// TODO: add construction code here

}

CTestView::~CTestView()

{

}

BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

return CView::PreCreateWindow(cs);

}

/////////////////////////////////////////////////////////////////////////////

// CTestView drawing

void CTestView::OnDraw(CDC* pDC)

{

CTestDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

}

/////////////////////////////////////////////////////////////////////////////

// CTestView printing

BOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo)

{

// default preparation

return DoPreparePrinting(pInfo);

}

void CTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

相关文档
最新文档