S9 样条:为交互式 CAD 造一条更圆润的插值曲线
来源:gasiulis.name — 2026-11-05
📋 概述
作者认为手工拖贝塞尔控制点是历史遗留:人眼看不出多项式曲线曲率的细微变化,所谓「控制臂长度取弦长三分之一」这类经验法则,只是没有更好选择时的替代品。判断曲线美不美的可操作指标是曲率变化——把密切圆半径的倒数画成曲率剖面,剖面越平滑曲线越好看;而把多段曲线接起来时,既要每段自身平滑,又要在接点处连续,段数越多越难协调。S9 就是为这个目标做的第 9 次尝试,在接点处曲率连续(G2),段与段之间用基于 Cesàro 方程的非多项式曲线连接。
🔑 核心要点
- 设计目标写得很具体:容易形成圆形、最大曲率只出现在接点附近、拖动接点时过渡平滑、尽量减少多余拐点、每段最多一个拐点。
- 工作方式与 Hobby 样条同构:先解决「只给两端切角如何生成一条曲线」,再用全局求解器旋转各接点切角,直到相邻段曲率相等。
- 曲线本身以弧长为参数描述,两个权重为 1 时精确退化为欧拉螺线;权重趋近 0 时曲率趋于最大,实际上成为尖点。
- 作者对同类的评价不含糊:最好的已发表 G2 插值样条只用一段三次曲线连接两个接点,「很难用单个三次曲线做得更好」;κ-Curves 被 Adobe 用作「曲率」工具,但求解器存在需要特判的失败情形;Catmull-Rom 在任何严肃 CAD 里都没用。
- 仓库只给曲线求解器与样条求解器,不含直线到曲线的 G2 过渡、尖角与角度锁定,这些属于独立扩展。
💡 金句
人类无法手工画出好看的连续曲线序列。
👍 0
👎 0
← 返回 Lobsters 首页