发明名称 快速绘制多次曲线的方法
摘要 本发明公开了一种快速绘制多次曲线的方法,涉及矢量图形图像的绘制领域,该方法为:按照曲线起点、中间点、终点的顺序,依次计算连接线的长度的倒数,作为待绘制曲线实际绘制点的间隔值的初值;根据间隔值选取t的值,依据多次曲线的公式依次获取曲线点的值;判断计算出来的坐标和前一个坐标是否相同,如果相同,将间隔值扩大1倍,如果不相同,则将本次坐标结果保存到曲线坐标列的末尾,然后继续计算、判断。本发明基于贝塞尔曲线算法的优化,通过控制递归循环次数和筛除相近点,来减少绘制的点数,以提高曲线的绘制速度,能够实现大数据量下多次曲线的快速绘制。
申请公布号 CN102903134B 申请公布日期 2016.05.04
申请号 CN201210337471.2 申请日期 2012.09.13
申请人 烽火通信科技股份有限公司 发明人 郭大鸣
分类号 G06T11/20(2006.01)I 主分类号 G06T11/20(2006.01)I
代理机构 北京捷诚信通专利事务所(普通合伙) 11221 代理人 魏殿绅;庞炳良
主权项 一种快速绘制多次曲线的方法,其特征在于,包括以下步骤:S1、按照曲线起点、中间点、终点的顺序,依次计算出相邻两点之间的线段长度,将所有线段的长度相加,得到所有线段的长度和,并取得倒数,作为待绘制曲线实际绘制点的间隔值的初值;S2、多次贝塞尔曲线的公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>B</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mrow><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>n</mi></mtd></mtr><mtr><mtd><mi>i</mi></mtd></mtr></mtable></mfenced><msub><mi>P</mi><mi>i</mi></msub><msup><mrow><mo>(</mo><mrow><mn>1</mn><mo>-</mo><mi>t</mi></mrow><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mi>i</mi></mrow></msup><msup><mi>t</mi><mo>-</mo></msup></mrow><mo>=</mo><msub><mi>P</mi><mn>0</mn></msub><msup><mrow><mo>(</mo><mrow><mn>1</mn><mo>-</mo><mi>t</mi></mrow><mo>)</mo></mrow><mi>n</mi></msup><mo>+</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>n</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><msub><mi>P</mi><mn>1</mn></msub><msup><mrow><mo>(</mo><mrow><mn>1</mn><mo>-</mo><mi>t</mi></mrow><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mi>t</mi><mo>+</mo><mo>...</mo><mo>+</mo><msub><mi>P</mi><mi>n</mi></msub><msup><mi>t</mi><mi>n</mi></msup><mo>,</mo><mi>t</mi><mo>&Element;</mo><mrow><mo>&lsqb;</mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow><mo>&rsqb;</mo></mrow></mrow>]]></math><img file="FSB0000146362430000011.GIF" wi="1867" he="159" /></maths>,其中,P<sub>i</sub>为控制点的坐标,包括起点和终点;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。
地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号