本发明专利技术涉及一种不等高度的三维立体饼图的绘制方法及系统,属于计算机图像处理技术领域。本发明专利技术所述方法包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;(3)找到所有绘制角度范围跨越90度以及270度的饼对象,用一条垂直分割线将其在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割;(4)重新调整各个饼对象的绘制顺序并进行绘制。采用本发明专利技术所述的方法和系统可以方便地实现不等高度的立体三维饼图的正确绘制,包括处理各个饼之间的压盖关系。
【技术实现步骤摘要】
一种不等高度的三维立体饼图的绘制方法及系统
本专利技术属于计算机图像处理
,具体涉及一种不等高度的三维立体饼图的绘制方法及系统。
技术介绍
通过计算机进行饼图绘制是很多GIS(地理信息系统,GeographicInformationSystem)软件及图表绘制软件中的常用功能。目前大部分GIS及图表系统通常提供简单饼图、立体饼图的绘制功能,其通常以角度表示各专题分量的比例关系,如图1所示。无论是简单饼图还是立体饼图,其只能展现一个统计分量,例如每一个地区的钢产量之间的比例关系。而当存在第二个统计分量需要在饼图中展现时,传统的饼图形式无法将其同时展现出来。此时,我们可以对饼图中每一部分的采用不同的半径或不同的高度进行展现,这样,就可以在一个饼图中表现更多的统计分量。如图2所示,图2显示了一个不等高度的复杂三维饼图,其可以表现两个统计分量的占比情况。目前提供这种不等高度的复杂三维饼图绘制功能的软件比较少,并且其基于二维绘制API(如WindowsGDI,GDI+等)绘制过程也非常复杂,不但需要绘制每一个饼的立体效果,还要考虑到各个饼之间的压盖关系,确定各个饼的绘制先后顺序,并设置正确的绘制裁剪区域。在现有的饼图绘制技术中,已经实现了简单饼图(平面饼图)以及普通立体饼图的绘制,各种常见的GIS软件及图表绘制软件基本都提供了相关的功能。目前大部分软件主要基于二维绘制接口(如Windows平台的GDI,GDI+等)实现对饼图的绘制,其重点是利用绘制API提供的裁剪区功能,在每一个饼对象绘制完成后,修改当前裁剪区。以普通立体饼图的绘制过程为例,其通常分为以下几个步骤:1.获取各统计分量的数值2.计算各饼应占的角度范围3.绘制每一个饼对象,绘制完成后,根据该饼对象的角度跨度,确定该饼对象不可覆盖的屏幕区域,并相应修改绘制裁剪区,以便下一个饼对象绘制的时候不会覆盖此区域。在确定裁剪区域时,考虑的主要有饼对象的顶面、外圆侧面、内径侧面。由于各个饼对象的高度一致,因此饼的顶面不存在覆盖的情况,仅需处理外圆侧面及内径侧面的覆盖情况,每一个饼对象绘制时主要考虑其内径侧面是否需要加入到绘制裁剪区即可,处理比较简单。现有的普通三维立体饼图的绘制方法适用于各个饼对象等高度的情况,此时很容易决定每一个饼对象不可覆盖的屏幕区域,从而正确设置裁剪区。而当每一个饼高度不等时,此时饼的顶面可能被其它饼对象的顶面或侧面遮盖,而由于每一个饼对象的侧面存在部分遮盖的情况,此时裁剪区的计算非常复杂。以图3为例:当“1”先绘制时,如果不设置裁剪区,则“2”绘制时会遮盖“1”所在区域,但如果将“1”的内径侧面加入裁剪区,则“4”绘制时又无法覆盖“1”的底部区域。此时要正确计算“1”绘制后应扣除的裁剪区域相当困难,因为“3”对象如果角度增大到一定程度后,其同样会覆盖“1”的侧面区域,如图4所示。此时要正确绘制三维立体饼图,必须在三维空间中计算对象“1”的不规则裁剪区,而这一过程对于大部分传统的基于二维绘制接口的程序过于复杂而难以实现。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的是提供一种简便易行的不等高度的三维立体饼图的绘制方法及系统。该方法和系统不必进行三维空间下的裁剪区复杂计算,即可实现任意不等高度立体饼图的正确绘制。为达到以上目的,本专利技术采用的技术方案是:一种不等高度的三维立体饼图的绘制方法,包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;(3)找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;(4)重新调整各个饼对象的绘制顺序并进行绘制。进一步,步骤(3)中,所述的设定角度为90度以及270度,用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。进一步,步骤(4)中,重新调整各个饼对象的绘制顺序并进行绘制的方法如下:在垂直分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,在绘制的时候无需调整裁剪区。一种不等高度的三维立体饼图的绘制系统,包括以下装置:。各统计分量获取模块,用于获取各统计分量的数值,以便确定各饼对象的绘制角度;计算模块,用于依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;分割模块,用于找到所有绘制角度范围跨越设定角度的饼对象,用一条垂直分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;绘制模块,用于重新调整各个饼对象的绘制顺序并进行绘制。进一步,所述的设定角度为90度以及270度,分割模块用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。进一步,所述的绘制模块在分割线左右两侧都按照从上到下的顺序进行绘制。本专利技术的效果在于:采用本专利技术所述的方法及系统,大大简化了不等高度三维立体饼图的绘制方法,解决了其绘制过程中对各种高度、角度的饼对象之间相互压盖导致的裁剪区计算的复杂性。对于目前各种基于二维绘制API技术开发的GIS、图表制作软件绘制这种复杂饼图具有很大帮助。附图说明图1是二维饼图示例;图2是三维立体饼图示例一;图3是三维立体饼图示例二;图4是三维立体饼图示例三;图5是本专利技术所述一种不等高度的三维立体饼图的绘制方法的原理图;图6是本专利技术所述方法一种具体实施方式的流程图;图7是本专利技术所述系统的结构图。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步描述。本专利技术基于二维绘制API,针对这种不等高度的复杂三维饼图的绘制给出了一种非常简单的方法,基于此方法可以方便地实现不等高度的立体三维饼图的正确绘制,包括处理各个饼之间的压盖关系。通过对不等高度三维立体饼图中各饼的覆盖关系进行深入研究,发现如果仅依靠裁剪区实现绘制功能过于复杂,必须对每一个饼的绘制顺序进行调整,如此可简化裁剪区计算的复杂性。但是每一个饼对象其在四个象限分布的情况是任意的,一个饼对象可能跨越一个、两个甚至三个象限,加上其高度的任意变化影响遮盖关系,因此要确定饼的正确绘制顺序同样非常复杂。再进一步分析,确定饼对象的绘制顺序主要困难在于其跨越象限的问题,而关键的跨越象限影响,出现在从第一到第二象限以及从第三象限到第四象限。经过研究,本专利技术提出了不等高度的三维立体饼图简要绘制方法,其关键思想如图5所示。1.利用一条垂直线,将跨越一、二象限以及跨越三、四象限的饼对象分割为两半,经过此分割后,每一个饼对象的绘制顺序判断大大简化;2.在垂直分割基础上,调整饼对象的绘制顺序,从而大大简化绘制裁剪区的计算复杂性。如图6所示,一种不等高度的三维立体饼图的绘制方法,包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度,见步骤S1;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度,见步骤S2;(3)找到所有绘制角度范围跨越90度以及270度的饼本文档来自技高网...
【技术保护点】
一种不等高度的三维立体饼图的绘制方法,包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;(3)找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;(4)重新调整各个饼对象的绘制顺序并进行绘制。
【技术特征摘要】
1.一种不等高度的三维立体饼图的绘制方法,包括以下步骤:(1)获取各统计分量的数值,以便确定各饼对象的绘制角度;(2)依据第一步的计算结果,计算每一个饼对象的绘制起始角度、终止角度及高度;(3)找到所有绘制角度范围跨越设定角度的饼对象,用一条分割线将其在该角度处分割为两个饼对象,如果一个饼对象正好结束或者起始于该角度,则该对象不必分割;(4)重新调整各个饼对象的绘制顺序并进行绘制;其中步骤(3)中,所述的设定角度为90度以及270度,用一条垂直分割线将绘制角度范围跨越90度和270度的饼对象在90度和270度处分割为两个饼对象,如果一个饼对象正好结束或者起始于90度或270度,则该对象不必分割。2.如权利要求1所述的一种不等高度的三维立体饼图的绘制方法,其特征是,步骤(4)中,重新调整各个饼对象的绘制顺序并进行绘制的方法如下:在分割线左右两侧都按照从上到下的顺序进行绘制,按照此绘制顺序,...
【专利技术属性】
技术研发人员:李欣,余兵,郑佳栋,蒋孝金,程永辉,
申请(专利权)人:方正国际软件北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。