搜档网
当前位置:搜档网 › 计算机图形学实验报告

计算机图形学实验报告

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

****计算机学院

《计算机图形学》课程报告

学院:计算机科学与工程

专业:计算机科学与技术

班级:***

学号:**********

姓名:******

成绩:

一、了解OpenGL编程步骤及直线生成算法

3.1理解OpenGL的程序结构:

掌握OpenGL提供的基本图形函数,尤其是生成简单几何元素的函数。

3.1基本数据结构描述:

逐点比较法:

A(200,200)、B(2000,2000)

DDA:

A(200,200)、B(2000,2000)

Brasenham:

A(0,0)、B(200,200)

3.2算法描述:

逐点比较法:

对于第一象限直线OA上任一点(X,Y):X/Y = X e/Y e

若点为P i(X i,Y i),则该点的偏差函数F i可表示为

若F i= 0,表示加工点位于直线上;

若F i> 0,表示加工点位于直线上方;

若F i< 0,表示加工点位于直线下方。

(2)偏差函数字的递推计算

采用偏差函数的递推式(迭代式)

既由前一点计算后一点

F i =Y i X e -X i Y e

若F i>=0,规定向+X 方向走一步

X i+1 = X i +1

F i+1 = X e Y i–Y e(X i +1)=F i–Y e

若F i<0,规定+Y 方向走一步,则有

Y i+1 = Y i +1

F i+1 = X e(Y i +1)-Y e X i =F i +X e

(3)终点判别

直线插补的终点判别可采用三种方法。

1)判断插补或进给的总步数;

2)分别判断各坐标轴的进给步数;

3)仅判断进给步数较多的坐标轴的进给步数。

DDA算法:

(1)已知过端点P0 (x0, y0), P1(x1, y1)的直线段L :y=kx+b

(2)直线斜率为:k=(y1-y0)/(x1-x0)

(3)X i+1=X i+ε*ΔX

Y i+1=Y i+ε*ΔY 其中,

ε=1/max(|ΔX|,|ΔY|)

max(|ΔX|,|ΔY|)= |ΔX| (|k|<=1)

|ΔY| (|k|>1)

(4)|k|<=1时:X i+1=X i+(或-)1

Y i+1=Y i+(或-)k

|k|>1时:X i+1=X i+(或-)1/k

Y i+1=Y i+(或-)1

Brasenham算法:

设直线起点P0(x0,y0),终点P1(x1,y1),令e0=2?y - ?x作为判别函数,根据e0的正负,可以确定走向:

①e0<0,Y 方向不走步

②e0>=0,Y方向走一步

递推公式:

对于第i +1步(i=0,l,2,……,n)如果e i≥0,则Y方向走一步:

X i+l=X i+1 Y i+1 =Y i+1

e i+1= e i + 2?y - 2?x

如果e i<0,则Y方向不走步:

X i+l=X i+1 Y i+1 =Y i

e i+1= e i+ 2?y

3.3结果显示:

逐点比较法(图1.1):

图1.1 DDA算法(图2):

Brasenham算法(图3):

图1.3

二、二维图形几何变换

1.1基本数据结构描述:

点坐标:

A0(100.00,0.00) B0(50.00,86.60)

C0(-50.00,86.60)

D0(-100.00,0.00)

E0(-50.00,-86.60)

F0(50.00,-86.60) A1(81.38,29.62) B1(15.04,85.29) C1(-66.34,55.67) D1(-81.38,-29.62) E1(-15.04,-85.29) F1(66.34,-55.67) A2(57.45,48.21) B2(-13.02,73.86) C2(-70.48,25.65) D2(-57.45,-48.21) E2(13.02,-73.86) F2(70.48,-25.65) A3(32.48,56.25) B3(-32.48,56.25) C3(-64.95,0.00) D3(-32.48,-56.25) E3(32.48,-56.25) F3(64.95,-0.00) A4(9.77,55.40) B4(-43.09,36.16) C4(-52.86,-19.24) D4(-9.77,-55.40) E4(43.09,-36.16) F4(52.86,19.24) A5(-8.46,47.97) B5(-45.78,16.66) C5(-37.32,-31.31) D5(8.46,-47.97) E5(45.78,-16.66) F5(37.32,31.31) A6(-21.09,36.54) B6(-42.19,0.00) C6(-21.09,-36.54) D6(21.09,-36.54) E6(42.19,-0.00) F6(21.09,36.54) A7(-27.99,23.48) B7(-34.33,-12.50) C7(-6.34,-35.98) D7(27.99,-23.48) E7(34.33,12.50) F7(6.34,35.98) A8(-29.73,10.82) B8(-24.24,-20.34) C8(5.49,-31.16) D8(29.73,-10.82) E8(24.24,20.34) F8(-5.49,31.16) A9(-27.40,0.00) B9(-13.70,-23.73) C9(13.70,-23.73)

