设计与产品jasondavies.com
贝塞尔曲线动画演示
Animated Bézier Curves
2011 — 2017,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这个页面用动画逐步演示贝塞尔曲线的构造过程:从控制点之间的连线开始,按参数不断插值,最终得到曲线上的点。它把原本抽象的数学/图形学概念变成可以直接观察的几何过程。
为什么经久不衰:它用极直观的动画揭示贝塞尔曲线背后的递归插值本质,无论初学者还是图形开发者都能从中获得清晰理解,因此多年后仍值得读。
HN 评论精选
推荐一个更深入、可交互的贝塞尔曲线数学资料。
还有一个关于贝塞尔曲线的页面非常有意思,深入讲到了所需的数学,比如求交点、曲线长度、分割曲线等。它不是动画而是可交互的,可以拖动控制点。http://processingjs.nihongoresources.com/bezierinfo/
febeling查看英文原文
There is another very interesting page on bezier curves which goes all the way into the maths you need, i.e. finding intersections, length of a curve, splitting a curve, etc. It's not animated but interactive, so drag the control points. http://processingjs.nihongoresources.com/bezierinfo/
用递归 Haskell 代码展示算法本质,并指出其指数复杂度。
动画里的简单解释可以自然地引出一个简洁的 Haskell 实现。假设已有参数化直线函数 line p q t,在 t∈[0,1] 上对两点 p、q 插值,就可以对控制点列表递归实现贝塞尔曲线;不过点数多时复杂度是指数级。
kilovoltaire查看英文原文
The same simple explanation in the animation leads to a nice simple Haskell implementation. Assuming you already have a parametric line function `line p q t` that interpolates between two points p and q on t in [0,1], you can recursively implement parametric Bézier on a list of control points as: bezier [p] t = p bezier ps t = line (bezier (init ps) t) (bezier (tail ps) t) t It's exponential in the number of points though ;) (Full source at https://github.com/hrldcpr/Bezier.hs/blob/master/Bezier.hs)
游戏开发中可用端点与终点速度反推曲线。
作为 2D 游戏开发者,我很喜欢贝塞尔曲线,用途很多。我最喜欢的一点是:只要知道希望物体沿曲线到达终点时的速度,就能仅凭端点和速度算出这条曲线。
tomjen3查看英文原文
As a (2D) game developer I love bezier curves. So many uses. My favorite may be that you can calculate the curve from just the end points if you know the velocity you want the object moving along the curve to have at the end.
提醒用曲线插值/拟合数据时要注意隐含的平滑假设。
很有启发性!我经常看到贝塞尔曲线(样条)被用来插值“缺失”的数据,用于可视化,也用于分析曲线拟合,并且总担心其中隐含了假设,比如自然界默认就是平滑的吗?如果有讨论这种情况的参考资料,我很想被指路。
theophrastus查看英文原文
Very instructive! I've often seen where Bézier curves ("splines") are used to interpolate 'missing' data (for visualization, but also for analytical curve fitting) and always worry that hidden assumptions are thereby in place, (for instance: is nature, by default, 'smooth'?). If there was a reference discussing this situation, I'd love to be directed to it.
历次讨论
同类还值得读
贝塞尔曲线入门
A Primer on Bézier Curves
Pomax 编写的贝塞尔曲线在线教程,从基础概念一路讲到曲线求交、投影、曲率等进阶内容,并配有可交互的示例和配套的 bezier.js 库。
设计与产品上首页 7 次 · 2014–2022pomax.github.io编辑精选WebGL 水面模拟
WebGL Water
Evan Wallace 制作的 WebGL Water 演示:在浏览器里实时渲染一片水面,展示折射、反射和焦散等 GPU 图形效果。
设计与产品上首页 6 次 · 2011–2025madebyevan.com设计建议:永远不要使用黑色
Design Tip: Never Use Black
设计随笔提出“永远不要用纯黑”的建议,主张在界面和绘画中改用深灰或带色相的暗色,并借阴影与色彩关系来论证。
设计与产品上首页 5 次 · 2012–2021ianstormtaylor.com用于思考不可想象之物的媒介
Media for Thinking the Unthinkable
Bret Victor 的这个页面围绕《Media for Thinking the Unthinkable》展开,探讨我们用来思考和表达复杂问题的媒介,以及以文字/符号为主的传…
设计与产品上首页 5 次 · 2013–2020worrydream.com编辑精选页面重量很重要
Page Weight Matters
博文讲 YouTube 工程师 Chris Zacharias 的一次页面瘦身实验:团队做了一个更轻量的页面版本,起初从整体平均加载时间看反而更慢;按地理区域分层后才发现,轻量版…
设计与产品上首页 4 次 · 2012–2022blog.chriszacharias.com