private void RunIO_Force(Point3D p)
        {
            var m = _wnTree._mesh;

            {
                var hole = MeshUtility.FindHole(m.Triangles);
                foreach (var item in hole)
                {
                    Line l = new Line(m.Vertices[item.V1], m.Vertices[item.V2]);
                    l.LineWeight       = 6;
                    l.LineWeightMethod = colorMethodType.byEntity;
                    eyeshot.Entities.Add(l, 0, Color.Crimson);
                }

                var tris = MeshUtility.TriangulateGreedy(hole, m);
                var rpd  = RPDFactory.Create(RPDFactory.RPDType.WindingNumber);
                rpd.Init(m);
                double prob  = (rpd as WindingNumberRPD).DetectProb(p);
                double prob2 = WindingNumberRPD.DetectProb(tris, p);

                DashBoard.Text += "\nWNa\t" + prob.ToString("F5");
                DashBoard.Text += "\nWNb\t" + prob2.ToString("F5");
                DashBoard.Text += "\nWNs\t" + (prob2 + prob).ToString("F5");
                //DashBoard.Text += "\nasin=" + Math.Asin(0.5).ToString("F5");
            }
        }