c – Casteljau算法 – 实例

前端之家收集整理的这篇文章主要介绍了c – Casteljau算法 – 实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个大约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));
    }

从这里:

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

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