Exemple #1
0
        /// <summary>
        /// 获取样条曲线
        /// </summary>
        /// <param name="points">基准点</param>
        /// <returns>样条曲线</returns>
        public static List <Vector3> FetchCurves(int ratio, params Vector3[] points)
        {
            if (points == null || points.Length == 0)
            {
                return(null);
            }

            List <SplineCurves> splines = new List <SplineCurves>();

            SplineCurves current, pre;

            foreach (var point in points)
            {
                if (splines.Count == 0)
                {
                    current = new SplineCurves(ratio);
                    current.AddJoint(null, point);
                    splines.Add(current);
                }
                else
                {
                    current = new SplineCurves(ratio);
                    pre     = splines[splines.Count - 1];
                    current.AddJoint(pre, point);
                    splines.Add(current);
                }
            }

            List <Vector3> curves = new List <Vector3>();

            foreach (SplineCurves spline in splines)
            {
                if (spline.First)
                {
                    continue;
                }
                foreach (Vector3 point in spline.points)
                {
                    if (curves.Contains(point))
                    {
                        continue;
                    }
                    curves.Add(point);
                }
            }
            return(curves);
        }