绘制平滑的曲线

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我是根据前后点距离,乘以前后线段法向量的角平分线的垂线,如果点的距离非常均匀,这种曲线绘制出来的就发出优美。

相关推荐
时光足迹14 分钟前
Tiptap 简单编辑器模版
前端·javascript·react.js
JSLove28 分钟前
nginx入门
前端·nginx
时光足迹29 分钟前
ThreeJS之GUI控制器
前端·javascript·three.js
时光足迹30 分钟前
Tiptap编辑器
前端·javascript·react.js
时光足迹34 分钟前
电子书阅读器之笔记高亮(跨段处理)
前端·javascript·react.js
Dabei37 分钟前
Android 副屏(Virtual Display)创建与悬浮窗画中画显示实战
前端·架构
Hello-Mr.Wang1 小时前
【保姆级教程】MasterGo MCP + Cursor 一键实现 UI 设计稿还原
前端·javascript·vue.js·ai编程
Dabei1 小时前
Android 无障碍服务实现美团/微信自动化:客户端开发实践
前端·设计模式
华超磊1 小时前
关于手动实现滚动的尝试
前端