D9(27.40,-0.00) E9(13.70,23.73)

1.2算法描述:

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

????

? ?

?===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] * 0000001t s ?? ?

? ???

=[t*x s*y 1]

旋转变换:在 平面上的二维图形饶原点逆时针旋转?角,变换矩阵为 [x* y* 1]=[x y 1] * cos sin 0sin cos 000

1θθθ

θ??

?

- ? ??

?

= [x*cos ?-y*sin ?]

比例变换:[x* y* 1]=[x y 1] *1000101m n ??

?

? ???

=[m+x n+y 1]

错切变换:

根据上述矩阵假设P(x1, y1)为错切变换之前的像素点,则错切变换以后对应的像素

P’(x2, y2)当X 方向错切变换时:

当Y 方向错切变换时:

1.3结果显示:

原始图形(图2.1):

X方向向左移动100个单位,Y方向向上移动100个单位(图2.2):

原地顺时针旋转30度(图2.3):

原地缩小1倍(图2.4)和放大1倍(图2.5):

图2.4

错切:

图2.6

三、三维图形几何变换

2.1基本数据结构描述:

顶点坐标:

{ -X, 0.0, Z }, { X, 0.0, Z }, { -X, 0.0, -Z }, { X, 0.0, -Z }

{ 0.0, Z, X }, { 0.0, Z, -X }, { 0.0, -Z, X }, { 0.0, -Z, -X }

{ Z, X, 0.0 }, { -Z, X, 0.0 }, { Z, -X, 0.0 }, { -Z, -X, 0.0 }

面表:

{1, 4, 0}, {4, 9, 0}, {4, 5, 9}, {8, 5, 4}, {1, 8, 4}

{1, 10, 8}, {10, 3, 8}, {8, 3, 5}, {3, 2, 5}, {3, 7, 2}

{3, 10, 7}, {10, 6, 7}, {6, 11, 7}, {6, 0, 11}, {6, 1, 0}

{10, 1, 6}, {11, 0, 9}, {2, 11, 9}, {5, 2, 9}, {11, 2, 7}

2.2算法描述:

平移:

设Tx,Ty,Tz是物体在三个坐标方向上的移动量,则有公式:

x′=x+Tx

y′=y+Ty

z′=z+Tz

矩阵运算表达为:

[x′ y′ z′ 1]=[x y z 1]

简记为:T(Tx,Ty,Tz)

旋转:

旋转分为三种基本旋转:绕z轴旋转,绕x轴旋转,绕y轴旋转。在下述旋转变换公式中,设旋转的参考点在所绕的轴上,绕轴转θ角,方向是从轴所指处往原点看的逆时针方向。

绕z轴旋转的公式为:

x′=xcosθ-ysinθ

y′=xsinθ+ycosθ

z′=z

矩阵运算的表达为:

[x′ y′ z 1]=[x y z 1]

简记为Rz(θ)。

绕x轴旋转的公式为:

x′=x

y′=ycosθ-zsinθ

z′=ysinθ+zcosθ

矩阵运算的表达为:

[x′ y′ z′ 1]=[x y z 1]

简记为Rx(θ)

绕y轴旋转的公式为:

x′=zsinθ+xcosθ

y′=y

z′=zcosθ-xsinθ

矩阵的运算表达式为:

[x′ y′ z′ 1]=[x y z 1]

简记为Ry(θ)。

2.3结果显示:

正二十面体(图3.1):

原图像向X、Y、Z负方向轴各移动一个单位(图3.2):

原地缩小一倍(图3.3):

图形绕Y轴旋转(图3.4):

错切:

对称(图3.6):

图3.6

四、心得体会

在这次的课程中不仅检验了我所学习的知识,也培养了我如何去把握一件事

情,如何去做一件事情,又如何完成一件事情。课程是我们理论课程知识综合应用的训练,在这次学习过程中,了解了计算机图形的基础,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时的不足和薄弱环节,从而加以弥补.从这次的课程学习让我们知道了自己的不足,学习的知识不够充分,对于计算机了解狭隘的缺点,对今后的学习和工作进步都有非常大的帮助。

