コード例 #1
0
        public override void Finish()
        {
            base.Finish();
            PointF[] p = form.mouseline;

            if (p.Length < 10)
            {
                return;
            }

            double[] X = new double[p.Length];
            double[] Y = new double[p.Length];

            for (int n = 0; n < p.Length; n++)
            {
                X[n] = p[n].X;
                Y[n] = p[n].Y;
            }


            CurveLine curve;

            switch (pref.Curve)
            {
            case Preferences.CurveType.SecondOrderCurve:
            {
                curve = new SecondOrderCurve();
                break;
            }

            case Preferences.CurveType.Circle:
            {
                curve = new Circle();
                break;
            }

            default:
            {
                curve = null;
                break;
            }
            }
            curve.LQR(X, Y);

            if ((pref.WeightFunctionCalculate) & (curve is Circle))
            {
                ((Circle)curve).InitWeightFunc(pref.RadiusesDifference);
            }

            ((Mesh2DContainer)data).CutLine(curve);
            PolyLineGroup2D polyline = ((Mesh2DContainer)data).GroupCutLine();

            polyline.Coloring();
            List <Edge2D> edgeSelected = polyline.Closest(X, Y);

            ((Mesh2DContainer)data).FilterCut(edgeSelected.ToArray());

            form.PlotCutLine();
        }
コード例 #2
0
        public PolyLineGroup2D GroupCutLine()
        {
            PolyLineGroup2D polyline = new PolyLineGroup2D();

            foreach (var p in cutParam.Values)
            {
                if (p.Cut != null)
                {
                    polyline.Add(p.Cut);
                }
            }
            return(polyline);
        }