Beispiel #1
0
 public static Action <List <Vector3d> > MakeLoopOnSurfaceProcessorF(FScene scene, IProjectionTarget surface,
                                                                     Func <float> SampleRateF, Func <bool> ClosedF,
                                                                     float fSmoothAlpha = 0.2f, int nSmoothIter = 15)
 {
     return((vertices) => {
         CurveResampler resampler = new CurveResampler();
         IWrappedCurve3d temp_curve = new IWrappedCurve3d()
         {
             VertexList = vertices, Closed = ClosedF()
         };
         float rate = SampleRateF();
         List <Vector3d> result = resampler.SplitCollapseResample(temp_curve, rate, rate * 0.6);
         if (result != null && result.Count > 3)
         {
             vertices.Clear();
             vertices.AddRange(result);
         }
         CurveUtils.InPlaceSmooth(vertices, fSmoothAlpha, nSmoothIter, ClosedF());
         gs.CurveDrawingUtil.ProjectToTarget_Scene(vertices, scene, surface);
     });
 }