教师评语:

评定成绩:

教师签字:

年月日

研究生计算机图形学课程室内场景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.sodocs.net/doc/521189800.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)

图像拼接调研报告

图像拼接的调研报告 1.图像拼接的意义和国内外研究现状 1.1 意义 图像拼接(image mosaic)技术是将一组相互间存在重叠部分的图像序列进行空间配准,经重采样融合后形成一幅包含各图像序列信息的宽视角场景的、完整的、高清晰的新图像的技术。图像拼接是数字图像处理领域的一个重要的研究方向,在摄影测量学、计算机视觉、遥感图像分析、计算机图形等领域有着广泛的应用价值。 图像拼接技术一个日益流行的研究领域,是虚拟现实、计算机视觉、计算机图形学和图像处理等领域的重要研究课题,在宇宙空间探测、海底勘测、医学、气象、地质勘测、军事、视频压缩和传输、视频的索引和检索、物体的3D重建、军事侦察和公安取证、数码相机的超分辨率处理等领域都有广泛的应用。因此,图像拼接技术的研究具有很好的应用前景和实际应用价值。 1.2 国内外研究现状。 关于图像拼接的方法国内外已有不少的论文发表,其算法大致可分为基于模型的方法,基于变换域的方法,基于灰度相关的方法和基于特征的方法,而如何提高图像拼接的效率,减少处理时间和增强拼接系统的适应性一直是研究的重点。 ①基于模型: 1996年,微软研究院的Richard Szeliski提出了一种2D空间八参数投影变换模型,采用Levenberg-Marquardt迭代非线性最小化方法(简称L-M算法)求出图像间的几何变换参数来进行图像配准。这种方法在处理具有平移、旋转、仿射等多种变换的待拼接图像方面效果好,收敛速度快,因此成为图像拼接领域的经典算法,但是计算量大,拼接效果不稳定。 2000年,Shmuel Peleg等人在Richard Szeliski的基础上做了进一步的改进,提出了自适应图像拼接模型,根据相机的不同运动而自适应选择拼接模型,通过把图像分成狭条进行多重投影来完成图像的拼接。这一研究成果推动了图像拼接技术的进一步的发展,从此自适应问题成为图像拼接领域新的研究热点。 匹兹堡大学的Sevket Gumustekin对消除在固定点旋转摄像机拍摄自然景物时形成的透视变形和全景图像的拼接进行了研究。通过标定摄像机来建立成像模型,根据成像模型将捕获到的图像投影到同一的高斯球面上,从而得到拼接图像。这种方法拼接效果好、可靠性高,但是要求对摄像机进行精确的标定,同时要求摄像机透镜本身的畸形参数引起的图像变形可以忽略不计。 ②基于变换域: 1975年,Kuglin和Hines提出了相位相关法,利用傅里叶变换将两幅带配准的图像变换频域,然后利用互功率谱直接计算出两幅图像间的平移矢量。 1987年,De Castro和Morandi提出了扩展相位相关法,利用傅里叶变换的性质能够实现具有旋转和平移变换的图像的配准。随着快速傅里叶变换算法的提出以及信号处理领域对傅里叶变换的成熟应用,Reddy和Chatterji提出了基于快速傅里叶变换(FFT-based)的方法,利用极坐标变换和互功率谱,对具有平移、旋转和缩放变换的图像都能够实现精确配准。 相位相关法计算简单精准,但要求待配准图像之间有较大重叠比例,同时计算量和适用

(完整版)计算机图形学发展综述

计算机图形学发展综述 报告 专业 班级 学生 学号

计算机图形学发展综述 一、计算机图形学历史 1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I(Whirlwind I)计算机的附件诞生了。该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。在整个50年代,只有电子管计算机,用机器语言编程,主要应用于科学计算,为这些计算机配置的图形设备仅具有输出功能。计算机图形学处于准备和酝酿时期,并称之为:“被动式”图形学。到50年代末期,MIT的林肯实验室在“旋风”计算机上开发SAGE空中防御体系,第一次使用了具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标。与此同时,类似的技术在设计和生产过程中也陆续得到了应用,它预示着交互式计算机图形学的诞生。 1962年,MIT林肯实验室的Ivan E.Sutherland 发表了一篇题“Sketchpad:一个人机交互通信的图形系统”的博士论文,他在论文中首次使用了计算机图形学Computer Graphics”这个术语,证明了交互计算机图形学是一个可行的、有用的研究领域,从而确定了计算机图形学作为一个崭新的科学分支的独立地位。他在论文中所提出的一些基本概念和技术,如交互技术、分层存储符号的数据结构等至今还在广为应用。1964年MIT的教授Steven A. Coons提出了被后人称为超限插值的新思想,通过插值四条任意的边界曲线来构造曲面。同在60年代早期,法国雷诺汽车公司的工程师Pierre Bézier发展了一套被后人称为Bézier曲线、曲面的理论,成功地用于几何外形设计,并开发了用于汽车外形设计的

