c – Casteljau算法 – 实例

前端之家收集整理的这篇文章主要介绍了c – Casteljau算法 – 实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个大约50点(x,y)的数据集,我想绘制一个平滑的曲线,尽可能靠近这些点.

我听说过Casteljau的样条算法,但是在谷歌搜索几个小时后,我无法找到我可以使用的一个代码.

据我所知,为了使用这个算法,我必须将数据集分成4个点,对吗? 1234 5678等.据我注意到,我唯一的问题是找到每个组中间的分数.我的意思是说,如果我正在计算一个点数为1234的曲线,我已经有了点1和4,我需要计算2和3,对吗?但是对我来说这是一个谜.

我想问你们,如果你知道C,C或Objective-C中的一些代码,可以使用任意数量的数据集来计算曲线.

我需要的是:我发送代码一个数组与数据集,我收到一个数组与点绘制.

我的数学生锈所以,请给我实际的例子.不要把我发给具有数学理论和方程的页面.看着这些页面让我的大脑受伤了

告诉我该怎么做,我必须计算bezier的点数.

回答,你会问一个10岁的孩子…:D

谢谢.

解决方法

C#中怎么样?
  1. private void drawCasteljau(List<point> points) {
  2. Point tmp;
  3. for (double t = 0; t <= 1; t += 0.001) {
  4. tmp = getCasteljauPoint(points.Count-1,t);
  5. image.SetPixel(tmp.X,tmp.Y,color);
  6. }
  7. }
  8.  
  9.  
  10. private Point getCasteljauPoint(int r,int i,double t) {
  11. if(r == 0) return points[i];
  12.  
  13. Point p1 = getCasteljauPoint(r - 1,i,t);
  14. Point p2 = getCasteljauPoint(r - 1,i + 1,t);
  15.  
  16. return new Point((int) ((1 - t) * p1.X + t * p2.X),(int) ((1 - t) * p1.Y + t * p2.Y));
  17. }

从这里:

http://protein.ektf.hu/book/export/html/51

猜你在找的C&C++相关文章