一种不等高度的三维立体饼图的绘制方法及系统的制作方法

文档序号:6487072阅读:824来源:国知局
一种不等高度的三维立体饼图的绘制方法及系统的制作方法
【专利摘要】本发明涉及一种不等高度的三维立体饼图的绘制方法及系统,属于计算机图像处理【技术领域】。本发明所述方法包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;(3)找到所有绘制角度范围跨越90度以及270度的饼对象,用一条垂直分割线将其在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割;(4)重新调整各个饼对象的绘制顺序并进行绘制。采用本发明所述的方法和系统可以方便地实现不等高度的立体三维饼图的正确绘制,包括处理各个饼之间的压盖关系。
【专利说明】一种不等高度的三维立体饼图的绘制方法及系统
【技术领域】
[0001]本发明属于计算机图像处理【技术领域】,具体涉及一种不等高度的三维立体饼图的绘制方法及系统。
【背景技术】
[0002]通过计算机进行饼图绘制是很多GIS (地理信息系统,Geographic InformationSystem)软件及图表绘制软件中的常用功能。目前大部分GIS及图表系统通常提供简单饼图、立体饼图的绘制功能,其通常以角度表示各专题分量的比例关系,如图1所示。
[0003]无论是简单饼图还是立体饼图,其只能展现一个统计分量,例如每一个地区的钢产量之间的比例关系。而当存在第二个统计分量需要在饼图中展现时,传统的饼图形式无法将其同时展现出来。此时,我们可以对饼图中每一部分的采用不同的半径或不同的高度进行展现,这样,就可以在一个饼图中表现更多的统计分量。如图2所示,图2显示了一个不等高度的复杂三维饼图,其可以表现两个统计分量的占比情况。
[0004]目前提供这种不等高度的复杂三维饼图绘制功能的软件比较少,并且其基于二维绘制API (如Windows⑶I,⑶I+等)绘制过程也非常复杂,不但需要绘制每一个饼的立体效果,还要考虑到各个饼之间的压盖关系,确定各个饼的绘制先后顺序,并设置正确的绘制裁剪区域。
[0005]在现有的饼图绘制技术中,已经实现了简单饼图(平面饼图)以及普通立体饼图的绘制,各种常见的GIS软件及图表绘制软件基本都提供了相关的功能。目前大部分软件主要基于二维绘制接口(如Windows平台的⑶I,⑶I+等)实现对饼图的绘制,其重点是利用绘制API提供的裁剪区功能,在每一个饼对象绘制完成后,修改当前裁剪区。以普通立体饼图的绘制过程为例,其通常分为以下几个步骤:
[0006]1.获取各统计分量的数值
[0007]2.计算各饼应占的角度范围
[0008]3.绘制每一个饼对象,绘制完成后,根据该饼对象的角度跨度,确定该饼对象不可覆盖的屏幕区域,并相应修改绘制裁剪区,以便下一个饼对象绘制的时候不会覆盖此区域。
[0009]在确定裁剪区域时,考虑的主要有饼对象的顶面、外圆侧面、内径侧面。由于各个饼对象的高度一致,因此饼的顶面不存在覆盖的情况,仅需处理外圆侧面及内径侧面的覆盖情况,每一个饼对象绘制时主要考虑其内径侧面是否需要加入到绘制裁剪区即可,处理比较简单。
[0010]现有的普通三维立体饼图的绘制方法适用于各个饼对象等高度的情况,此时很容易决定每一个饼对象不可覆盖的屏幕区域,从而正确设置裁剪区。而当每一个饼高度不等时,此时饼的顶面可能被其它饼对象的顶面或侧面遮盖,而由于每一个饼对象的侧面存在部分遮盖的情况,此时裁剪区的计算非常复杂。以图3为例:当“I”先绘制时,如果不设置裁剪区,则“2”绘制时会遮盖“I”所在区域,但如果将“I”的内径侧面加入裁剪区,则“4”绘制时又无法覆盖“ I ”的底部区域。[0011]此时要正确计算“I”绘制后应扣除的裁剪区域相当困难,因为“3”对象如果角度增大到一定程度后,其同样会覆盖“I”的侧面区域,如图4所示。
[0012]此时要正确绘制三维立体饼图,必须在三维空间中计算对象“I”的不规则裁剪区,而这一过程对于大部分传统的基于二维绘制接口的程序过于复杂而难以实现。