计算机图形学课程设计报告

一、设计内容与要求 1.1、设计题目 算法实现时钟运动 1.2、总体目标和要求 (1)目标:以图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到巩固和实践计算机图形学课程中的理论和算法;学习表现计算机图形学算法的技巧;培养认真学习、积极探索的精神。 (2)总体要求:策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。(3)开发环境:Viusal C++ 6.0 1.3、设计要求 内容: (1)掌握动画基本原理; (2)实现平面几何变换; 功能要求: (1)显示时钟三个时针,实现三根时针间的相互关系;

(2)通过右键菜单切换时钟背景与时针颜色; 1.4设计方案 通过使用OpenGL提供的标准库函数,综合图形学Bresenham画线和画圆的算法,OpenGL颜色模型中颜色表示模式等实现指针式时钟运动,并通过点击右键菜单实习时钟背景与时针颜色的转换。根据Bresenham画线和画圆的算法,画出时钟的指针和表盘。再根据OpenGL颜色模型定义当前颜色。设置当时钟运行时交换的菜单,运行程序时可变换时钟背景与时针的颜色。最后再设置一个恢复菜单恢复开始时表盘与指针的颜色。

二、总体设计 2.1、过程流程图

2.2、椭圆的中点生成算法 1、椭圆对称性质原理: (1)圆是满足x轴对称的,这样只需要计算原来的1/2点的位置;(2)圆是满足y轴对称的,这样只需要计算原来的1/2点的位置; 通过上面分析可以得到实际上我们计算椭圆生成时候,只需要计算1/4个椭圆就可以实现对于所有点的生成了。 2、中点椭圆算法内容: (1)输入椭圆的两个半径r1和r2,并且输入椭圆的圆心。设置初始点(x0,y0)的位置为(0,r2); (2)计算区域1中央决策参数的初始值 p = ry*ry - rx*rx*ry + 1/4*(rx*rx); (3)在区域1中的每个Xn为止,从n = 0 开始,直到|K|(斜率)小于-1时后结束; <1>如果p < 0 ,绘制下一个点(x+1,y),并且计算 p = p + r2*r2*(3+2*x); <2>如果P >=0 ,绘制下一个点(x+1,y-1),并且计算 p = p + r2*r2*(3+2*point.x) - 2*r1*r1*(y-1) (4)设置新的参数初始值; p = ry*ry(X0+1/2)*(X0+1/2) + rx*rx*(Y0-1) - rx*rx*ry*ry; (5)在区域2中的每个Yn为止,从n = 0开始,直到y = 0时结束。 <1>如果P>0的情况下,下一个目标点为(x,y-1),并且计算 p = p - 2rx*rx*(Yn+1) + rx*rx;

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

虚拟现实(VR)的调研报告

虚拟现实(V R)技术的 调研报告 姓名: 学号:

一、虚拟现实的概念 1、虚拟现实(VirtualReality,简称VR) 虚拟现实技术(VR)是一种可以创建和体验虚拟世界的计算机仿真系统它利 用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。通过模拟产生一个逼真的虚拟世界,给用户提供完整的视觉、听觉、触觉等感官体验,让用户如身历其境能够实现在自然环境下的各种感知的高级人机交互技术。 2、虚拟现实(VirtualReality)的特征 (1)沉浸感:又称临场感,是指用户感到作为主角存在于虚拟环境中的真实程度,是VR技术最重要的特征,影响沉浸感的主要因素包括多感知性、自主性、三维图像中的深度信息、画面的视野、实现跟踪的时间或空间响应及交互设备的约束程度等。虚拟现实时代,人将从过去只能在计算机系统的外部观测处理结果,到沉浸到计算机系统所创建的环境中。 (2)交互性:指用户对虚拟环境中对象的可操作程度和从虚拟环境中得到反馈的自然程度(包括实时性)。人将从过去只能通过键盘、鼠标与计算环境中的单维数字信息交互,升级为用多种传感器(眼球识别、语音、手势乃至脑电波)与多维信息的环境交互。 (3)想象力:指用户在虚拟世界中根据所获取的多种信息和自身在系统中的行为,通过逻辑判断、推理和联想等思维过程,随着系统的运行状态变化而对其未来进展进行想象的能力。对适当的应用对象加上虚拟现实的创意和想象力,可以大幅度提高生产效率、减轻劳动强度、提高产品开发质量。人将不只从定性和定量综合集成的环境中得到感知和理性的认识,而是能够实现概念深化和新意萌发。

