寻找分段二次贝塞尔曲线上的控制点
我需要编写一个程序来生成并显示分段二次贝塞尔曲线,该曲线对每组数据点进行插值(我有一个包含数据点的 txt 文件)。曲线应具有连续的切线方向,每个数据点的切线方向是两个相邻弦方向的凸组合。
0.1 0,
0 0,
0 5,
0.25 5,
0.25 0,
5 0,
5 5,
10 5,
10 0,
9.5 0
以上是我拥有的数据点,有谁知道我可以使用什么公式来计算控制点?
I need to write a program to generate and display a piecewise quadratic Bezier curve that interpolates each set of data points (I have a txt file contains data points). The curve should have continuous tangent directions, the tangent direction at each data point being a convex combination of the two adjacent chord directions.
0.1 0,
0 0,
0 5,
0.25 5,
0.25 0,
5 0,
5 5,
10 5,
10 0,
9.5 0
The above are the data points I have, does anyone know what formula I can use to calculate control points?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您将需要使用三次贝塞尔曲线来很好地处理多个斜率变化,例如数据集中发生的情况。对于二次贝塞尔曲线,数据点之间只有一个控制点,因此每条曲线段大部分都位于连接线段的一侧。
很难解释,所以这里是数据(黑点)、二次控制点(红色)和曲线(蓝色)的快速草图。 (假装曲线是平滑的!)
查看 三次 Hermite 曲线作为通用解决方案。
You will need to go with a cubic Bezier to nicely handle multiple slope changes such as occurs in your data set. With quadratic Beziers there is only one control point between data points and so each curve segment much be all on one side of the connecting line segment.
Hard to explain, so here's a quick sketch of your data (black points) and quadratic control points (red) and the curve (blue). (Pretend the curve is smooth!)
Look into Cubic Hermite curves for a general solution.
从这里: http://blog.mackerron.com/2011/ 01/01/javascript-cubic-splines/
要生成如下所示的插值曲线:
您可以使用这个咖啡脚本类(它编译为 javascript)
From here: http://blog.mackerron.com/2011/01/01/javascript-cubic-splines/
To produce interpolated curves like these:
You can use this coffee-script class (which compiles to javascript)