CN102903134B - 快速绘制多次曲线的方法 - Google Patents

快速绘制多次曲线的方法 Download PDF

Info

Publication number
CN102903134B
CN102903134B CN201210337471.2A CN201210337471A CN102903134B CN 102903134 B CN102903134 B CN 102903134B CN 201210337471 A CN201210337471 A CN 201210337471A CN 102903134 B CN102903134 B CN 102903134B
Authority
CN
China
Prior art keywords
curve
bezier
value
point
repeatedly
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.)
Active
Application number
CN201210337471.2A
Other languages
English (en)
Other versions
CN102903134A (zh
Inventor
郭大鸣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201210337471.2A priority Critical patent/CN102903134B/zh
Publication of CN102903134A publication Critical patent/CN102903134A/zh
Application granted granted Critical
Publication of CN102903134B publication Critical patent/CN102903134B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种快速绘制多次曲线的方法,涉及矢量图形图像的绘制领域,该方法为:按照曲线起点、中间点、终点的顺序,依次计算连接线的长度的倒数,作为待绘制曲线实际绘制点的间隔值的初值;根据间隔值选取t的值,依据多次曲线的公式依次获取曲线点的值;判断计算出来的坐标和前一个坐标是否相同,如果相同,将间隔值扩大1倍,如果不相同,则将本次坐标结果保存到曲线坐标列的末尾,然后继续计算、判断。本发明基于贝塞尔曲线算法的优化,通过控制递归循环次数和筛除相近点,来减少绘制的点数,以提高曲线的绘制速度,能够实现大数据量下多次曲线的快速绘制。

Description

快速绘制多次曲线的方法
技术领域
本发明涉及矢量图形图像的绘制领域,特别是涉及一种快速绘制多次曲线的方法。
背景技术
随着网络IP(InternetProtocol,网络之间互连的协议)化以及FMC(Fixed-MobileConvergence,固定网络与移动网络融合)的发展,运营商运维模式将发生深刻改变,从网络类型和网元类型分层管理逐步走向融合管理,同时对运维成本和用户体验有更高的要求,因此为了适应未来网络的发展,通信网络管理系统必须实现各种类型网元的统一管理,充分满足融合网络运维管理的需要。
统一管理面临的一个主要问题是管理容量。当管理的线缆设备较多且多以曲线表达时,如果用通用的图形库提供的曲线绘制方法,整个图形界面的反应非常的迟缓,为了解决界面绘制问题必须要提供优化的曲线显示方案,同时也要解决曲线两端的箭头和曲线上文字显示的问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种快速绘制多次曲线的方法,基于贝塞尔曲线算法的优化,通过控制递归循环次数和筛除相近点,来减少绘制的点数,以提高曲线的绘制速度,能够实现大数据量下多次曲线的快速绘制。
本发明提供的快速绘制多次曲线的方法,包括以下步骤:S1、按照曲线起点、中间点、终点的顺序,按照点的顺序计算出所有线段的长度和,并取得倒数,作为待绘制曲线实际绘制点的间隔值的初值;S2、多次贝塞尔曲线的公式为:
B ( t ) = Σ i = 0 n n i P i ( 1-t ) n - i t i = P 0 ( 1 - t ) n + n 1 P 1 ( 1 - t ) n - 1 t + · · · + P n t n , t ∈ [ 0,1 ]
,其中,Pi为控制点的坐标,包括起点和终点;i为控制点标识数,i为0时,Pi表示起点;n表示控制点的个数;t为绘制点变量,B(t)表示绘制点变量t取值下的多次贝塞尔曲线的绘制点;根据间隔值选取t的值,每选取一个t值,计算出一个对应的贝塞尔曲线绘制点,依据多次曲线的公式依次获取曲线点的值;S3、判断计算出来的坐标和前一个坐标是否相同,如果相同,则转到步骤S4,如果不相同,则转到步骤S5;S4、将间隔值扩大1倍,再返回步骤S2,继续计算、判断,直到t的值大于等于1;S5、将本次坐标结果保存到曲线坐标列的末尾,再返回步骤S2继续计算、判断,直到t的值大于等于1。
在上述技术方案中,步骤S2中通过贝塞尔曲线算法对所述多次贝塞尔曲线的公式的计算进行优化处理。
在上述技术方案中,所述多次贝塞尔曲线的公式中n为2时,P0为起点,P1为中间点,P2为终点,0、1、2三个数字对应到贝塞尔曲线公式的i值,二次贝塞尔曲线的绘制过程如下:确定P0至P1的连续点Q0,描述一条线性贝塞尔曲线;确定P1至P2的连续点Q1,描述一条线性贝塞尔曲线;确定Q0至Q1的连续点B(t),描述一条二次贝塞尔曲线。
在上述技术方案中,所述t的取值范围在0-1之间。
在上述技术方案中,步骤S2中还包括以下步骤:在贝塞尔曲线算法的计算过程中获取起点、中间点、终点切线的角度,经过一定调整后,用于后续快速确定曲线两端箭头的绘制角度和中间文字的显示位置和角度。
在上述技术方案中,步骤S2中还包括以下步骤:在循环计算曲线上每个点时,当t分别取值0、0.5、1时,对应的就是起点、中间点和终点,循环计算就将起点、中间点和终点处切线的角度,作为后续绘制箭头和文字的角度参数保存下来。
在上述技术方案中,对于文字的角度,如果传入的角度参数大于二分之π,减去二分之π,则文字总显示在曲线的上方。
在上述技术方案中,对于终点端的角度,将传入的角度参数减去π后作为显示的角度。
与现有技术相比,本发明的优点如下:
(1)本发明基于贝塞尔曲线算法的优化,通过控制递归循环次数和筛除相近点,来减少绘制的点数,以提高曲线的绘制速度,能够实现大数据量下多次曲线的快速绘制。
(2)本发明还在贝塞尔曲线算法的计算过程中获取起点、中间点、终点切线的角度,经过一定调整后用于快速绘制曲线两端箭头和中间文字,能够实现曲线两端箭头和线上文字的快速显示,特别适用于曲线数量较多但精度要求不高的领域。
附图说明
图1是本发明实施例中快速绘制多次曲线的方法的流程图。
图2是二次贝塞尔曲线的绘制示意图。
图3为本发明实施例的曲线显示的实际效果图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种快速绘制多次曲线的方法,包括以下步骤:在没有大幅影响绘制精度的情况下,选择性地计算曲线的实际绘制点,确定一个合理的初值后,根据计算结果动态调整实际绘制点的间隔值,可以减少绘制点的计算个数,因而提高绘制速度,具体过程如下:
S1、按照曲线起点、中间点、终点的顺序,按照点的顺序计算出所有线段的长度和,并取得倒数,作为待绘制曲线实际绘制点的间隔值的初值;
S2、多次贝塞尔曲线的公式为:
B ( t ) = Σ i = 0 n n i P i ( 1-t ) n - i t i = P 0 ( 1 - t ) n + n 1 P 1 ( 1 - t ) n - 1 t + · · · + P n t n , t ∈ [ 0,1 ]
其中,Pi为控制点的坐标(包括起点和终点),i为控制点标识数,i为0时,Pi表示起点;n表示控制点的个数,t为绘制点变量,t的取值区间为[0-1],B(t)表示绘制点变量t取值下的多次贝塞尔曲线的绘制点;根据间隔值选取t的值,每选取一个t值即可计算出一个对应的贝塞尔曲线绘制点,依据多次贝塞尔曲线的公式依次获取曲线点的值。
直接通过多次曲线的公式进行计算,对此贝塞尔曲线算法本身对公式计算有一次优化处理,下面进行具体分析说明。
参见图2所示,P0为起点,P1为中间点,P2为终点,0、1、2三个数字对应到贝塞尔曲线公式的i值,此时公式中n为2,图2中的点B为t=0.3时计算得到的曲线绘制点,该二次贝塞尔曲线的绘制过程如下:
(1)确定P0至P1的连续点Q0,描述一条线性贝塞尔曲线;
(2)确定P1至P2的连续点Q1,描述一条线性贝塞尔曲线;
(3)确定Q0至Q1的连续点B(t),描述一条二次贝塞尔曲线。
由多次曲线的公式可以看出,曲线B(t)的函数值是离散的,其结果(曲线上的点数)与t的取值个数有关。t的取值范围在0-1之间,在此区间内取值过少,那么曲线将失真,如果取值过多则计算量加大。为了平衡计算量和显示精度,数字0-1间的间隔值选取非常重要。
S3、判断计算出来的坐标和前一个坐标是否相同,如果相同,则转到步骤S4,如果不相同,则转到步骤S5。
S4、将间隔值扩大1倍,再返回步骤S2,继续计算、判断,直到t的值大于等于1。
如果坐标值相同则可以部分说明间隔取值过小需要增大,这样可以避免在整数坐标值范围内,产生过多的计算从而提高整个曲线的绘制效率。
S5、将本次坐标结果保存到曲线坐标列的末尾,再返回步骤S2继续计算、判断,直到t的值大于等于1。
在贝塞尔曲线算法的计算过程中获取起点、中间点、终点切线的角度,经过一定调整后,可以用于快速确定曲线两端箭头的绘制角度和中间文字的显示位置和角度。由多次曲线的可以看出,在计算得到最终曲线坐标的前一次2个坐标连接的直线就是该曲线坐标的切线。那么在循环计算曲线上每个点时,当t分别取值0、0.5、1时,对应的就是起点、中间点和终点,循环计算就将起点、中间点和终点处切线的角度,作为后续绘制箭头和文字的角度参数保存下来,这样可以避免3次重复的计算,提高绘制速度。
上述方法获得的角度可以提高终点和文字显示在曲线上的计算,只需要简单的判断即可达成要求。对于文字的角度,如果传入的角度参数大于二分之π,减去二分之π,则文字总显示在曲线的上方。对于终点端的角度,将传入的角度参数减去π后作为显示的角度。
参见图3所示,本发明实施例的曲线显示的实际效果图中,连接线都为多次曲线,曲线的两端可以由用户设置是否显示箭头,文字在曲线的中间位置显示,且文字方向和曲线中间位置的切线方向相同,所有的文字都显示在曲线的上方。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明包含这些改动和变型在内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (3)

1.一种快速绘制多次曲线的方法,其特征在于,包括以下步骤:
S1、按照曲线起点、中间点、终点的顺序,依次计算出相邻两点之间的线段长度,将所有线段的长度相加,得到所有线段的长度和,并取得倒数,作为待绘制曲线实际绘制点的间隔值的初值;
S2、多次贝塞尔曲线的公式为:
B ( t ) = Σ i = 0 n n i P i ( 1 - t ) n - i t - = P 0 ( 1 - t ) n + n 1 P 1 ( 1 - t ) n - 1 t + ... + P n t n , t ∈ [ 0 , 1 ]
,其中,Pi为控制点的坐标,包括起点和终点;i为控制点标识数,i为0时,Pi表示起点;n表示控制点的个数;t为绘制点变量,B(t)表示绘制点变量t取值下的多次贝塞尔曲线的绘制点;根据间隔值选取t的值,每选取一个t值,计算出一个对应的贝塞尔曲线绘制点,依据多次贝塞尔曲线的公式依次获取贝塞尔曲线绘制点;
步骤S2中还包括以下步骤:在贝塞尔曲线算法的计算过程中获取起点、中间点、终点切线的角度,作为传入的角度参数,经过一定调整后,用于后续快速确定曲线两端箭头的绘制角度和中间文字的显示位置和角度,文字的角度所需的角度参数与文字的显示位置对应;所述一定调整的含义为:对于文字的角度,如果传入的角度参数大于二分之π,减去二分之π,则文字总显示在曲线的上方;对于终点端的角度,将传入的角度参数减去π后作为显示的角度;
步骤S2中还包括以下步骤:在循环计算曲线上每个点时,当t分别取值0、0.5、1时,对应的就是起点、中间点和终点,循环计算就将起点、中间点和终点处切线的角度,作为后续绘制箭头和文字的角度参数保存下来;
S3、判断计算出来的坐标和前一个坐标是否相同,如果相同,则转到步骤S4,如果不相同,则转到步骤S5;
S4、将间隔值扩大1倍,再返回步骤S2,继续计算、判断,直到t的值大于等于1;
S5、将本次坐标结果保存到曲线坐标列的末尾,再返回步骤S2继续计算、判断,直到t的值大于等于1。
2.如权利要求1所述的快速绘制多次曲线的方法,其特征在于:步骤S2所述多次贝塞尔曲线的公式中n为2时,P0为起点,P1为中间点,P2为终点,0、1、2三个数字对应到贝塞尔曲线公式的i值,二次贝塞尔曲线的绘制过程如下:
确定P0至P1的连续点Q0,描述一条线性贝塞尔曲线;
确定P1至P2的连续点Q1,描述一条线性贝塞尔曲线;
确定Q0至Q1的连续点B(t),描述一条二次贝塞尔曲线。
3.如权利要求1所述的快速绘制多次曲线的方法,其特征在于:所述t的取值范围在0-1之间。
CN201210337471.2A 2012-09-13 2012-09-13 快速绘制多次曲线的方法 Active CN102903134B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210337471.2A CN102903134B (zh) 2012-09-13 2012-09-13 快速绘制多次曲线的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210337471.2A CN102903134B (zh) 2012-09-13 2012-09-13 快速绘制多次曲线的方法

Publications (2)

Publication Number Publication Date
CN102903134A CN102903134A (zh) 2013-01-30
CN102903134B true CN102903134B (zh) 2016-05-04

Family

ID=47575347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210337471.2A Active CN102903134B (zh) 2012-09-13 2012-09-13 快速绘制多次曲线的方法

Country Status (1)

Country Link
CN (1) CN102903134B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268909A (zh) * 2014-09-11 2015-01-07 清华大学 基于构造含参伯恩斯坦基函数调整贝塞尔曲线的方法
CN104820871B (zh) * 2015-04-30 2018-02-09 清华大学 Tps交易量预测与阈值范围预测的可视化方法与系统
CN105786427B (zh) * 2016-02-15 2019-01-01 深圳市东仪电子有限公司 一种将采集数据进行曲线转换显示的方法及装置
CN106875454A (zh) * 2016-07-20 2017-06-20 阿里巴巴集团控股有限公司 一种渐变色生成方法和装置
CN106991709B (zh) * 2017-03-27 2017-12-26 湖南新航动力信息科技有限公司 计算机绘图中的绘制箭头的方法、计算机设备及存储介质
CN107945243B (zh) * 2017-11-23 2021-04-27 杭州电魂网络科技股份有限公司 图像移动方法及装置
CN109741419B (zh) * 2018-11-20 2023-04-07 广州南方卫星导航仪器有限公司 一种道路中线的绘制方法、电子设备、存储介质及系统
CN109648557B (zh) * 2018-12-21 2021-11-02 上海信耀电子有限公司 一种六轴机器人空间运动规划方法
CN110232723B (zh) * 2019-06-10 2023-01-06 南京工程学院 一种基于穿越分析的曲线生成方法和装置
CN110851118B (zh) * 2019-10-21 2021-03-23 中国地质大学(武汉) 一种面向三维场景的矢量图标绘制方法及装置
CN111127590B (zh) * 2019-12-26 2023-06-20 新奥数能科技有限公司 一种二阶贝塞尔曲线绘制方法及装置
CN111460761B (zh) * 2020-03-20 2022-07-01 稿定(厦门)科技有限公司 文字变形方法、介质、设备及装置
CN111798537B (zh) * 2020-06-23 2023-11-14 南京工程学院 一种线框图标注曲线的快速构建方法和装置
CN113971707A (zh) * 2020-07-24 2022-01-25 深圳市万普拉斯科技有限公司 一种圆角曲线绘制方法、电子设备及存储介质
CN112667828B (zh) * 2020-12-31 2022-07-05 福建星网视易信息系统有限公司 一种音频可视化方法及终端

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0349182A2 (en) * 1988-06-29 1990-01-03 Fujitsu Limited Method and apparatus for approximating polygonal line to curve
JPH06150013A (ja) * 1992-11-11 1994-05-31 Tokyo Electric Co Ltd 楕円弧発生装置
CN1237739A (zh) * 1998-06-01 1999-12-08 松下电器产业株式会社 绘制三次曲线的方法和设备
JP2007206944A (ja) * 2006-02-01 2007-08-16 Sharp Corp ベジェ曲線生成回路
CN101916320A (zh) * 2010-09-03 2010-12-15 烽火通信科技股份有限公司 一种网络规划中网络拓扑对象及其关系的图形表示方法
US7868887B1 (en) * 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5106768B2 (ja) * 2005-09-29 2012-12-26 富士通株式会社 アウトラインフォント圧縮方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0349182A2 (en) * 1988-06-29 1990-01-03 Fujitsu Limited Method and apparatus for approximating polygonal line to curve
JPH06150013A (ja) * 1992-11-11 1994-05-31 Tokyo Electric Co Ltd 楕円弧発生装置
CN1237739A (zh) * 1998-06-01 1999-12-08 松下电器产业株式会社 绘制三次曲线的方法和设备
JP2007206944A (ja) * 2006-02-01 2007-08-16 Sharp Corp ベジェ曲線生成回路
US7868887B1 (en) * 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU
CN101916320A (zh) * 2010-09-03 2010-12-15 烽火通信科技股份有限公司 一种网络规划中网络拓扑对象及其关系的图形表示方法

Also Published As

Publication number Publication date
CN102903134A (zh) 2013-01-30

Similar Documents

Publication Publication Date Title
CN102903134B (zh) 快速绘制多次曲线的方法
US20210389149A1 (en) Method and device for drawing a three-dimensional road network map, apparatus and medium
CN109648560B (zh) 工业机器人的空间轨迹过渡方法、系统及机器人
CN107479792B (zh) 一种智能网格预报订正方法及系统
CN105719351B (zh) 一种显示电子地图的方法和装置
CN104392013B (zh) 基于cad的变电站工程电缆沟整合建模计算系统及方法
CN108062453B (zh) 水利信息化系统洪水高效模拟与高逼真可视化动态展示方法
CN105183405A (zh) 一种自定义模型表面镂空的3d打印方法
CN101281699A (zh) 地理要素实例符号化方法
CN103810756B (zh) 基于不规则区域的自适性的Loop细分曲面的绘制方法
CN104715508B (zh) 一种网格建模方法及装置
CN102637232B (zh) 铁路二线平面快速自动设计方法
CN102298787A (zh) 动画对象运动的控制方法及系统
CN103207923A (zh) 一种道路平面交叉口竖向设计的计算机辅助设计方法
CN110472267A (zh) 一种路口渠化仿真的方法及装置
CN110909408A (zh) 一种基于Revit+Dynamo的路缘石建模方法
Sokolov et al. Rational solutions for development of telecommunications networks
CN105224748B (zh) 一种变截面梁有限元模型的断面预处理方法
CN103064993A (zh) 尺寸号信息处理系统及方法
CN106780749B (zh) 基于约束Delaunay TIN插值算法的表面模型构建方法
CN112464351A (zh) 轨道线路处理方法、装置、处理设备及介质
CN106951166A (zh) 笔迹绘制方法及装置
CN109492086A (zh) 一种答案输出方法、装置、电子设备及存储介质
CN102663184A (zh) 基于正则化条件的代数b-样条曲线的光栅化方法
CN101477583A (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