[发明专利]曲线生成方法及设备有效
申请号: | 201610692550.3 | 申请日: | 2016-08-18 |
公开(公告)号: | CN107767429B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 刘洋 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06T11/20 | 分类号: | G06T11/20 |
代理公司: | 上海百一领御专利代理事务所(普通合伙) 31243 | 代理人: | 陈贞健;周建华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 曲线 生成 方法 设备 | ||
本申请的目的是提供一种曲线生成方法及设备,本申请通过以所述两个数据点分别作为起点和终点,并根据所述两个控制点,生成所述两个数据点的贝塞尔曲线,因为以每相邻两个数据点之间确定两个控制点,所以生成的贝塞尔曲线为三次贝塞尔曲线,三次贝塞尔曲线比二次贝塞尔曲线更平滑,在数据点数据点稀少或分布不均匀的时候,也能生成平滑的曲线,不会出现尖锐的拐点,且曲线能够过所有给出的点,能够体现所有给出的数据点的真实趋势。
技术领域
本申请涉及计算机领域,尤其涉及一种曲线生成方法及设备。
背景技术
如图1所示,采用现有的方案在绘制前端趋势图的时候,如果给出的数据点分布不均匀,得到的对应的曲线图容易出现尖锐的拐点或者向不符合期望的方向弯曲。
如图2所示,现有的曲线表现方式有折线图、阶梯图、二次Bezier(贝塞尔)曲线和Cardinal曲线。而现有的二次贝塞尔曲线算法和Cardinal曲线算法是两种较经典的曲线算法。
折线图和阶梯图的缺点都是没有斜率,不能很好地表现给出的数据点的趋势和变化速度。
如图3所示,Bezier曲线算法是一种求极限的算法,在平面内任选三个不共线的点A、B、C,依次直线连接,在AB上任意取一个点D,然后BC上取点E,使得AD:AB=BE:BC,然后连接DE,在DE上再次找出相同比例的点F,使得DF:DE=AD:AB=BE:BC,这样就确定了一个贝塞尔曲线上一个点F,以此类推,极限下去就能找到如图2所示的贝塞尔曲线上的所有点,图2中的贝塞尔曲线是二次贝塞尔曲线,只有一个控制点B,DE是生成图2中的二次贝塞尔曲线的辅助线段,其端点不是控制点,控制点在二次贝塞尔曲线的切线AB、BC上,即B点。如图4所示,普通的二次贝塞尔曲线算法,以第一个给出的数据为起点,以最后一个给出的数据量为终点,以起点与终点之间给出的数据点为控制点,生成的二次贝塞尔曲线经过起点和终点,但不经过起点与终点之间的控制点,控制点影响生成的曲线的方向。二次贝塞尔曲线的优点是能够表达给出的数据点的变化趋势,且较美观,但其缺点是生成的曲线不能准确经过具体给出的数据点,无法表示准确的数据点
如图5所示,Cardinal曲线算法则是一种分型算法。如图6所示,利用cardinal曲线算法生成的曲线,能够表达给出的数据点的变化趋势,,且曲线经过给出的各个数据点。但其缺点是,临近的3个数据点,当前两个点的距离远小于第三个点的时候,曲线可能会向非整体趋势方向弯曲,出现不符合预期的尖锐的拐点。
本申请的一个目的是提供一种曲线生成方法及设备,解决生成的曲线图中出现尖锐的拐点及向不符合期望的方向弯曲的问题。
根据本申请的一个方面,提供了一种曲线生成方法,该方法包括:
在给出的数据点中,依次取相邻的两个数据点;
确定所述两个数据点之间的两个控制点;
以所述两个数据点分别作为起点和终点,并根据所述两个控制点,生成所述两个数据点之间的贝塞尔曲线。
进一步的,上述方法中,确定所述两个数据点之间的两个控制点,包括:
确定当前所述两个数据点的连线的中点为当前中点,及下一所述两个数据点的连线的中点为下一中点,其中,当前所述两个数据点中的第二个数据点,与下一所述两个数据点中的第一个数据点为同一点;
得到所述当前中点和下一中点的连接线段;
得到过当前所述两个数据点中的第二个数据点,且与所述连接线段平行的平行线段,以平行线段的两端点作为待选控制点;
从所述待选控制点选取当前所述两个数据点的控制点。
进一步的,上述方法中,从所述待选控制点选取当前所述两个数据点的控制点,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610692550.3/2.html,转载请声明来源钻瓜专利网。