计算机图形学实验二报告

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目曲线拟合 学生姓名 学号 专业班级 指导教师 日期

成绩评定表

曲线拟合 1. 实验内容 1. 绘制三次Bezier曲线 (1)给定四个已知点P1—P4,以此作为控制顶点绘制一段三次Bezier曲线。 (2)给定四个已知点P1—P4,以此作为曲线上的点绘制一段三次Bezier曲线。 2. 绘制三次B样条曲线 给定六个已知点P1—P6,以此作为控制顶点绘制一条三次B样条曲线。 2. 实验环境 软硬件运行环境:Windows XP 开发工具:visual studio 2008 3. 问题分析 1. 绘制三次Bezier曲线 Bezier曲线是用N+1个顶点(控制点)所构成的N根折线来定义一根N阶曲线。本次实验中的三次Bezier曲线有4个顶点,设它们分别为P0,P1,P2,P3,那么对于曲线上各个点Pi(x,y)满足下列关系: P(t)=[(-P0+3P1-3P2+3P3)t3+(3P0-6P1+3P2)t2+(-3P0+3P2)t+(P0+4P1+P2)]/6 X(t)=[(-X0+3X1-3X2+3X3)t3+(3X0-6X1+3X2)t2+(-3X0+3X2)t+(X0+4X1+X2)]/6 Y(t)=[(-Y0+3Y1-3Y2+3Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y2)t+(Y0+4Y1+Y2)]/6 其中P0、P1、P2、P3为四个已知的点,坐标分别为(X0、Y0)、(X1、Y1)、(X1、Y2) 、(X3、Y3)。所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。 2. 绘制三次B样条曲线 三次B样条函数绘制曲线的光滑连接条件为:对于6个顶点,取P1、P2、P3、P4 4个顶点绘制在第一段三次样条曲线,再取P2、P3、P4、P5 这4个顶点绘制在第二段三次样条曲线,总计可绘制3段光滑连接的三次样条曲线。 4. 算法设计 程序框架 //DiamondView.h class CDiamondView : public CView { ……

计算机图形学实验二

实验报告 课程名称:计算机图形学 实验项目:区域填充算法 实验仪器:计算机 系别:计算机学院 专业:计算机科学与技术 班级姓名:计科1602/ 学号:2016011 日期:2018-12-8 成绩: 指导教师:

一.实验目的(Objects) 1.实现多边形的扫描线填充算法。 二.实验内容 (Contents) 实现多边形的扫描线填充算法,通过鼠标,交互的画出一个多边形,然后利用种子填充算法,填充指定的区域。不能使用任何自带的填充区域函数,只能使用画点、画线函数或是直接对图像的某个像素进行赋值操作;

三.实验内容 (Your steps or codes, Results) //widget.cpp //2016CYY Cprogramming #include"widget.h" #include #include #include using namespace std; #define H 1080 #define W 1920 int click = 0; //端点数量 QPoint temp; QPoint first; int result = 1; //判断有没有结束 int sign = 1; //2为画线 int length = 5; struct edge { int ymax; float x; float dx; edge *next; }; edge edge_; QVector edges[H]; QVector points;//填充用 bool fin = false; QPoint *Queue = (QPoint *)malloc(length * sizeof(QPoint)); //存放端点的数组 Widget::Widget(QWidget *parent) : QWidget(parent) { } Widget::~Widget() { } void Widget::mouseMoveEvent(QMouseEvent *event) { setMouseTracking(true); if (click > 0 && result != 0) { startPt = temp; endPt =event->pos(); sign = 2; update(); } } void Widget::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { } else if (event->button() == Qt::RightButton) { sign = 2;

计算机图形学实验报告记录

计算机图形学实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

计算机图形学实验报告 姓名:___ __________ 学号:_____ ________ 班级:______ _______ 时间:_____2016年12月_________

