卡斯特尔雅乌算法 - 实际示例
Casteljau's algorithm - practical example
我有一个大约有50个点(x,y)的数据集,我想画一条平滑的曲线,可以在这些点上尽可能靠近。
我听说过Casteljau的样条曲线算法,但在谷歌上搜索了几个小时后,我找不到一段可以使用的代码。
据我所知,要使用这种算法,我必须将数据集分成4点一组,对吧?12345678等等。据我所知,我唯一的问题是找到每组中间的点。我的意思是,如果我计算点1234的曲线,我已经有点1和4了,我需要计算2和3,对吧?但如何做到这一点对我来说是个谜。
我想问你们,你们是否知道C、C++或Objective-C中的一些代码,这些代码基于任意数量的数据集来计算曲线。
我需要的是:我向代码发送一个带有数据集的数组,然后收到一个带有要绘制的点的数组。
我的数学生疏了。所以,请给我一些实际的例子。不要把我送到数学理论和方程式的页面上。看着这些页面让我头疼
只要告诉我该怎么处理我必须计算bezier的点。
就像你问一个10岁的孩子一样回答…:D
谢谢。
在C#中怎么样?
private void drawCasteljau(List<point> points) {
Point tmp;
for (double t = 0; t <= 1; t += 0.001) {
tmp = getCasteljauPoint(points.Count-1, 0, t);
image.SetPixel(tmp.X, tmp.Y, color);
}
}
private Point getCasteljauPoint(int r, int i, double t) {
if(r == 0) return points[i];
Point p1 = getCasteljauPoint(r - 1, i, t);
Point p2 = getCasteljauPoint(r - 1, i + 1, t);
return new Point((int) ((1 - t) * p1.X + t * p2.X), (int) ((1 - t) * p1.Y + t * p2.Y));
}
从这里:
http://protein.ektf.hu/book/export/html/51
相关文章:
- 康斯特指针C++斯特劳斯特鲁普
- C++:根据斯特劳斯特鲁普的例子播种随机数
- C++:斯特劳斯特鲁普iterator_traits示例不编译?
- packaged_task示例问题?斯特劳斯特鲁普示例修改
- Static_cast 对于康斯特来说,会抛弃预选赛
- 输入 A,B 输出 [A,B] 中的所有阿姆斯特朗数 1 和 1<=A<=B<=10^7
- 东康斯泰克普/康斯蒂尼特/康斯特瓦尔在C++20 中允许吗?
- 康斯特正确性建议
- 什么是斯特伦省略?
- 从功能返回本地卡斯施说指针
- 从字符到康斯特* 字符的转换无效,代码有什么问题?
- C++ 斯特劳斯特鲁普的"std_lib_facilities.h"字符串结构 – 警告:无符号表达式的比较
- 程序中的错误,无法在用户给定的间隔之间查找阿姆斯特朗数
- T*上的部分排序...和康斯特·
- 斯特伦有副作用吗
- 梅森费尔托斯特种子作为成员变量
- 为什么当作为常量字符* 返回时会在此处创建临时字符串?[斯特劳斯特鲁普的书例]
- 如何使用埃拉托斯特内斯筛算法改进素数程序
- 卡斯特尔雅乌算法 - 实际示例
- 带有二维数组的戴克斯特拉算法