Пример #1
0
        public static Vector3[] GetTessPoints(this ICurve curve, double chordTol, double lengthTol, RangeDouble?domain = null)
        {
            bool   isPeriodic;
            double end;
            bool   isClosed;
            double start;

            if (domain == null)
            {
                curve.GetEndParams(out start, out end, out isClosed, out isPeriodic);
            }
            else
            {
                start = domain.Value.Min;
                end   = domain.Value.Max;
            }

            var startPt = (double[])curve.Evaluate2(start, 0);
            var midPt   = (double[])curve.Evaluate2((start + end) / 2, 0);
            var endPt   = (double[])curve.Evaluate2(end, 0);
            var set0    = GetTessPotsAsVector3(curve, chordTol, lengthTol, startPt, midPt)
                          .ToArray();

            var set1 = GetTessPotsAsVector3(curve, chordTol, lengthTol, midPt, endPt)
                       .ToArray();


            return(set0.Concat(set1.Skip(1)).ToArray());
        }
Пример #2
0
        /// <summary>
        /// Return the domain of the curve. ie the [startParam, endParam]
        /// </summary>
        /// <param name="curve"></param>
        /// <returns></returns>
        public static double[] Domain(this ICurve curve)
        {
            bool   isPeriodic;
            double end;
            bool   isClosed;
            double start;

            curve.GetEndParams(out start, out end, out isClosed, out isPeriodic);
            return(new[] { start, end });
        }
Пример #3
0
        /// <summary>
        /// Return the length of the curve between the start
        /// and end parameters.
        /// </summary>
        /// <param name="curve"></param>
        /// <returns></returns>
        public static double Length(this ICurve curve)
        {
            bool   isPeriodic;
            double end;
            bool   isClosed;
            double start;

            curve.GetEndParams(out start, out end, out isClosed, out isPeriodic);
            return(curve.GetLength3(start, end));
        }