原文地址: https://zhuanlan.zhihu.com/p/33193050

用到贝塞尔曲线公式来计算出顶点,从而生成贝塞尔曲线。

/*** 生成四阶贝塞尔曲线定点数据* @param p0   起始点  { x : number, y : number, z : number }* @param p1   控制点1 { x : number, y : number, z : number }* @param p2   控制点2 { x : number, y : number, z : number }* @param p3   终止点  { x : number, y : number, z : number }* @param num  线条精度* @param tick 绘制系数* @returns {{points: Array, num: number}}*/
function create3DBezier(p0, p1, p2, p3, num, tick) {let pointMum = num || 100;let _tick = tick || 1.0;let t = _tick / (pointMum - 1);let points = [];for (let i = 0; i < pointMum; i++) {let point = getBezierNowPoint(p0, p1, p2, p3, i, t);points.push(point.x);points.push(point.y);points.push(point.z);}return points;
}/*** 四阶贝塞尔曲线公式* @param p0* @param p1* @param p2* @param p3* @param t* @returns {*}* @constructor*/
function Bezier(p0, p1, p2, p3, t) {let P0, P1, P2, P3;P0 = p0 * (Math.pow((1 - t), 3));P1 = 3 * p1 * t * (Math.pow((1 - t), 2));P2 = 3 * p2 * Math.pow(t, 2) * (1 - t);P3 = p3 * Math.pow(t, 3);return P0 + P1 + P2 + P3;
}/*** 获取四阶贝塞尔曲线中指定位置的点坐标* @param p0* @param p1* @param p2* @param p3* @param num* @param tick* @returns {{x, y, z}}*/
function getBezierNowPoint(p0, p1, p2, p3, num, tick) {return {x : Bezier(p0.x, p1.x, p2.x, p3.x, num * tick),y : Bezier(p0.y, p1.y, p2.y, p3.y, num * tick),z : Bezier(p0.z, p1.z, p2.z, p3.z, num * tick),}
}
如果我们只需要获取整条贝塞尔曲线上所有的顶点数据集,那么我们就需要调用create3DBezier()函数并填入指定参数即可。关于四阶贝塞尔曲线公式等数学知识请自行百度,本人也仅是照着公式将函数敲出来了→_→。// 传入顶点数据let bezierPoint = create3DBezier({ x : -0.7,  y : 0,   z : 0 },    // p0{ x : -0.25, y : 0.5, z : 0 },    // p1{ x : 0.25,  y : 0.5, z : 0 },    // p2{ x : 0.7,   y : 0,   z : 0 },    // p320,1.0);

  

转载于:https://www.cnblogs.com/yaohuimo/p/11186016.html

转载:贝塞尔曲线计算公式相关推荐

  1. java实现的三阶贝塞尔曲线_n 阶贝塞尔曲线计算公式实现

    n 阶贝塞尔曲线计算公式实现 关于贝塞尔曲线是什么,可以用来做什么,这里就不再介绍,如果你还不了解,可以先去看看下面这篇文章:贝塞尔曲线扫盲 1. 效果参考 2. 思路解析 百度百科上给出的一般参数公 ...

  2. n 阶贝塞尔曲线计算公式实现

    n 阶贝塞尔曲线计算公式实现 关于贝塞尔曲线是什么,可以用来做什么,这里就不再介绍,如果你还不了解,可以先去看看下面这篇文章:贝塞尔曲线扫盲 1. 效果参考 2. 思路解析 百度百科上给出的一般参数公 ...

  3. js-三阶贝塞尔曲线计算公式

    /*** 三阶贝塞尔曲线* B(t) = P0 * (1-t)^3 + 3 * P1 * t * (1-t)^2 + 3 * P2 * t^2 * (1-t) + P3 * t^3, t ∈ [0,1 ...

  4. n 阶贝塞尔曲线计算公式——Ts实现

    文章目录 1.什么是贝塞尔曲线 2.常见贝塞尔曲线 3.贝塞尔曲线通用公式 3.1.贝塞尔曲线通用公式 3.2.思路解析 3.3.实现方法 3.4.效果展示 3.5.Demo下载 4.结束语 1.什么 ...

  5. android 贝塞尔曲线_OpenGL 实践之贝塞尔曲线绘制

    说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...

  6. 研究贝塞尔曲线, 定距等分 ...

    https://en.wikipedia.org/wiki/Bézier_curve 贝塞尔曲线公式推导原理 https://www.cnblogs.com/equal/p/6414263.html ...

  7. 通俗易懂的贝塞尔曲线讲解(转载)

    最近在看svg相关知识时,看到贝塞尔曲线,之前也知道有这个,但一直不知道它到底是个什么东西(大学好像学过,但已经还给老师了) 在网上找到一篇一看就懂的讲解 在Android开发和面试中(尤其是一些中高 ...

  8. 【转】贝塞尔曲线介绍

    原文链接: http://blog.csdn.net/sangxiaonian/article/details/51984013 http://blog.csdn.net/sangxiaonian/a ...

  9. 贝塞尔曲线(Bezier)之爱心点赞曲线动画效果

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/ ...

最新文章

  1. Adnroid文件存储路径getFilesDir()与getExternalFilesDir的区别
  2. linux下打开配置文件命令_Linux下用户权限相关命令
  3. css入门教程 网页首字下沉,CSS制作首字下沉_CSS Inline Layout Module, initial-letter, CSS3 教程_w3cplus...
  4. 笔记-项目人力资源管理-管理项目团队-冲突管理
  5. docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像
  6. 谷歌浏览器安卓_冷知识!你知道安卓系统开始收费了吗?
  7. java 枚举获取key_「Java必修课」HashMap性能很好?问过我EnumMap没
  8. JSP的Listener介绍
  9. poj2406 Power Strings 模式匹配算法KMP变形
  10. 浅论照明节能的系统设计
  11. 计算机地图制图符号制作的心得,计算机地图制图实习报告.docx
  12. 如何解决CF安全数据上报异常 16-2
  13. mac android 模拟器 无法运行程序,MAC Android Studio模拟器启动不了
  14. Yuuki and a problem (树套树)
  15. 漫画 | 如何让程序员顺利入坑?
  16. 工业级4G路由器的应用特点
  17. 苹果手机直播显示服务器,搭建流媒体服务器(iOS直播 )
  18. 【Zotero】与坚果云配合使用同步失败解决方法
  19. Linux内核发布时间表
  20. Kafka生产者与消费者详解

热门文章

  1. 将任意字符串中的汉字提取出来的方法
  2. StringUtils.isEmpty用法
  3. resteasy 注解操作
  4. 防火墙Little Snitch的BUG导致Mac系统受到攻击
  5. READ-2318 FLAME Taming Backdoors in Federated Learning
  6. QTP脚本编写常用技巧
  7. ifndef 的使用方法
  8. Linux学习之路——常见指令详细总结(中)
  9. android图片浏览远近,机器视觉与图像处理技术的简单介绍
  10. 2019HDU多校第七场