图形学课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相同的,同样是利用颜色填充等值域。但是采用的填充方法不同。基于四叉树填充算法思 想是:当网格节点的颜色值相等时,则用该颜色值填充该网格矩形,否则斯等分细分网格, 依次建立一棵四叉树如图所示:
X0,y0,dx,dy,*z,*tree[4]
X0,y0,dx,dy,*z,*tree[4]
X0,y0,dx,dy,*z,*tree[4]
4 4)坐标投影计算功能函数:projection()。
5)绘制一个B样条小曲面片的图形功能函数:DrawMinSurface()。 6)绘制坐标系功能函数: DrawCoordinate()。 7)曲面绘制菜单事件处理函数DrawSurfaceClick()。
3、直线窗口剪裁图形软件设计
本程序的设计技术思路已在图形学课堂上作了介绍。希望同学们在此基础上按照软件 设计的要求增加下面功能: 1)任意多条直线数据的输入具有键盘、鼠标和文件多种输入功能。 2)剪裁窗口的位置、大小能任意交互给定。 3)显示具有双视口(原始图形视口,剪裁结果图形视口)的功能。 4)具有删除某条直线的功能
f c1 c2 c3 c4 4 * cc
其中:c1,c2,c3,c4,和cc分别如下图所示。 式中: 若f为0,则cc点处不是等值线边界线,否则cc点是等值线的
边界线。
c2
c1
cc
c3
c4
(3)绘制颜色填充的等值线图的算法步骤是: 1)求全区域的最大值Zmax和最小值Zmin。 2) 给定等值线的级数N,求得等值线的间距dc=(Zmax-Zmin)/N。 3) 建立填充颜色表color[]。 4) 循环递归调用四叉树算法填充网格矩形颜色值。 5)等值线检测 6)绘制平面坐标系 7)绘制色码标识
图、等气压图等等。等值线的表达形式有两类:一类是画线等值线图;另一类是颜色填充 等值线图(如图所示)。
(2)等值线图的数据组织 等值线图的数据绘制有两种方法:一种方法是通过建立三角网将给定绘制等值线的值通过 网格之间的等值连接而成。另一类方法是通过矩形网给连接等直线。本课程设计以第二种 方法讨论等值线图的绘制。设平面一区域按一定大小的网格测得一组数据,如图所示。 显然,数据的组织是一个二维数组,即每一个网格节点有一Z值。
2、曲面图的绘制概要说明
曲面图是实际中应用广泛的图件之一。其特点是能直观地反映曲面的起伏变化与曲面
的形态,如图所示。绘制曲面图大致分为三部分。
a. 数据规则网格化
b.坐标投影变换
c. 图形消隐
(1)技术难点说明 1)数据规则网格化
数据规则网格化(简称网格化),它包括两方面,一方面是将离散点规则化为具有一
除是指当前面的Z值大于后面的Z值时,则前面遮挡了后面,如图所示。
该段曲线产生遮挡 需要消除隐藏线
消除隐藏线的方法很多,课程设计中可以使用下面两种简单方法之一。 a. 画家消除法
画家消除法思想是先画后面的矩形,后画前面的矩形,由此形成了一种如果前面的矩
形高于后面矩形,则形成覆盖。(注意这里矩形事实上是指平面网格,它通过投影是 一多边形) b. Z值比较法 Z值比较法是通过前后的z值的比较来判断隐藏线的消除。具体步骤是: 1.建立一个以水平方向网格节点数的存储单元y[M] 2.初始化y[m] y[I]=min(Z[I][j]) 3.if(z[I][j]>y[j]) 则该点是可见点,将y[j]=z[I][j] ;否则该点是不可见点,计算两直线的 交点,消除不可见的线段。 (2)曲面图绘制的步骤(以画家消除法为例): 1) 控制点数据文件读入函数:ReadFile()。 2)A0,A1,A2,A3或B0,B1,B2,B3计算功能函数:Calculate()。 3)三次B样条曲面拟合计算功能函数Bsimple()。
定大小规则网格点,如下图所示。另一方面就是将稀网格加密为密度高的网格。显然,网 格化实际是一种曲面拟合方法。曲面拟合方法很多,课程设计中可以应用反拟合双三次B 样条将稀网格加密为密网格。反拟合双三次B样条见教材。
2)隐藏线消除 为了得到立体感强的曲面图形,曲面隐藏线消除是十分重要的。所谓曲面隐藏线消
显然,上述过程是一个递归过程。在递归过程中需要计算如下参数:
X0,y0:细分网格的起点坐标
dx,dy :细分网格的网格距
*Z: 网格节点的Z值
*tree: 子树的指针
2)技术难点说明
(1) 建立四叉树的存储数据结构
(2) 递归过程的建立
输入树指针p
Y
p=NULL
N
计算网格节点的颜色值Ic[I]
(网格节点的颜色值相等) ||
二、课程设计题目
1、基于四叉树算法绘制颜色填充等值线图 2、三维曲面图的绘制 3、直线窗口剪裁图形软件设计 4、平面多边形窗口剪裁图形软件设计 5、基于深度缓存算法的三维实体图形绘制
三、图形程序设计概要说明
1、基于四叉树算法绘制颜色填充等值线图概要说明
( 1)等值线的基本概念 等值线是一组值相等的序列连线组成的图形。等值线图在实际中应用广泛,如等高线
50 100
(3)算法分析 1)颜色填充:由上面的数据组织,实际上,讨论颜色填充的等值线图的算法仅讨论一个
网格即可。下面我们取一个网格讨论颜色填充的等值线图的算法:
I1(250)
I2(200) I4(250)
I4(200)
I3(180)
ห้องสมุดไป่ตู้
扫描线
2)等值线检测:等值线检测是利用图像边缘检测技术来检测等直线,
算法是采用四连通区域法:flag=c1+c2+c3+c4-4*cc ; 如果flag=0 则颜色不变,否则颜色发
生变化,即cc点为图像边缘点(见下图)。
I4(150) I4(180)
I4(150)
3)基于四叉树算法绘制颜色填充等值线图算法思想: 基于四叉树算法绘制颜色填充等值线图与基于扫描算法绘制颜色填充等值线图的原理是
y
(p-dx<=1.0 && p->dy<=1.0)
N
用节点的颜色值 网格细分并应用Bezier曲面拟合
绘制网格矩形
求细分网格节点的Z值和建立子树
p=NULL
for I=0; I<4;I++
递归遍历四四叉树
4)绘制等值线的算法: 四叉树算法绘制了色块等值线图,对于等值线图不是十分明显, 需要追踪等值线。对于等值线的追踪,我们可以应用图像边缘 检测原理搜索等值线。图像边缘检测算法原理:
X0,y0,dx,dy,*z,*tree[4]
X0,y0,dx,dy,*z,*tree[4]
X0,y0,dx,dy,*z,*tree[4]
4 4)坐标投影计算功能函数:projection()。
5)绘制一个B样条小曲面片的图形功能函数:DrawMinSurface()。 6)绘制坐标系功能函数: DrawCoordinate()。 7)曲面绘制菜单事件处理函数DrawSurfaceClick()。
3、直线窗口剪裁图形软件设计
本程序的设计技术思路已在图形学课堂上作了介绍。希望同学们在此基础上按照软件 设计的要求增加下面功能: 1)任意多条直线数据的输入具有键盘、鼠标和文件多种输入功能。 2)剪裁窗口的位置、大小能任意交互给定。 3)显示具有双视口(原始图形视口,剪裁结果图形视口)的功能。 4)具有删除某条直线的功能
f c1 c2 c3 c4 4 * cc
其中:c1,c2,c3,c4,和cc分别如下图所示。 式中: 若f为0,则cc点处不是等值线边界线,否则cc点是等值线的
边界线。
c2
c1
cc
c3
c4
(3)绘制颜色填充的等值线图的算法步骤是: 1)求全区域的最大值Zmax和最小值Zmin。 2) 给定等值线的级数N,求得等值线的间距dc=(Zmax-Zmin)/N。 3) 建立填充颜色表color[]。 4) 循环递归调用四叉树算法填充网格矩形颜色值。 5)等值线检测 6)绘制平面坐标系 7)绘制色码标识
图、等气压图等等。等值线的表达形式有两类:一类是画线等值线图;另一类是颜色填充 等值线图(如图所示)。
(2)等值线图的数据组织 等值线图的数据绘制有两种方法:一种方法是通过建立三角网将给定绘制等值线的值通过 网格之间的等值连接而成。另一类方法是通过矩形网给连接等直线。本课程设计以第二种 方法讨论等值线图的绘制。设平面一区域按一定大小的网格测得一组数据,如图所示。 显然,数据的组织是一个二维数组,即每一个网格节点有一Z值。
2、曲面图的绘制概要说明
曲面图是实际中应用广泛的图件之一。其特点是能直观地反映曲面的起伏变化与曲面
的形态,如图所示。绘制曲面图大致分为三部分。
a. 数据规则网格化
b.坐标投影变换
c. 图形消隐
(1)技术难点说明 1)数据规则网格化
数据规则网格化(简称网格化),它包括两方面,一方面是将离散点规则化为具有一
除是指当前面的Z值大于后面的Z值时,则前面遮挡了后面,如图所示。
该段曲线产生遮挡 需要消除隐藏线
消除隐藏线的方法很多,课程设计中可以使用下面两种简单方法之一。 a. 画家消除法
画家消除法思想是先画后面的矩形,后画前面的矩形,由此形成了一种如果前面的矩
形高于后面矩形,则形成覆盖。(注意这里矩形事实上是指平面网格,它通过投影是 一多边形) b. Z值比较法 Z值比较法是通过前后的z值的比较来判断隐藏线的消除。具体步骤是: 1.建立一个以水平方向网格节点数的存储单元y[M] 2.初始化y[m] y[I]=min(Z[I][j]) 3.if(z[I][j]>y[j]) 则该点是可见点,将y[j]=z[I][j] ;否则该点是不可见点,计算两直线的 交点,消除不可见的线段。 (2)曲面图绘制的步骤(以画家消除法为例): 1) 控制点数据文件读入函数:ReadFile()。 2)A0,A1,A2,A3或B0,B1,B2,B3计算功能函数:Calculate()。 3)三次B样条曲面拟合计算功能函数Bsimple()。
定大小规则网格点,如下图所示。另一方面就是将稀网格加密为密度高的网格。显然,网 格化实际是一种曲面拟合方法。曲面拟合方法很多,课程设计中可以应用反拟合双三次B 样条将稀网格加密为密网格。反拟合双三次B样条见教材。
2)隐藏线消除 为了得到立体感强的曲面图形,曲面隐藏线消除是十分重要的。所谓曲面隐藏线消
显然,上述过程是一个递归过程。在递归过程中需要计算如下参数:
X0,y0:细分网格的起点坐标
dx,dy :细分网格的网格距
*Z: 网格节点的Z值
*tree: 子树的指针
2)技术难点说明
(1) 建立四叉树的存储数据结构
(2) 递归过程的建立
输入树指针p
Y
p=NULL
N
计算网格节点的颜色值Ic[I]
(网格节点的颜色值相等) ||
二、课程设计题目
1、基于四叉树算法绘制颜色填充等值线图 2、三维曲面图的绘制 3、直线窗口剪裁图形软件设计 4、平面多边形窗口剪裁图形软件设计 5、基于深度缓存算法的三维实体图形绘制
三、图形程序设计概要说明
1、基于四叉树算法绘制颜色填充等值线图概要说明
( 1)等值线的基本概念 等值线是一组值相等的序列连线组成的图形。等值线图在实际中应用广泛,如等高线
50 100
(3)算法分析 1)颜色填充:由上面的数据组织,实际上,讨论颜色填充的等值线图的算法仅讨论一个
网格即可。下面我们取一个网格讨论颜色填充的等值线图的算法:
I1(250)
I2(200) I4(250)
I4(200)
I3(180)
ห้องสมุดไป่ตู้
扫描线
2)等值线检测:等值线检测是利用图像边缘检测技术来检测等直线,
算法是采用四连通区域法:flag=c1+c2+c3+c4-4*cc ; 如果flag=0 则颜色不变,否则颜色发
生变化,即cc点为图像边缘点(见下图)。
I4(150) I4(180)
I4(150)
3)基于四叉树算法绘制颜色填充等值线图算法思想: 基于四叉树算法绘制颜色填充等值线图与基于扫描算法绘制颜色填充等值线图的原理是
y
(p-dx<=1.0 && p->dy<=1.0)
N
用节点的颜色值 网格细分并应用Bezier曲面拟合
绘制网格矩形
求细分网格节点的Z值和建立子树
p=NULL
for I=0; I<4;I++
递归遍历四四叉树
4)绘制等值线的算法: 四叉树算法绘制了色块等值线图,对于等值线图不是十分明显, 需要追踪等值线。对于等值线的追踪,我们可以应用图像边缘 检测原理搜索等值线。图像边缘检测算法原理: