コード例 #1
0
        public static Vector2[] CleanPath(Vector2[] path, float tolerance = 100)
        {
            var cleanPath = new List<Vector2> {path.First()};
            for (var i = 1; i < path.Length - 1; i++)
            {
                if (path[i].Distance(cleanPath.Last(), true) > tolerance.Pow())
                    cleanPath.Add(path[i]);
            }
            cleanPath.Add(path.Last());

            //cleanPath.RemoveAt(0);
            return cleanPath.ToArray();
        }
コード例 #2
0
ファイル: Geometry.cs プロジェクト: Artentus/GameUtils
        private void AddBeziersInner(Vector2[] points)
        {
            if (Closed) throw new InvalidOperationException("The geometry can not be changed after is has been closed.");

            var linePoints = new List<Vector2>();

            for (int i = 0; i < points.Length - 1; i += 3)
            {
                if (i > 0) linePoints.Add(points[i - 1]);
                linePoints.AddRange(GetCubicBezierPoints(i - 1 >= 0 ? points[i - 1] : lastPoint, points[i], points[i + 1], points[i + 2], true));
            }
            linePoints.Add(points.Last());

            AddLinesInner(linePoints);
        }