- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形数据管理
2.2 图形数据管理
计算机中的图形要素可以分解为“点要素”、“线要素”和“区域要素”。点要素是不具有大小和形状,在坐标空间中给定位置加以定义的形态要素;线信息是指不具有宽度特征,仅具有长短和方向的形态要素;区域信息是指在坐标空间内具有大小、形状的形态要素。对这些形态要素往往需要根据其集合位置进行检索,例如范围检索(寻找与给定范围相交或在给定范围之内的图形要素)、最接近检索(例如寻找与给定点最接近的图形要素)等。为此,需要根据其空间位置对图形要素的数据加以适当的组织,以缩小检索时的搜索空间。这就是图形数据管理中的一项基本任务。
限于篇幅,我们不可能对各种图形数据管理的方法一一加以介绍,在此仅通过举例说明其中的一些重要方法。
2.2.1点要素的分区管理
点要素的分区管理采用将多维数据空间分割成为分区空间,然后将每一分区空间内的要素加以集中进行管理。不失一般性,设二维空间的每一坐标轴分别划分为n1、n2个单元,则其中的每一分区可以标识为B(i1,i2)。这时,其最接近点检索算法如下:
【算法2-1】点要素分块管理的最接近点检索算法
步骤1:根据给定点K的坐标计算对应的分块标号B(i1,i2)。
步骤2:对于B(i1,i2)中的所有点要素,计算与点K之间的距离,求出在这一分区中与点K最接近的点P,设两者之间的距离为L。
步骤3:以点K为中心,以2L为边长,作正方形S(点K为中心,L为半径的圆为该正方形的内接圆)。如果存在比点P更接近点K的点A,则A必在S之中。
步骤4:根据S进行范围搜索,找出与值相交的分区B1,B2,…。分别对每一相交分区Bi中的点计算与K之间的距离,与L比较后找出最接近点。
分区管理的方法具有一些固有的缺点:当点要素分布极不均匀时,由于大部分点集中于少数分区之中,各种检索的效率将大幅度下降;另一方面,由于需要在系统建立之前确定分区的数量,往往不能保证分区的合理性。
2.2.2 利用BD树进行点要素管理
为改进利用空间均匀分割对点要素进行管理时,点的空间分布不均匀造成的问题,人们研究了利用不均匀空间分割进行图形要素管理的方法,其中k-d树、BD树等均是有效的管理方法。
当考虑对点要素不均匀分布的空间进行管理时,最直接的想法是把空间逐步进行二等分,如果产生的分块只有一个点要素的话,就停止对该分块的进一步细化,否则进一步细分直到仅包含一个要素为止。
例如对于不均匀分布在二维空间的点1~8,可以通过逐步等分形成如图2-9所示的分块。如果采用二叉树描述这一分块过程,可以得到如图2-10所示的结构。需要注意的是,其中的节点d,e,g
图2-9 空间区域的划分
图2-10 描述空间分割的二叉树结构
图2-11 描述空间分割的BD树
的一侧子节点并不含有数据,是一个空节点。换句话说,节点d,e,g存在的意义仅在于表示一种空间分割的阶层结构。为此,设想是否能够通过适当的简化,将这类节点省略。简化的方法就是利用一种称为区域分割表达式的公式描述分割路径。在区域分割表达式中,0表示取分割后的左(下)侧区域,1表示取分割后的右(上)侧区域。在二叉树结构中,0表示沿左侧边下行,1表示沿右侧边下行。例如对于图2-5中的阴影区域,其二叉树的路径为:左→左→右→右→右,因而其区域分割表达式为:00111。采用这一方法,可以将图2-10 的二叉树简化为图2-11 的形式。
2.2.3线要素管理的简单方法
与线要素空间位置有关的检索主要有点检索(寻找与给定点最接近的直线段)、相交线检索(寻找与给定直线段相交的所有直线段),以及区域检索(寻找位于给定区域内的全部直线段)。在检索检索的过程中,许多情况具有较高的代价。例如,检验两条直线段是否相交时,设两条直线段的端点坐标分别为(Xa1,Ya1)、(Xa2,Ya2)、(Xb1,Yb1)、(Xb2,Yb2),这时我们有:
ξ= (Yb2-Yb1) (Xb2-Xa1)-(Xb2-Xb1) (Yb2-Ya1)
η= -(Ya2-Ya1) (Xb2-Xa1)+(Xa2-Xa1) (Yb2-Ya1) (2-1)
β= (Xa2-Xa1) (Yb2-Yb1)-(Ya2-Ya1) (Xb2-Xb1)
当ξ、η、β-ξ和β-η的符号全部一样时,这两条直线段相交。为实现这一判断需要进行6次乘法和12次加减运算。在此基础上进一步求交点时,还需要求解:
λ=ξ/β
X=Xa1+λ(Xa2-Xa1) (2-2)
Y=Ya1+λ(Ya2-Ya1)
因而共需要进行8次乘法和1次除法运算。
所以,研究者提出了各种数据管理方法,以求避免对所有直线段两两比较。其最简单的做法是做直线的外接矩形,仅当直线段间的外接矩形具有相互重叠部分时,才进一步进行相交条件比较,否则两线段肯定不相交。
图2-12 直线段的外
文档评论(0)