Exemplo n.º 1
0
        /// <summary>
        ///     Negate a spectrum
        /// </summary>
        /// <param name="s">the spectrum to negate</param>
        /// <returns>the negated spectrum</returns>
        public static CoefficientSpectrum operator -(CoefficientSpectrum s)
        {
            var resultSpectrum = new CoefficientSpectrum(s._nsamples);

            for (var i = 0; i < s._nsamples; ++i)
            {
                resultSpectrum._samples[i] = -resultSpectrum._samples[i];
            }
            return(resultSpectrum);
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Add a spectrum and a value
        /// </summary>
        /// <param name="s1">the left spectrum</param>
        /// <param name="value"></param>
        /// <returns>the new spectrum</returns>
        public static CoefficientSpectrum operator +(CoefficientSpectrum s1, float value)
        {
            var resultSpectrum = new CoefficientSpectrum(s1._nsamples);

            for (var i = 0; i < s1._nsamples; ++i)
            {
                resultSpectrum._samples[i] = s1._samples[i] + value;
            }
            return(resultSpectrum);
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Clamp a spectrum
        /// </summary>
        /// <param name="s">the spectrum to clamp</param>
        /// <param name="low">the minimum value</param>
        /// <param name="high">the maximum value</param>
        /// <returns>the clamped spectrum</returns>
        public static CoefficientSpectrum Clamp(CoefficientSpectrum s, float low = 0,
                                                float high = float.PositiveInfinity)
        {
            var result = new CoefficientSpectrum(s._nsamples);

            for (var i = 0; i < s._nsamples; ++i)
            {
                result._samples[i] = result._samples[i] < low ? low : (result._samples[i] > high ? high : low);
            }
            return(result);
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Multiply two spectrums together.
        /// </summary>
        /// <param name="s1">the left spectrum</param>
        /// <param name="s2">the right spectrum</param>
        /// <returns>the new spectrum</returns>
        public static CoefficientSpectrum operator *(CoefficientSpectrum s1, CoefficientSpectrum s2)
        {
            if (s1._nsamples != s2._nsamples)
            {
                throw new Exception("Spectrums do not have the same number of samples");
            }
            var resultSpectrum = new CoefficientSpectrum(s1._nsamples);

            for (var i = 0; i < s1._nsamples; ++i)
            {
                resultSpectrum._samples[i] = s1._samples[i] * s2._samples[i];
            }
            return(resultSpectrum);
        }
Exemplo n.º 5
0
 /// <summary>
 ///     Perform linear interpolation on two spectrums
 /// </summary>
 /// <param name="s1">the first spectrum</param>
 /// <param name="s2">the second spectrum</param>
 /// <param name="t">the time value</param>
 /// <returns>the new spectrum</returns>
 public CoefficientSpectrum Lerp(CoefficientSpectrum s1, CoefficientSpectrum s2, float t)
 {
     return(s1 * (1f - t) + s2 * t);
 }