Exemplo n.º 1
0
        public wCurve ToPiecewiseBezier(Curve RhinoCurve, double DistanceTol, double KinkTol)
        {
            NurbsCurve N = RhinoCurve.ToNurbsCurve();

            N.MakePiecewiseBezier(true);
            BezierCurve[] B = BezierCurve.CreateCubicBeziers(N, DistanceTol, KinkTol);

            Point3d PtA = B[0].GetControlVertex3d(0);
            Point3d PtB = B[0].GetControlVertex3d(1);
            Point3d PtC = B[0].GetControlVertex3d(2);
            Point3d PtD = B[0].GetControlVertex3d(3);

            wBezierSpline pCurve = new wBezierSpline(new wPoint(PtA.X, PtA.Y, PtA.Z), new wPoint(PtB.X, PtB.Y, PtB.Z), new wPoint(PtC.X, PtC.Y, PtC.Z), new wPoint(PtD.X, PtD.Y, PtD.Z));

            for (int i = 1; i < B.Count(); i++)
            {
                PtA = B[i].GetControlVertex3d(0);
                PtB = B[i].GetControlVertex3d(1);
                PtC = B[i].GetControlVertex3d(2);
                PtD = B[i].GetControlVertex3d(3);
                pCurve.AddSpan(new wPoint(PtA.X, PtA.Y, PtA.Z), new wPoint(PtB.X, PtB.Y, PtB.Z), new wPoint(PtC.X, PtC.Y, PtC.Z), new wPoint(PtD.X, PtD.Y, PtD.Z));
            }
            WindCurve = pCurve;

            return(WindCurve);
        }