CN103268389B - 一种基于插值算法的平滑曲线式超图可视化方法 - Google Patents
一种基于插值算法的平滑曲线式超图可视化方法 Download PDFInfo
- Publication number
- CN103268389B CN103268389B CN201310228921.9A CN201310228921A CN103268389B CN 103268389 B CN103268389 B CN 103268389B CN 201310228921 A CN201310228921 A CN 201310228921A CN 103268389 B CN103268389 B CN 103268389B
- Authority
- CN
- China
- Prior art keywords
- node
- hypergraph
- super limit
- curve
- super
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明涉及一种基于插值算法的平滑曲线式超图可视化方法,属于计算机应用领域,特别属于图形学与可视化领域。本发明将超图中的每一条超边所涉及的节点进行重新组合,将超边涉及的节点根据次序关系划分为三段式链表;使用Catmull-Rom插值算法进行控制点之间的曲线插值;使用色相环均分方法,对所获得的曲线进行着色;通过使用OpenGL中的GL_LINE_STRIP绘制模式,对所有的曲线插值点进行绘制。通过上述方法,解决了超图表达中超边的可视化效果不直观、描述不准确的问题,实现了超图的平滑曲线式可视化结果。
Description
技术领域
本发明涉及一种基于插值算法的平滑曲线式超图可视化方法,属于计算机应用领域,特别属于图形学与可视化领域。
背景技术
随着图理论在数据挖掘与知识发现领域越来越广泛的应用,基于超图理论的数据表示和数据挖掘方法的研究变得越来越重要。
超图是图的一种变化类型,能在一条边中表示多个节点之间的数据关系。超图是一种非线性结构,一个超图G可以定义为G=(V,E),其中V={V1,V2,…,Vn},是一个有穷非空的元素集合,称为节点集或顶点集;E={e1,e2,…,em},其中任意一个ei(1≤i≤m)都是V的非空子集的集合,称为超边,当超边中的节点无先后顺序时,称为无向边,当有顺序时,称为有向边。
在数学定义中,超图是图的一种派生形式,与普通图不同的是,超图中的一条超边可以同时和任意个数的顶点相连接。超图模型可以表达模式的复杂结构和关系,在空间数据挖掘中,基于超图模型的可视化方法可解决的问题包括:表征复杂数据的内在结构和关系;展示对象的属性和关系的发展变化趋势;观察模式的组成;在规模较大的数据集中进行对象属性值的查询。超图模型的优点是用图的逻辑结构来有效地组织和传递数据集的结构、关系和含义。
对于超图的可视化,目前来说主要有两类:一类是沿用普通有向图和无向图的可视化方法,该方法使用多条边前后连接,共同表示一条超边;第二类是使用一个连续的区域,将超边中的所有节点包围在该区域中,从而表示一条超边。
这两类超边表示方法,第一类对于超图中超边的表示并不直观,当超图中的多条超边存在交叉时,无法区分哪几条线段连成了一条超边;第二类方法对超边的表现直观性较好,但这种方法大部分需通过手工绘制获得。因此,目前来说,能使用计算机生成的可视化方法主要集中在第一类。
发明内容
本发明为解决超图表示中超边表示不直观、表达不清晰的问题,提出一种基于插值算法的平滑曲线式超图可视化方法。
本发明方法的原理是:将超图中每一条超边所包含的节点,进行重新组合,然后多次使用Catmull-Rom插值算法将这些节点使用一条连续平滑的曲线连接起来,并通过色相环的视觉原理,对曲线进行着色,增强超边的区分性。
本发明的一种基于插值算法的平滑曲线式超图可视化方法,具体实现步骤为:
步骤1:读入超图数据,将读入的超图数据分别存储为节点数据和超边数据,节点信息使用数组存储结构进行存储;超边信息使用链表存储结构进行存储。
步骤2:进行节点数量判断,判断标准为步骤1中所存储的超边中所含的节点数量,如节点数量大于等于3,则执行步骤3;如节点数量为2,则该条超边退化为普通边,直接以线段方式连接,使用直线段方式绘制该条超边;并跳至步骤6。
步骤3:将节点重新组合为首尾节点重复型链表
对于步骤2中节点数量大于等于3的超边,首先将超图中的每一条超边所涉及的节点,根据节点在超边中的先后次序,将超边中的节点划分为三类,分别称为首点、中间点、尾点,然后对首点和尾点进行位置信息重复,最终形成一种称为“首尾节点重复型链表”的结构。
在每一条超边所对应的首尾节点重复型链表中,首点和尾点的位置将重复,这种结构将更适合于Catmull-Rom曲线插值过程。
步骤4:超边曲线插值点计算
对步骤3中生成的首尾节点重复型链表,取链表中的前四个节点,将该四个节点的位置信息作为Catmull-Rom算法的插值控制点位置,对控制点之间的曲线实现插值,从而获取该段曲线的插值点。
一段曲线插值完毕后,删除一个前端节点,增加一个后端节点,继续下一段曲线的插值计算,直至链表中的所有节点计算完毕。
步骤5:连接步骤4计算完毕的所有插值点获得的整条连续平滑曲线,即为该超边的绘制曲线。
步骤6:对超边进行区分性着色,根据色相环对人类视觉的区分特性,通过色相环均分原理,根据超图中所包含的超边条数,对超边进行着色,以加强超图中各条曲线的区分度。
根据人眼对颜色的辨识,颜色可以表达为24种基本的色相,称为“二十四色相环”,二十四色相环所表达的24种颜色平均分布在一个圆的0至360度位置。
着色方法根据色相环上,相位差越大的两种颜色,在视觉上的区分度也越大的原理,根据色相环上相位角与视觉区分度的关系,均匀分配相位角选取颜色。
可视化过程中,根据超图中超边的条数,使用24色相环中的颜色和透明度标识,组合出多种颜色。
步骤7:使用图形库绘制超边,通过使用OpenGL中的GL_LINE_STRIP绘制模式,对所有的曲线插值点进行绘制。
最终可视化结果中,超图中每条超边都用一条平滑连续的曲线表示,该曲线穿过该超边中的所有节点,超边使用步骤6所设定的颜色,不同条超边具备不同的颜色加以区分。
步骤8:下一条超边的可视化
判断超图中的所有超边是否都已经可视化完毕,如还有未完成超边,返回步骤2。如全部可视化完毕,则算法结束。
最终可视化结果中,超图中每条超边都用一条平滑连续的曲线表示,该曲线穿过该超边中的所有节点;不同条超边使用不同的颜色加以区分。
有益效果
本发明解决了超图表达中超边的可视化效果不直观、描述不准确的问题,实现了超图的平滑曲线式可视化结果。
附图说明
图1为本发明的实现流程;
图2为本发明首尾节点重复型链表创建方法示意图;
图3为Catmull-Rom曲线插值算法的示意图;
图4为常见的超图可视化效果;
图5为本发明中的超图可视化算法。
具体实施方式
下面结合附图和实施例,对本发明作进一步的说明:
图1为本发明的实现流程,根据流程,步骤1读入超图数据,并将读入的超图数据分别存储为节点数据和超边数据。节点信息使用数组存储结构进行存储;超边信息,使用链表存储结构进行存储。在具体实施例中,读入11个节点,3条超边,其所涉及的节点数量依次为5、4、4。
根据步骤2,第1条超边所涉及的节点数量判断为5,根据步骤3,节点重新组合为首尾节点重复型链表,首尾节点重复型链表创建方法如图2所示,具体实施方式为:
a)首先是为该超边建立一个链表结构,该链表结构中的每一个节点实际上对应着曲线计算时的一个控制点,该控制点的最主要信息是坐标位置。
b)然后针对超边中的第一个节点,读取超边中节点的序号,根据该序号到超图数据存储结构的节点部分,获取节点的位置信息,存入该链表结构的一个节点中。
c)在链表上新建一个节点,再次读取第1个节点,与步骤b相同,将该节点对应的位置信息存入这个新建的节点中。此时,链表中的前两个节点,实质上所对应的位置相同,组成第一段链表。
d)针对超边中第2个至第4个节点(超边的节点数为5),为每个节点参照步骤b新建一个节点,并借鉴步骤b将节点对应的位置信息存入相对应的节点中。该部分第2个至第4个节点所对应的节点,位置各不相同,共同组成第二段链表。
e)将超边中的最后一个节点,即第5节点,新建一个节点,并将节点位置信息存入该节点中,并为该节点重新建立一个节点,存入其位置信息。链表中的最后两个节点,所对应的位置相同,组成第三段链表。
首尾节点重复型链表结构建立完毕,链表中共有7个节点,由于在该链表中,第一段,即1、2节点和第三段,即6、7节点,中的节点位置相同,而第二段,即3-5节点,中的位置内容不同,因此在本发明中称之为“首尾节点重复型链表”。
根据步骤4,超边曲线插值点计算的具体实施方式为:
将首尾节点重复型链表中,7个节点,执行如下步骤:
a)取链表中的前4个节点,将节点中的位置信息依次定义为P1、P2、P3、P4,将该四个位置点作为Catmull-Rom算法的控制点,进行插值运算;
b)依次将P2、P3、P4赋值给P1、P2、P3,然后从链表中取第5个节点,并将其位置信息赋值给P4,将该四个位置点作为Catmull-Rom算法的控制点,进行插值运算;Catmull-Rom算法实现的曲线插值,Catmull-Rom曲线插值算法的示意图如图3所示,其求解算法如下,
Catmull-Rom曲线是一条三次曲线,求解公式为:
在该公式中,P1为插值点,P1、P2、P3、P4分别为当前分段的四个控制点,t为插值变量,其取值范围为t∈[0,1],M是Catmull-Rom算法的参数矩阵,其具体设置方法如下,
通过结合上述两个公式可以得出:当t=0时P1=P2;而t=1时P1=P3;当t在0至1之间的某个值时,将获得一个插值点;插值计算过程中根据所需插值点数目i,使t依次为1/(i+1)、2/(i+1)、3/(i+1)、…i/(i+1)则可获得i个插值点。
c)依次执行步骤b,直至链表中的第7个节点被取出,并参与插值运算。算法结束。
至此,该条超边所对应的所有插值点计算完毕。
根据步骤5,连接所有插值点获得的整条连续平滑曲线,即为该超边的绘制曲线。Catmull-Rom算法求得的插值点所连成的曲线,只能平滑连接四个控制点内的P2P3两个控制点。本发明中的首尾节点重复型链表方法,通过将超边中的节点重新组合,能够使多段Catmull-Rom曲线连接所有超边节点。
根据步骤6,依据色相环原理进行超边区分性着色,具体实施方式为:
可视化过程中为根据超图中超边的数量,使用24色相环中的颜色和透明度标识,自动各条超边设置不同的颜色,颜色的设置方法下列公式所示,
其中,N为当前超图中所需可视化的超边的总条数,即所需进行标注的总颜色数;i为超边在超图数据中的索引数,k为“二十四色相环”中的基本颜色序号,表示所选颜色的RGB值取自于其对应的基本颜色,a为颜色的透明度Alpha值,即当超边数量>24时,每24条边循环一遍颜色,使用a透明度来表示颜色的不同。
通过这种方法计算出来的颜色值,能够保证使超图中的超边,颜色的视觉差别达到最大,从而使各超边的可视化结果具备最大的区分度。
根据步骤7:使用图形库绘制超边,通过使用OpenGL中的GL_LINE_STRIP绘制模式,对所有的曲线插值点进行绘制。
经过本发明中上述的可视化实施方式,对所有超边进行可视化计算。在实施例的可视化过程中,Catmull-Rom插值过程的插值点数设置为10,节点绘制大小设置为8像素,超边线宽设置为5像素,计算获得的三条超边颜色分别为(251,255,6)、(45,30,157)、(255,8,91)。
最终,可获得一张平滑曲线式的超图可视化效果,如图5所示。在附图4中给出了常见的超图可视化效果,图4中线段式表示方法对于超边的条数,以及每条超边包含的节点均有较大的歧义性,尤其是对于两条超边的交叉节点处超边的走向不明确。而在图5中的效果图中,可以明显看出,图中有三条超边,不同的超边具有不同的颜色,并且在交叉节点处同一超边的前后连线保持平滑过渡,而不同超边的前后连线不平滑。
Claims (2)
1.一种基于插值算法的平滑曲线式超图可视化方法,其特征在于包括如下步骤:
步骤1、读入超图数据,并将读入的超图数据分别存储为节点数据和超边数据,节点信息使用数组存储结构进行存储;超边信息使用链表存储结构进行存储;
步骤2、根据步骤1中所存储的超边中所含的节点数量作为判断标准判断节点数量,如节点数量大于等于3,则执行步骤3;如节点数量为2,则该条超边退化为普通边,直接以线段方式连接,使用直线段方式绘制该条超边,并跳至步骤6;
步骤3、节点重新组合为三段式链表,对于步骤2中节点数量大于等于3的超边,首先将超图中的每一条超边所涉及的节点,根据节点在超边中的先后次序,将超边中的节点划分为首点、中间点、尾点三类,然后对首点和尾点进行位置信息重复,最终形成一种称为“首尾节点重复型链表”的结构;
步骤4、进行超边曲线插值点计算,对步骤3中生成的首尾节点重复型链表,取链表中的前四个节点,将该四个节点的位置信息作为Catmull-Rom插值算法的插值控制点位置,对控制点之间的曲线实现插值,从而获取该段曲线的插值点;一段曲线插值完毕后,删除一个前端节点,增加一个后端节点,继续下一段曲线的插值计算,直至链表中的所有节点计算完毕;
步骤5、连接步骤4计算完毕的所有插值点获得的整条连续平滑曲线;
步骤6、根据色相环对人类视觉的区分特性,通过色相环均分原理,根据超图中所包含的超边条数,对超边进行着色,以加强超图中各条曲线的区分度;
步骤7、通过使用OpenGL中的GL_LINE_STRIP绘制模式,对所有的曲线插值点进行超边绘制;超边使用步骤6所设定的颜色,不同条超边具备不同的颜色加以区分;
步骤8、判断超图中的所有超边是否都已经可视化完毕,如还有未完成超边,返回步骤2,如全部可视化完毕,则算法结束。
2.如权利要求1所述的一种插值算法的平滑曲线式超图可视化方法,其特征在于:首尾节点重复型链表结构基于Catmull-Rom插值算法,一条超边对应一个首尾节点重复型链表结构,结构中的节点保存超边中节点的位置信息;根据超边中节点的先后顺序,进行重新组合,并可以确保链表中的节点排列可直接用于插值算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310228921.9A CN103268389B (zh) | 2013-06-09 | 2013-06-09 | 一种基于插值算法的平滑曲线式超图可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310228921.9A CN103268389B (zh) | 2013-06-09 | 2013-06-09 | 一种基于插值算法的平滑曲线式超图可视化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103268389A CN103268389A (zh) | 2013-08-28 |
CN103268389B true CN103268389B (zh) | 2015-12-09 |
Family
ID=49012017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310228921.9A Expired - Fee Related CN103268389B (zh) | 2013-06-09 | 2013-06-09 | 一种基于插值算法的平滑曲线式超图可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268389B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104267880A (zh) * | 2014-10-24 | 2015-01-07 | 福建星网视易信息系统有限公司 | 一种3d界面显示手写轨迹的方法及设备 |
CN105354223B (zh) * | 2015-10-05 | 2018-05-04 | 北京工商大学 | 一种针对非连续层次数据的可视化方法和应用 |
CN105512218B (zh) * | 2015-11-30 | 2018-11-23 | 北京工商大学 | 一种关联层次数据的可视化方法和应用 |
CN107798712B (zh) * | 2017-11-16 | 2021-01-12 | 中国科学院海洋研究所 | 一种面向idl极地向量场可视化的算法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346915A (zh) * | 2011-09-20 | 2012-02-08 | 东北电网有限公司 | 电压等高曲面图形快速生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG93211A1 (en) * | 1999-07-28 | 2002-12-17 | Univ Singapore | Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications |
-
2013
- 2013-06-09 CN CN201310228921.9A patent/CN103268389B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346915A (zh) * | 2011-09-20 | 2012-02-08 | 东北电网有限公司 | 电压等高曲面图形快速生成方法 |
Non-Patent Citations (2)
Title |
---|
"一种渐进式平滑轨迹线标绘方法";陈红倩等;《系统仿真学报》;20120229;第24卷(第2期);第357-360页 * |
"基于平行坐标的多视图协同可视分析方法";陈谊等;《系统仿真学报》;20130131;第25卷(第1期);第81-86页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103268389A (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103268389B (zh) | 一种基于插值算法的平滑曲线式超图可视化方法 | |
CA2594080C (en) | Computer-implemented process for creating a parametric surface | |
US7586490B2 (en) | Systems and methods for three-dimensional sketching | |
CN102903134B (zh) | 快速绘制多次曲线的方法 | |
CN105488130A (zh) | 一种关联数据可视化展示方法 | |
CN112270406B (zh) | 一种类脑计算机操作系统的神经信息可视化方法 | |
CN103714577B (zh) | 一种适用于带纹理模型的三维模型简化方法 | |
CN103714110B (zh) | 用于创建运行时颜色转换查找表的方法和系统 | |
CN103258061B (zh) | 一种基于插值算法的区域包围式超图可视化方法 | |
CN111951399B (zh) | 一种増减材制造中基于体素曲面距离场的轨迹规划方法 | |
US7646386B2 (en) | Modifying a path in a drawing | |
CN109523318A (zh) | 跨界电子商务数据可视化建模分析平台 | |
CN115563667A (zh) | 一种基于Rhino及Grasshopper的景观地面节点参数化建模方法 | |
CN104616356B (zh) | 一种小班边界三维可视化编辑方法 | |
CN105676290A (zh) | 基于曲面细分的地震数据三维显示方法 | |
CN105844609A (zh) | 对图像进行划分 | |
CN108171781A (zh) | 一种基于图标的三维多变量矢量场数据可视化方法 | |
CN106294968B (zh) | 基于工程语义交互式的轮胎花纹3d设计系统及其方法 | |
CN107788600A (zh) | 一种二维数字化服装款式图设计系统 | |
CN109359224B (zh) | 一种材质的数据处理方法、装置、电子设备及存储介质 | |
CN108510579B (zh) | 一种工业复杂裁剪曲面的渲染显示方法 | |
Etemad et al. | Node-ring graph visualization clears edge congestion | |
Jensen et al. | Practical curves and surfaces for a geometric modeler | |
Burch et al. | Partial link drawings for nodes, links, and regions of interest | |
CN101964011A (zh) | 一种基于动态规划的离散可展曲面的设计方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151209 Termination date: 20190609 |
|
CF01 | Termination of patent right due to non-payment of annual fee |