【发明内容】

[0013]针对现有技术中存在的缺陷,本发明的目的是提供一种简便易行的不等高度的三维立体饼图的绘制方法及系统。该方法和系统不必进行三维空间下的裁剪区复杂计算,即可实现任意不等高度立体饼图的正确绘制。
[0014]为达到以上目的,本发明采用的技术方案是:一种不等高度的三维立体饼图的绘制方法,包括以下步骤:
[0015](I)获取各统计分量的数值,以便确定各饼对象的绘制角度;
[0016](2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;
[0017](3)找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;
[0018](4)重新调整各个饼对象的绘制顺序并进行绘制。
[0019]进一步,步骤(3)中,所述的设定角度为90度以及270度,用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。
[0020]进一步,步骤(4)中,重新调整各个饼对象的绘制顺序并进行绘制的方法如下:在垂直分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,在绘制的时候无需调整裁剪区。
[0021]一种不等高度的三维立体饼图的绘制系统,包括以下装置:。
[0022]各统计分量获取模块,用于获取各统计分量的数值,以便确定各饼对象的绘制角度;
[0023]计算模块,用于依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;
[0024]分割模块,用于找到所有绘制角度范围跨越设定角度的饼对象,用一条垂直分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;
[0025]绘制模块,用于重新调整各个饼对象的绘制顺序并进行绘制。
[0026]进一步,所述的设定角度为90度以及270度,分割模块用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。
[0027]进一步,所述的绘制模块在分割线左右两侧都按照从上到下的顺序进行绘制。
[0028]本发明的效果在于:采用本发明所述的方法及系统,大大简化了不等高度三维立体饼图的绘制方法,解决了其绘制过程中对各种高度、角度的饼对象之间相互压盖导致的裁剪区计算的复杂性。对于目前各种基于二维绘制API技术开发的GIS、图表制作软件绘制这种复杂饼图具有很大帮助。
【专利附图】

【附图说明】
[0029]图1是二维饼图示例;
[0030]图2是三维立体饼图示例一;
[0031]图3是三维立体饼图示例二 ;
[0032]图4是三维立体饼图示例三;
[0033]图5是本发明所述一种不等高度的三维立体饼图的绘制方法的原理图;
[0034]图6是本发明所述方法一种【具体实施方式】的流程图;
[0035]图7是本发明所述系统的结构图。
【具体实施方式】
[0036]下面结合附图和【具体实施方式】对本发明作进一步描述。
[0037]本发明基于二维绘制API,针对这种不等高度的复杂三维饼图的绘制给出了一种非常简单的方法,基于此方法可以方便地实现不等高度的立体三维饼图的正确绘制,包括处理各个饼之间的压盖关系。
[0038]通过对不等高度三维立体饼图中各饼的覆盖关系进行深入研究,发现如果仅依靠裁剪区实现绘制功能过于复杂,必须对每一个饼的绘制顺序进行调整,如此可简化裁剪区计算的复杂性。但是每一个饼对象其在四个象限分布的情况是任意的,一个饼对象可能跨越一个、两个甚至三个象限,加上其高度的任意变化影响遮盖关系,因此要确定饼的正确绘制顺序同样非常复杂。再进一步分析,确定饼对象的绘制顺序主要困难在于其跨越象限的问题,而关键的跨越象限影响,出现在从第一到第二象限以及从第三象限到第四象限。
[0039]经过研究,本发明提出了不等高度的三维立体饼图简要绘制方法,其关键思想如图5所示。
[0040]1.利用一条垂直线,将跨越一、二象限以及跨越三、四象限的饼对象分割为两半,经过此分割后,每一个饼对象的绘制顺序判断大大简化;
[0041]2.在垂直分割基础上,调整饼对象的绘制顺序,从而大大简化绘制裁剪区的计算复杂性。
[0042]如图6所示,一种不等高度的三维立体饼图的绘制方法,包括以下步骤:
[0043](I)获取各统计分量的数值,以便确定各饼对象的绘制角度,见步骤SI ;
[0044](2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度,见步骤S2 ;
[0045](3)找到所有绘制角度范围跨越90度以及270度的饼对象,用一条垂直分割线将其在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割,见步骤S3 ;
[0046](4)重新调整各个饼对象的绘制顺序并进行绘制,见步骤S4。
[0047]本实施例中,在垂直分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,在绘制的时候无需调整裁剪区,因为下面的饼图对象绘制时会自然覆盖上面的饼图对象,而处于上面的饼图对象不会覆盖下面的饼图对象;[0048]a)在垂直分割线右侧沿着从上到下(90度到O度再到270度的顺序)的顺序绘制饼对象;
[0049]b)在垂直分割线左侧沿着从上到下(90度到180度再到270度的顺序)的顺序绘制饼对象。
[0050]本发明给出的不等高度三维立体饼图绘制一套简便方法,其中涉及到下面两个关键技术点:
[0051]1、利用一条垂直线,将跨越一、二象限以及跨越三、四象限的饼对象分割为两半。此步骤非常关键,因为经过此分割后,左右两侧饼对象的绘制顺序判断大大简化,只需从上到下绘制即可。
[0052]2、通过调整饼对象绘制顺序,实现后绘制饼对象自动压盖先绘制的饼对象,从而简化绘制时裁剪区的计算。
[0053]要绘制不等高度三维立体饼图,还有一种方案是基于三维绘制API进行开发,利用DirectX、OpenGL等API进行绘制,由于其可以通过Z缓冲区的判断正确处理各饼对象的压盖关系,因此同样可解决此问题。但是现有大部分GIS及图表软件仍然基于二维技术研发,其短期内无法转变为纯三维软件,故这些三维绘制技术在这些软件中难有用武之地。
[0054]如图7所示,一种不等高度的三维立体饼图的绘制系统,包括以下模块:
[0055]各统计分量获取模块21,用于获取各统计分量的数值,以便确定各饼对象的绘制角度;
[0056]计算模块22,用于依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;
[0057]分割模块23,用于找到所有绘制角度范围跨越90度以及270度的饼对象,用一条垂直分割线将其在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割;
[0058]绘制模块24,用于重新调整各个饼对象的绘制顺序并进行绘制。
[0059]本实施例中,所述的绘制模块24在垂直分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,在绘制的时候无需调整裁剪区。
[0060]如【具体实施方式】所述,本发明针对不等高度三维立体饼图的绘制给出一种简便的实现方法,基于此方法不必进行三维空间下的裁剪区复杂计算,即可实现任意不等高度立体饼图效果的正确绘制。
[0061]本发明所述的方法和系统并不限于【具体实施方式】中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。
【权利要求】
1.一种不等高度的三维立体饼图的绘制方法,包括以下步骤: (1)获取各统计分量的数值,以便确定各饼对象的绘制角度; (2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度; (3)找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割; (4)重新调整各个饼对象的绘制顺序并进行绘制。
2.如权利要求1所述的一种不等高度的三维立体饼图的绘制方法,其特征是,步骤(3)中,所述的设定角度为90度以及270度,用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。
3.如权利要求1或2所述的一种不等高度的三维立体饼图的绘制方法,其特征是,步骤(4)中,重新调整各个饼对象的绘制顺序并进行绘制的方法如下: 在分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,在绘制的时候无需调整裁剪区。
4.一种不等高度的三维立体饼图的绘制系统,包括以下模块: 各统计分量获取模块,用于获取各统计分量的数值,以便确定各饼对象的绘制角度; 计算模块,用于依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度; 分割模块,用于找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割; 绘制模块,用于重新调整各个饼对象的绘制顺序并进行绘制。
5.如权利要求4所述的一种不等高度的三维立体饼图的绘制系统,其特征在于:所述的设定角度为90度以及270度,分割模块用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。
6.如权利要求4或5所述的一种不等高度的三维立体饼图的绘制系统,其特征在于:所述的绘制模块在分割线左右两侧都按照从上到下的顺序进行绘制。
【文档编号】G06T19/00GK103578139SQ201210250126
【公开日】2014年2月12日 申请日期:2012年7月18日 优先权日:2012年7月18日
【发明者】李欣, 余兵, 郑佳栋, 蒋孝金, 程永辉 申请人:方正国际软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1