2024年3月29日发(作者:)

--基于四叉树算法绘制颜色填充等值线图

一、 问题提出与需求分析

1、 问题及目标

问题:基于四叉树算法绘制颜色填充等值线图。

目标:利用四叉树思想用所给文件中的数据绘制等值线图,并绘出坐标系及颜色标识

码。通过本次实验提高学生编程能力,加深对OpenGL的理解,加深对VC++6.0的认识。

2、 问题概念及算法原理

等值线是一组值相等的序列连线组成的图形。等值线图在实际中应用广泛,

如等高线图、等气压图等等。等值线的表达形式有两类:一类是画线等值线图;另一

类是颜色填充等值线图。

依据数据分部不同,等值线图的绘制有两类方法:三角网法和矩形网格法。三角网法

是针对数据分布不规则的环境下的一种绘制方法。矩形网格法是一种针对数据分布规则的

等直线图绘制方法。它是设平面区域按一定大小的网格距划分的矩形网格。

由于所给数据时矩形网格数据,所以本程序采用矩形网格法,并采用颜色填充。改程

序采用基于四叉树的颜色填充等值线图绘制方法。

四叉树的基本算法思想是:当网格四个节点的颜色值相等时,则用该颜色值填充该矩

形,否则将矩形网格等分四个小网格,并用插值方法计算每个小网格的颜色值,递归使用

网格四个节点的颜色值是否相等,由此依次建立一棵四叉树。当细分至四个节点的颜色值

全部都小于或等于一个像素时,则将其视为等值线上的点,用来画等值线。

在该程序中,对于等值线处理比较粗糙,采用的是描点的方式,当四个节点的颜色值

全部都小于或等于一个像素时,对其进行描点处理,这样处理的结果导致等值线不够光滑,

且颜色级数不能过大,否则效果比较难看。一般来说颜色级数为11最佳,主要是本人能

力有限。

二、 绘图程序设计的技术思路

1、 程序总体设计

利用四叉树思想绘制等颜色填充等值线图,首先应从数据文件中读取数据,

用二级指针**a来存放,并求出最大值max及最小值min,接收键盘输入的颜色级数

Ncolor,并求出等值颜色域的间距Dc,Dc=(max-min)/Ncolor。为了填充颜色得先建立

颜色填充表,可以采用颜色类的方式,本程序中采用三个浮点型数组r、g、b来建立颜色

填充表,由函数void Color(int m)来构造。

准备工作做好了开始构建四叉树,采用递归思想循环调用四叉树算法填充矩形网格的

颜色值,当x增量和y增量都小于1个像素点时则可认为该点为等值区域的边界点,即等

值线上的点,作为描绘等值线的点。填充完毕后建立平面坐标系并绘制色码标识。

根据以上所述,程序设计步骤可分为以下几步:

1