我有一个大约50点(x,y)的数据集,我想绘制一个平滑的曲线,尽可能靠近这些点.
我听说过Casteljau的样条算法,但是在谷歌搜索几个小时后,我无法找到我可以使用的一个代码.
据我所知,为了使用这个算法,我必须将数据集分成4个点,对吗? 1234 5678等.据我注意到,我唯一的问题是找到每个组中间的分数.我的意思是说,如果我正在计算一个点数为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,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)); }
从这里: