Exemplo n.º 1
0
    public static void Main(string[] args)
    {
        // Create a cubic spline with 7 control points in 2D using
        // a clamped knot vector. This call is equivalent to:
        // BSpline spline = new BSpline(7, 2, 3, BSplineType.CLAMPED);
        BSpline spline = new BSpline(7);

        // Setup control points.
        IList <double> ctrlp = spline.ControlPoints;

        ctrlp[0]             = -1.75; // x0
        ctrlp[1]             = -1.0;  // y0
        ctrlp[2]             = -1.5;  // x1
        ctrlp[3]             = -0.5;  // y1
        ctrlp[4]             = -1.5;  // x2
        ctrlp[5]             = 0.0;   // y2
        ctrlp[6]             = -1.25; // x3
        ctrlp[7]             = 0.5;   // y3
        ctrlp[8]             = -0.75; // x4
        ctrlp[9]             = 0.75;  // y4
        ctrlp[10]            = 0.0;   // x5
        ctrlp[11]            = 0.5;   // y5
        ctrlp[12]            = 0.5;   // x6
        ctrlp[13]            = 0.0;   // y6
        spline.ControlPoints = ctrlp;

        // Evaluate `spline` at u = 0.4.
        IList <double> result = spline.Eval(0.4).Result;

        Console.WriteLine("x = {0}, y = {1}", result[0], result[1]);

        // Derive `spline` and subdivide it into a sequence of Bezier curves.
        BSpline beziers = spline.Derive().ToBeziers();

        // Evaluate `beziers` at u = 0.3.
        result = beziers.Eval(0.3).Result;
        Console.WriteLine("x = {0}, y = {1}", result[0], result[1]);
    }