实验一OpenGL编程与图形绘制 1.实验目的 了解OpenGL编程,并熟悉OpenGL的主要功能、绘制流程和基本语法。学会配置OpenGL环境,并在该环境中编程绘图。 2.实验内容 OpenGL的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位图和图像处理、纹理映射、实时动画和交互技术。 OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。 OpenGL的基本语法中相关库有:OpenGL核心库:gl、OpenGL实用程序库:glu、OpenG 编程辅助库:aux、OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut、Windows 专用库:wgl。 OpenGL的基本语法中命名规则为:OpenGL函数都遵循一个命名约定,即采用以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>。 了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。 3.实验代码及结果 3.1点的绘制: #include 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 Display(void) {

计算机技术工程领域(085211)

计算机技术工程领域(085211) 全日制专业学位硕士研究生培养方案 一、学科简介 本学科为计算机科学与技术学科的计算机技术专业硕士点,计算机科学与技术专业是我校信息学科的核心专业之一,计算机技术是以培养高素质的创新型工程技术人才为目的。本学科在多年的教学科研工作中,兼顾工程技术实践与理论研究,着力建设重实践、宽口径的特色专业,以校企联合为手段,为信息技术产业输送高层次的计算机专门人才。在应用技术方面跟踪国内外前沿方向,形成应用技术研究与实践、产学研结合的特色。 二、培养目标 计算机技术工程领域培养基础扎实、素质全面、工程实践能力强并具有一定创新能力的应用型、复合型高层次工程技术和工程管理人才,基本要求是: 1.拥护党的基本路线和方针政策、热爱祖国、遵纪守法。 2.具有良好的职业道德和敬业精神,以及科学严谨、求真务实的学习态度和工作作风。 3.掌握计算机技术领域坚实的基础知识和宽广的专业知识,具有承担工程技术或工程管理工作的能力,了解本领域的技术现状和发展趋势,能够运用先进的计算机技术方法和现代技术手段解决工程问题,具备运用先进的工程化方法、技术和工具从事软件分析、设计、开发、维护等工作的能力,以及工程项目的组织与管理能力、团队协作能力、技术创新能力和市场开拓能力。 4.掌握一门外语,具备良好的阅读、理解和撰写外文资料的能力。 5.身心健康。 三、培养方式 1.采用脱产培养方式,实行学分制。 2.教学过程重视运用研讨式授课、案例教学等灵活多样的教学方式。 3.课程学习与实习实践相结合,课程学习主要在校内完成,实习实践主要在实践基地完成。 4.实行校内外“双导师制”,由校内导师和行业专家共同承担实践教学和学

计算机图形学课程参考文献

