转载:贝塞尔曲线计算公式
原文地址: 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
转载:贝塞尔曲线计算公式相关推荐
- java实现的三阶贝塞尔曲线_n 阶贝塞尔曲线计算公式实现
n 阶贝塞尔曲线计算公式实现 关于贝塞尔曲线是什么,可以用来做什么,这里就不再介绍,如果你还不了解,可以先去看看下面这篇文章:贝塞尔曲线扫盲 1. 效果参考 2. 思路解析 百度百科上给出的一般参数公 ...
- n 阶贝塞尔曲线计算公式实现
n 阶贝塞尔曲线计算公式实现 关于贝塞尔曲线是什么,可以用来做什么,这里就不再介绍,如果你还不了解,可以先去看看下面这篇文章:贝塞尔曲线扫盲 1. 效果参考 2. 思路解析 百度百科上给出的一般参数公 ...
- 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 ...
- n 阶贝塞尔曲线计算公式——Ts实现
文章目录 1.什么是贝塞尔曲线 2.常见贝塞尔曲线 3.贝塞尔曲线通用公式 3.1.贝塞尔曲线通用公式 3.2.思路解析 3.3.实现方法 3.4.效果展示 3.5.Demo下载 4.结束语 1.什么 ...
- android 贝塞尔曲线_OpenGL 实践之贝塞尔曲线绘制
说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...
- 研究贝塞尔曲线, 定距等分 ...
https://en.wikipedia.org/wiki/Bézier_curve 贝塞尔曲线公式推导原理 https://www.cnblogs.com/equal/p/6414263.html ...
- 通俗易懂的贝塞尔曲线讲解(转载)
最近在看svg相关知识时,看到贝塞尔曲线,之前也知道有这个,但一直不知道它到底是个什么东西(大学好像学过,但已经还给老师了) 在网上找到一篇一看就懂的讲解 在Android开发和面试中(尤其是一些中高 ...
- 【转】贝塞尔曲线介绍
原文链接: http://blog.csdn.net/sangxiaonian/article/details/51984013 http://blog.csdn.net/sangxiaonian/a ...
- 贝塞尔曲线(Bezier)之爱心点赞曲线动画效果
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/ ...
最新文章
- Adnroid文件存储路径getFilesDir()与getExternalFilesDir的区别
- linux下打开配置文件命令_Linux下用户权限相关命令
- css入门教程 网页首字下沉,CSS制作首字下沉_CSS Inline Layout Module, initial-letter, CSS3 教程_w3cplus...
- 笔记-项目人力资源管理-管理项目团队-冲突管理
- docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像
- 谷歌浏览器安卓_冷知识!你知道安卓系统开始收费了吗?
- java 枚举获取key_「Java必修课」HashMap性能很好?问过我EnumMap没
- JSP的Listener介绍
- poj2406 Power Strings 模式匹配算法KMP变形
- 浅论照明节能的系统设计
- 计算机地图制图符号制作的心得,计算机地图制图实习报告.docx
- 如何解决CF安全数据上报异常 16-2
- mac android 模拟器 无法运行程序,MAC Android Studio模拟器启动不了
- Yuuki and a problem (树套树)
- 漫画 | 如何让程序员顺利入坑?
- 工业级4G路由器的应用特点
- 苹果手机直播显示服务器,搭建流媒体服务器(iOS直播 )
- 【Zotero】与坚果云配合使用同步失败解决方法
- Linux内核发布时间表
- Kafka生产者与消费者详解