Esempio n. 1
0
 /// <summary>Initializes the step interpolator with a sample provider</summary>
 /// <param name="sampleProvider">Object through which to query for samples</param>
 /// <param name="affinity">Which sample to align steps to</param>
 public StepInterpolator(
     ISampleProvider <SampleType> sampleProvider, SampleAffinity affinity
     )
 {
     this.sampleProvider = sampleProvider;
     this.affinity       = affinity;
 }
Esempio n. 2
0
        /// <summary>Perform a stepped interpolation of the value at the given point in time</summary>
        /// <param name="left">Sample value at time 0.0</param>
        /// <param name="right">Sample value at time 1.0</param>
        /// <param name="time">Time index to be interpolated (0.0 to 1.0)</param>
        /// <param name="affinity">Which sample to align steps to</param>
        /// <returns>The interpolated value</returns>
        public static SampleType Interpolate(
            Number <SampleType, SampleMathType> left, Number <SampleType, SampleMathType> right,
            double time, SampleAffinity affinity
            )
        {
            switch (affinity)
            {
            case SampleAffinity.Left: {
                return(left);
            }

            case SampleAffinity.Right: {
                return(right);
            }

            default: {
                if (time < 0.5)
                {
                    return(left);
                }
                else
                {
                    return(right);
                }
            }
            }
        }
Esempio n. 3
0
 /// <summary>Performs a stepped interpolation between two arbitrily spaced samples</summary>
 /// <param name="left">Sample value at the starting time</param>
 /// <param name="leftTime">Starting time</param>
 /// <param name="right">Sample value at the ending time</param>
 /// <param name="rightTime">Ending time</param>
 /// <param name="time">Time index to be interpolated</param>
 /// <param name="affinity">Which sample to align steps to</param>
 /// <returns>The interpolated value</returns>
 public static SampleType Interpolate(
     Number <SampleType, SampleMathType> left, double leftTime,
     Number <SampleType, SampleMathType> right, double rightTime,
     double time, SampleAffinity affinity
     )
 {
     return(Interpolate(left, right, (time - leftTime) / (rightTime - leftTime), affinity));
 }