《计算机图形学》课程参考文献 [1 Kenneth R. Castleman, “Digital Image Processing”, Prentice-Hall International,Inc, 1996 [2] James Sharman. The Marching Cubes Algorithm[EB]. https://www.sodocs.net/doc/521189800.html,/. [3] William E. Lorensen, Harvey E. Cline. Marching Cubes: A High Resolution 3D Surface Construction Algrorithm[J].Computer Graphics, 1987, 21(4). [4] Jan Horn. Metaballs程序[CP]. http://www.sulaco.co.za. [5] 唐泽圣,等.三维数据场可视化[M].北京:清华大学出版社,1999.177-179. [6] 白燕斌,史惠康,等.OpenGL三维图形库编程指南[M].北京:机械工业出版社,1998. [7] 费广正,芦丽丹,陈立新.可视化OpenGL程序设计[M].北京:清华大学出版社,2001. [8] 田捷,包尚联,周明全.医学影像处理与分析[M].北京:电子工业出版社,2003. [9] 三维表面模型的重构、化简、压缩及其在计算机骨科手术模拟中的应用[R]. https://www.sodocs.net/doc/521189800.html,/~yike/uthesis.pdf ; [10] 首套中国数字化可视人体二维图像[DB]. http://www.chinesevisiblehuman. com/ pic/pictype.asp [11] 季雪岗,王晓辉,张宏林,等.Delphi编程疑难详解[M].北京:人民邮电出版社,2000. [12] 郑启华.PASCAL程序设计(第二版)[M].北京:清华大学出版社,1996. [13] 涂晓斌,谢平,陈海雷,蒋先刚.实用微机工程绘图实验教程[M].西南交通大学出版社,2004,4. [14] David F.Rogers.计算机图形学算法基础[M].北京:电子工业出版社,2002. [15] 李信真,车刚明,欧阳洁,封建湖.计算方法[M].西安:西北工业大学出版社,2000. [16] Paul Bourke Polygonising a scalar field [CP]. http://astronomy. https://www.sodocs.net/doc/521189800.html,.au/ ~pbourke/ modelling/polygonise/ [17] 刘骏.Delphi数字图像处理及高级应用[M].北京:科学出版社,2003. [18] 李弼程,彭天强,彭波,等.智能图像处理技术[M].北京:电子工业出版社,2004. [19] Kenneth R.Castleman著,朱志刚,石定机,等译.数字图像处理[M].北京:电子工业出版社,2002. [20] Milan Sonka, Vaclav Hlavac, Roger Boyle.Image Processing, Analysis, and Machine Vision [M].北京:人民邮电出版社,2003. [21] 阮秋奇.数字图像处理学[M]. 北京:电子工业出版社, 2001. [22] 刘宏昆,等.Delphi应用技巧与常见问题[M]. 北京:机械工业出版社, 2003. [23] 张增强,李鲲程,等.专家门诊—Delphi开发答疑300问[M].北京:人民邮电出版社,2003.6.

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

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

《计算机图形学》1-4章习题解答

《计算机图形学》1-4章习题解答 习题1 1.计算机图形学的研究内容是什么? 答:几何模型构造,图形生成,图形操作与处理,图形信息的存储、检索与交换,人机交互及用户接口,动画,图形输出设备与输出技术,图形标准与图形软件包的研究等。 2.计算机图形学与图像处理有何联系?有何区别? 答:计算机图形学与图像处理都是用计算机来处理图形和图像,结合紧密且相互渗透,但其属于两个不同的技术领域。计算机图形学是通过算法和程序在显示设备上构造图形,是从数据到图像的处理过程;而图像处理是对景物或图像的分析技术,是从图像到图像的处理过程。 3.简述计算机图形学的发展过程。 答:略。(参考:教材P3) 4.简述你所理解的计算机图形学的应用领域。 答:略。(参考:教材P4~P5) 习题2 1.什么是图像的分辨率? 答:在水平和垂直方向上每单位长度所包含的像素点的数目。 2.在CMY 坐标系里找出与RGB 坐标系的颜色(0.2,1,0.5)相同的坐标。 答:1-0.2=0.8,1-1=0, 1-0.5=0.5 坐标为(0.8, 0, 0.5) 3.在RGB 坐标系里找出与CMY 坐标系的颜色(0.15,0.75,0)相同的坐标。 答:1-0.15=0.85, 1-0.75=0.25, 1-0=1 坐标为(0.85, 0.25, 1) 4.如果使用每种基色占2比特的直接编码方式表示RGB 颜色的值,每一像素有多少种可能的颜色? 答:642222 22=?? 5.如果使用每种基色占10比特的直接编码方式表示RGB 颜色的值,每一像素有多少种可能的颜色? 答:824 10737411024 2223 10 10 10 ==??

一种基于计算几何方法的最小包容圆求解算法.kdh

2007年 工 程 图 学 学 报2007 第3期 JOURNAL OF ENGINEERING GRAPHICS No.3一种基于计算几何方法的最小包容圆求解算法 张 勇, 陈 强 (清华大学机械工程系先进成形制造重点实验室,北京 100084) 摘要:为实现点集最小包容圆(最小外接圆)的求解,将计算几何中的α-壳的概 念应用到最小包容圆的计算过程,提出了一种精确有效的最小包容圆求解算法。根据α-壳定 义及最小包容圆性质,证明当1/α等于最小包容圆半径时点集的α-壳顶点共圆,1/α小于最小 包容圆半径时α-壳不存在,1/α大于最小包容圆半径时随着1/α减小α-壳顶点数逐渐减小的规 律。将α-壳顶点数目作为搜索最小包容圆半径的依据,实现了最小包容圆半径的搜索和最小包容圆的求解。 关键词:计算机应用;优化算法;计算几何;最小包容圆;α-壳 中图分类号:TP 391 文献标识码:A 文章编号:1003-0158(2007)03-0097-05 Algorithm for Minimum Circumscribed Circle Detection Based on Computational Geometry Technique ZHANG Yong, CHEN Qiang ( Key Laboratory for Advanced Manufacturing by Materials Processing Technology, Department of Mechanical Engineering, Tsinghua University, Beijing 100084, China ) Abstract: α-hulls are applied to calculate the minimum circumscribed circle (MCC) of point set and an accurate and effective method for MCC detection is established through finding the least squares circle of the point set and iteratively approaching the MCC with recursive subdivision. Several theorems concerning the properties of α-hulls are presented. If 1/α is equal to the radius of points’ MCC, all vertices of the α-hull will be on the same circle. When 1/α is larger than the MCC’s radius, the number of vertices of α-hulls will decrease with decreasing of 1/α, and the number of vertices’ number will reach zero when 1/α is smaller than MCC’s radius. From the above rules, an algorithm for detecting MCC is developed, and experimental results show this algorithm is reliable. Key words: computer application; optimized algorithm; computational geometry; minimum circumscribed circle; α-hull 收稿日期:2005-12-20 基金项目:国家自然科学基金资助项目(50275083);高校博士点基金资助项目(20020003053)

计算机图形学课程设计报告简单图形的绘制-

《计算机图形学》课程设计 报告 学生姓名:学号: 学院: 班级: 题目: 简单图形的绘制 职称2015年7月1日

目录 目录............................................................................................... I 一、选题背景 (1) 二、算法设计 (2) 2.1 绘制直线、圆、椭圆、抛物线 (2) 2.1.1 绘制直线 (2) 2.1.2 绘制圆 (2) 2.1.3 绘制椭圆 (2) 2.1.4 绘制抛物线 (2) 2.2 三维几何变换 (2) 三、程序及功能说明 (5) 3.1 绘制直线、圆、椭圆、抛物线...... (5) 3.1.1 绘制直线 (5) 3.1.2 绘制圆 (5) 3.1.3 绘制椭圆 (5) 3.1.4 绘制抛物线 (6) 3.2 图形的平移 (6) 3.3 图形的旋转 (6) 3.4 图形的缩放 (7) 四、结果分析 (7) 4.1 绘制直线、圆、椭圆、抛物线 (7) 4.1.1 直线 (7) 4.1.2 圆 (8)

4.1.3 椭圆 (8) 4.1.4 抛物线 (8) 4.2 图形的平移 (9) 4.3 图形的旋转 (10) 4.4 图形的缩放 (11) 五、总结 (10) 六、课程设计心得体会 (14) 参考文献 (15) 源程序 (16)

一、选题背景

二、算法设计 2.1 绘制直线、圆、椭圆、抛物线 2.1.1 绘制直线 通过两个点的坐标来绘制直线。计算机图形学中二维图形在显示输出之前需要扫描转换,生成直线的算法一般有DDA 算法和中点算法。 2.1.2 绘制圆 通过运用圆的参数方程cos ;sin x a r y b r θθ=+=+来绘制圆的图形,其中[0,2]θπ∈, (a,b )为圆心,r 为半径,运用参数方程,只需要确定半径的长度和圆心的位置,即可绘制出圆。 2.1.3 绘制椭圆 通过运用椭圆的参数方程cos ;sin x a y b θθ==来绘制椭圆的图形,其中 [0,2]θπ∈,是已知的变量,a ,b 分别为长半轴,短半轴,当确定a 和b 后,通过参数方程即可得到这个椭圆的方程。 2.1.4 绘制抛物线 根据点绘制抛物线图像是通过拟合完成,根据三个点的坐标,通过数据拟合,得到经过这三个点的函数关系式,从而再根据这个函数关系式绘制出抛物线上其他的点,形成一条连续的抛物线;或直接根据已知函数绘制图像是通过已知函数画出图像。 2.2 三维几何变换 三维几何变换是二维几何变换的推广。二维几何变换在齐次坐标空间中 可用3?3的变换矩阵表示,类似的,三维几何变换在齐次坐标空间中可用4?4的变换矩阵表示。三维空间中的点(),,x y z 的齐次坐标定义为(),,h h h x y z ,其中,h 为不等与零的任意常数,h x hx =,h y hy =,h z hz =。亦即点(),,x y z 对应4维齐次坐标空间的一条直线:

计算机图形学实验报告

目录

实验一直线的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); glV ertex2i(int(x+0.5),(int)(y+0.5)); glEnd(); x+=xIncre; y+=yIncre; } } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); DDALine(100,100,200,180); glFlush(); }

计算机图形学第1_5章课后习题参考答案

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

计算机图形学实验报告

计算机图形学 实验报告 学号:20072115 姓名: 班级:计算机 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”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制; 3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。 4、实验结果 正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。成功地完成了实验。 结果截图: 5、实验体会 通过实验一,了解了如用使用基本的SDI编程函数绘制简单的图

相关主题