上一篇说的仿58同城loadingview的项目,中有一个利用贝塞尔曲线进行绘制圆的步骤,这个贝塞尔曲线理论挺复杂,特此单独说一下所知的和能用到的。
比如上一个loadingView的项目中,要用到Path.cubic()来使用贝塞尔曲线画一个圆,那么首先要了解的是
Path.cubic()方法的定义:

void cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)
Add a cubic bezier from the last point,approaching control points(x1,y1)and(x2,y2),and ending at (x3,y3)

什么意思呢,就是从我们的最后一个点出发以接近(x1,y1)(x2,y2)这两个点的方向走最后结束在(x3,y3)点。
什么叫接近呢?比如y = 1/x^3 这个函数的轨迹当x趋近于0时,轨迹无限趋近于Y轴值趋于无限大。

当曲线从0点出发以趋近1点的方向前进终结于4点时就会呈现这样一个轨迹。
所以当想以三次方程贝塞尔曲线绘制一个圆时,项目中的方法是绘制4个1/4圆,每次用三次贝塞尔绘制1/4圆需要四个点。
这张图中的(0,0)是我们的起始点(1,1)是终点 这两个点都是圆上的可以知道坐标,所以要算出(x1,0)(1,y1)这两个点的坐标。

这就是magicNumber的由来。

我们将这个圆的圆心与(x1,0)(0,0)连线,两条线的夹角为20°,由此可算出x1的坐标。同理y1,这个坐标值为magicNumber。
四个点坐标算出来就可以画圆了。

三次贝塞尔曲线画圆的方法。相关推荐

  1. android 贝塞尔曲线 画圆,如何用贝塞尔曲线创建圆?

    在comp.graphics.faq中涵盖 摘抄: 主题4.04:如何将贝塞尔曲线拟合到圆上? 有趣的是,贝塞尔曲线可以近似一个圆,但不能完美地拟合一个圆.一个常见的近似方法是使用四个贝塞尔曲线来建模 ...

  2. 【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)

    二次 贝塞尔曲线 和三次 贝塞尔曲线 使用说明 1. 二次 贝塞尔曲线 和三次 贝塞尔曲线 1.1 贝塞尔曲线的 基本知识 1.2 贝塞尔曲线 生成动图 1.3 HTML 中 画贝塞尔曲线的 2 种方 ...

  3. 使用二阶贝塞尔曲线画出两点之间的连线

    使用二阶贝塞尔曲线画出两点之间的连线 二阶贝塞尔曲线公式 控制点的位置 游戏中需要手动生成多个点来连接两个关卡,以达到更加可视化的目的. 最终效果如图: 二阶贝塞尔曲线公式 B(t) = (1-t)2 ...

  4. canvas笔记-二次贝塞尔曲线与三次贝塞尔曲线的用法

    此博文不研究其算法,只记录下其用法. 首先是二次贝塞尔曲线! 函数是这样的 quadraticCurveTo(cpx, cpy, x, y); 其中cpx为贝塞尔控制点x: 其中cpy为贝塞尔控制点y ...

  5. 书小宅之网页设计——二次贝塞尔曲线和三次贝塞尔曲线

    贝塞尔曲线起始点和终止点在曲线上,方向控制点不再曲线上.二次贝塞尔曲线有一个控制点,三次贝塞尔曲线有两个控制点. 二次贝塞尔曲线 定义和用法 quadraticCurveTo() 方法通过使用表示二次 ...

  6. html贝塞尔曲线在线,【HTML+js+纯前端】三次方贝塞尔曲线手工拟合小工具

    本帖最后由 南郊居士 于 2020-2-18 23:38 编辑 2020.2.18 重要修正: 1. 修正了当图样长宽不同时不能正确显示各控制点的问题. (一整天了都没人吐槽这个问题,看来这个工具还真 ...

  7. 自定义view走势图(三、贝塞尔曲线)

    在开发中,对于走势图和统计图,会有用平滑的曲线来进行展示的需求,我首先想到的就是贝塞尔曲线.那么贝塞尔曲线是啥呢,贴上两张图多看一会就明白了 图一     图二 上面图一是二阶贝塞尔曲线,图二是三阶贝 ...

  8. OpenGL实现可交互的三维三次贝塞尔曲线(实现鼠标控制)

    系列文章目录 前文:OpenGL实现可交互的三次多项式曲线(控制鼠标可拖拽)https://editor.csdn.net/md/?articleId=109129704 OpenGL实现可交互的三维 ...

  9. OpenGL Cubic Bezier三次贝塞尔曲线修补实例

    OpenGL Cubic Bezier三次贝塞尔曲线修补 先上图,再解答. 正常显示 按下C键 按下W键 按下X键 完整主要的源代码 源代码剖析 先上图,再解答. 正常显示 按下C键 按下W键

最新文章

  1. java最全人名数组_java 里有两个方法 第一个方法定义一个数组 每个数组都是一个学生类 每个学生有姓名 学号 年龄...
  2. java foreach 原理_一不小心就让Java开发者踩坑的failfast是个什么鬼?
  3. SQL语句技巧:查询时巧用OR实现逻辑判断
  4. 开题:在移动开发中使用JavaScript进行混合编程提高代码复用率
  5. android 自定义相册选择,Android通过手机拍照或从本地相册选取图片设置头像
  6. Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定
  7. Prompt-based Language Models:模版增强语言模型小结
  8. Taglist:Exuberant ctags.......
  9. 1048 行 MySQL指令(经典)
  10. cacti批量添加脚本
  11. 51 NOD 1407 and and and and !!
  12. mongodb:修改oplog.rs 的大小size
  13. h3c服务器系统丢失,某局点H3C FlexServer R390服务器阵列失败数据丢失的经验案例...
  14. 使用ipp静态库,ipp-samples在linux下的make过程
  15. win7-32位系统,不能运行flash,解决方法。
  16. Nim游戏入门+SG函数
  17. Arduino与Proteus仿真实例-继电器驱动仿真
  18. 《从0开始学微服务》模块一:入门微服务的学习笔记
  19. 彻底搞清Flink中的Window(Flink版本1.8)
  20. Part GeoAI----当ArcGIS遇上人工智能

热门文章

  1. 基于shibboleth的分布式认证之IDP配置
  2. 二改广告横幅在线制作源码 美化版
  3. linus开启snmp_Linux开通snmp
  4. 【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法
  5. 会计基础-会计要素+会计等式+会计要素计量属性
  6. 21日跟师兄谈话总结
  7. c语言程序设计第五版实验报告九,C语言程序设计实验报告-实验九.doc
  8. 计算机专业中综合性大学,论综合性大学计算机科学与技术师范专业的建设
  9. Postgresql源码(82)SPI模块拆解分析一:执行简单SQL获取结果
  10. MySQL最佳入门 - MySQL数据类型之存储带小数的类型