绘制平滑的曲线

CatmulRoom

js 复制代码
function clacCatmulRoom(t: number, p0: number, p1: number, p2: number, p3: number) {
  return 0.5 *
    (
      (2 * p1) +
      (p2 - p0) * t +
      (2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t +
      (3 * p1 - p0 - 3 * p2 + p3) * t * t * t
    );
}

遇到的问题,在一条长直线之后,拐弯的地方很不自然

黑色的是用户输入点,红绿点是细分后的点,感觉应该是这个曲线函数的一个缺陷。

hermite 埃尔米特曲线

在线查看

这个曲线也有缺点,点1点2前后的点,如果距离非常远,就会导致点1和点2之间的驼峰

这个主要是控制点v0、v1没有控制好,但是这个v0、v1我是根据前后点距离,乘以前后线段法向量的角平分线的垂线,如果点的距离非常均匀,这种曲线绘制出来的就发出优美。

相关推荐
颜酱2 小时前
用填充表格法吃透01背包及其变形-1
前端·后端·算法
Bigger2 小时前
构建 “按版本触发、自动发布、自动回写” 的前端组件发布流水线
前端·ci/cd·npm
HarrySunCn2 小时前
vite.config.js 代理配置
前端·前端框架
JY.yuyu2 小时前
Windows Server用户,组管理和远程连接
java·服务器·前端
天蓝色的鱼鱼2 小时前
让 JSON 数据可视化:两款 Vue 组件实战解析
前端·vue.js
be or not to be2 小时前
前端布局与常见技术总结
前端·css·笔记
Han.miracle2 小时前
JavaScript WebAPI 核心操作指南
前端·javascript·html
泰勒疯狂展开2 小时前
Vue3研学-computed计算属性
前端·javascript·vue.js
CaptainDrake2 小时前
whistle 抓包工具与实践(mock、图片权限处理)
前端
天天向上10242 小时前
在 Element Plus 中实现开始日期小于结束日期的验证
前端·javascript·vue.js