public void TestDouglasPeuckerN_Total5()
        {
            // Given

            // When
            List <GPoint> newPoints = PolylineSimplication.SimplifyByDouglasPeuckerN(points.ToArray(), 5);

            // Then
            Assert.AreEqual(5, newPoints.Count);
        }
        /// <summary>
        /// maxCount以内になるように間引く
        /// </summary>
        /// <param name="points">input</param>
        /// <param name="maxPointsCount">expected max number of points</param>
        /// <returns></returns>
        private List <GPoint> Thinout(List <GPoint> points, int maxPointsCount, out double duration)
        {
            duration = 0.0;
            if (points.Count <= maxPointsCount)
            {
                return(points);
            }

            List <GPoint> simplified = null;

            duration = Util.Util.MeasureExecTime(() => {
                if (m_CurveManeuverParameter.ThinoutByDouglasPeuckerN)
                {
                    simplified = PolylineSimplication.SimplifyByDouglasPeuckerN(points.ToArray(), maxPointsCount);
                }
                else
                {
                    simplified = PolylineSimplication.SimplifyPointsN(points.ToArray(), maxPointsCount);
                }
            });
            return(simplified);
        }
        public void SimplifyPoints(string expectedPointsNum)
        {
            List <GPoint> XY = ExtractCoordinates();
            int           expectedPointsCount = Util.StringUtil.IsDigitsOnly(expectedPointsNum) ? int.Parse(expectedPointsNum) : 500;
            List <GPoint> simpfiledXY;

            if (m_Appsetting.CurveManeuverParameter.ThinoutByDouglasPeuckerN)
            {
                simpfiledXY = PolylineSimplication.SimplifyByDouglasPeuckerN(XY.ToArray(), expectedPointsCount);
            }
            else
            {
                simpfiledXY = PolylineSimplication.SimplifyPointsN(XY.ToArray(), maxPoints: expectedPointsCount);
            }

            var    col1        = this.CurrentSelectionRange.Col;
            var    col2        = this.CurrentSelectionRange.EndCol;
            string newCol1Name = "new" + CurrentWorksheet[0, col1];
            string newCol2Name = "new" + CurrentWorksheet[0, col2];

            InsertXY(simpfiledXY, newCol1Name, newCol2Name);
        }