Exemple #1
0
        static void Main(string[] args)
        {
            alpha fonct = fct;

            B     c      = new B("Bernard");
            A     b      = new A(fonct);
            alpha fonct2 = c.myName;

            b.a += fonct2;
            b.a(1);
        }
Exemple #2
0
 return(new SpriteRenderable(sprite, pos, offset, zOffset, palette, scale, alpha, newTint, newTintModifiers, isDecoration));
Exemple #3
0
 var(alpha, block) = func();
Exemple #4
0
        /// <summary>
        /// 楕円フィルタの設計
        /// </summary>
        /// <param name="n">バターワースフィルタの次数</param>
        /// <param name="w">カットオフ周波数</param>
        /// <param name="epsilon">ε</param>
        /// <param name="k1">k1</param>
        /// <param name="type">false のときLPF、trueのときHPF</param>
        /// <returns>フィルタ係数</returns>
        public static Parameter[] GetElliptic(int n, double w, double epsilon, double k1, bool type)
        {
            double t     = Math.Pow((1 + Math.Sqrt(1 + epsilon * epsilon)) / epsilon, 1.0 / n);
            double beta0 = (t * t - 1) / (2 * t);

            double cos = Math.Cos(w);
            double sin = Math.Sqrt(1 - cos * cos);            //Math.Sin(w);
            double a0, a1, a2, b0, b1, b2;

            int len = n / 2;
            int k;

            Parameter[] parameters;
            if (n % 2 == 0)
            {
                parameters = new Parameter[len];
                k          = 1;
            }
            else
            {
                parameters = new Parameter[len + 1];
                k          = 2;

                a0 = 1; a1 = beta0;
                b0 = 1; b1 = 0;

                /* テスト用(Butterworth 特性)
                 * a0 = 1; a1 = 1;
                 * b0 = 1; b1 = 0;
                 * //*/

                if (type)
                {
                    BilinearTransformHPF(ref a0, ref a1, sin, cos);
                    BilinearTransformHPF(ref b0, ref b1, sin, cos);
                }
                else
                {
                    BilinearTransform(ref a0, ref a1, sin, cos);
                    BilinearTransform(ref b0, ref b1, sin, cos);
                }

                parameters[len].c  = b0 / a0;
                parameters[len].a1 = -a1 / a0;
                parameters[len].a2 = 0;
                parameters[len].b1 = b1 / b0;
                parameters[len].b2 = 0;
            }

            for (int i = 0; i < len; ++i, k += 2)
            {
                double wk = (double)k / n * Math.PI / 2;

                double alpha = 2 * beta0 * Math.Cos(wk);
                double beta  = Math.Sin(wk);
                beta *= beta;
                double gamma = beta;
                beta += beta0 * beta0;

                a0 = 1; a1 = alpha; a2 = beta;
                b0 = 1; b1 = 0; b2 = gamma;

                /* テスト用(Butterworth 特性)
                 * double alpha = 2 * Math.Cos(wk);
                 * a0 = 1; a1 = alpha; a2 = 1;
                 * b0 = 1; b1 = 0; b2 = 0;
                 * //*/

                if (type)
                {
                    BilinearTransformHPF(ref a0, ref a1, ref a2, sin, cos);
                    BilinearTransformHPF(ref b0, ref b1, ref b2, sin, cos);
                }
                else
                {
                    BilinearTransform(ref a0, ref a1, ref a2, sin, cos);
                    BilinearTransform(ref b0, ref b1, ref b2, sin, cos);
                }

                parameters[i].c  = b0 / a0;
                parameters[i].a1 = -a1 / a0;
                parameters[i].a2 = -a2 / a0;
                parameters[i].b1 = b1 / b0;
                parameters[i].b2 = b2 / b0;
            }

            return(parameters);
        }
Exemple #5
0
        /// <summary>
        /// Chebyshev I 型フィルタの設計
        /// </summary>
        /// <param name="n">バターワースフィルタの次数</param>
        /// <param name="w">カットオフ周波数</param>
        /// <param name="epsilon">リプルの許容幅</param>
        /// <param name="type">0のときLPF、1のときHPF</param>
        /// <returns>フィルタ係数</returns>
        public static Parameter[] GetChebyshev1(int n, double w, double epsilon, int type)
        {
            double k     = Math.Pow((1 + Math.Sqrt(1 + epsilon * epsilon)) / epsilon, 1.0 / n);
            double beta0 = (k * k - 1) / (2 * k);

            double sin = Math.Sin(w);
            double cos = Math.Cos(w);
            double a0, a1, a2, b0, tmp;

            int    len = n / 2;
            double nu;

            Parameter[] parameters;
            if (n % 2 == 0)
            {
                parameters = new Parameter[len];
                nu         = 0.5;
            }
            else
            {
                parameters = new Parameter[len + 1];
                nu         = 1;

                tmp = 1 + cos;
                if (type == 0)
                {
                    b0 = beta0 * sin;
                    a0 = b0 + tmp;
                    a1 = b0 - tmp;
                    parameters[len].b1 = 1;
                }
                else
                {
                    b0 = beta0 * tmp;
                    a0 = sin + b0;
                    a1 = sin - b0;
                    parameters[len].b1 = -1;
                }
                parameters[len].c  = b0 / a0;
                parameters[len].a1 = -a1 / a0;
                parameters[len].a2 = 0;
                parameters[len].b2 = 0;
            }

            for (int i = 0; i < len; ++i, ++nu)
            {
                double alpha = sin * 2 * beta0 * Math.Cos(nu / n * Math.PI);
                double beta  = Math.Sin(nu / n * Math.PI);
                beta *= beta;
                beta += beta0 * beta0;

                if (type == 0)
                {
                    b0  = beta * (1 - cos);
                    tmp = 1 + cos;
                    a1  = 2 * (b0 - tmp);
                    parameters[i].b1 = 2;
                }
                else
                {
                    b0  = beta * (1 + cos);
                    tmp = 1 - cos;
                    a1  = 2 * (tmp - b0);
                    parameters[i].b1 = -2;
                }
                a0 = b0 + tmp + alpha;
                a2 = b0 + tmp - alpha;

                parameters[i].c  = b0 / a0;
                parameters[i].a1 = -a1 / a0;
                parameters[i].a2 = -a2 / a0;
                parameters[i].b2 = 1;
            }

            return(parameters);
        }
Exemple #6
0
        /// <summary>
        /// Butterworth フィルタの設計
        /// </summary>
        /// <param name="n">バターワースフィルタの次数</param>
        /// <param name="w">カットオフ周波数</param>
        /// <param name="type">0のときLPF、1のときHPF</param>
        /// <returns>フィルタ係数</returns>
        public static Parameter[] GetButterworth(int n, double w, int type)
        {
            double sin = Math.Sin(w);
            double cos = Math.Cos(w);
            double a0, a1, a2, b0;

            if (type == 0)
            {
                b0 = (1 - cos) / 2;
            }
            else
            {
                b0 = (1 + cos) / 2;
            }
            a1 = -2 * cos;

            int    len = n / 2;
            double nu;

            Parameter[] parameters;
            if (n % 2 == 0)
            {
                parameters = new Parameter[len];
                nu         = 0.5;
            }
            else
            {
                parameters = new Parameter[len + 1];
                nu         = 1;

                a0 = sin + cos + 1;
                a2 = sin - cos - 1;
                if (type == 0)
                {
                    parameters[len].c = sin / a0;
                }
                else
                {
                    parameters[len].c = (1 + cos) / a0;
                }
                parameters[len].a1 = -a2 / a0;
                parameters[len].a2 = 0;
                if (type == 0)
                {
                    parameters[len].b1 = 1;
                }
                else
                {
                    parameters[len].b1 = -1;
                }
                parameters[len].b2 = 0;
            }

            for (int i = 0; i < len; ++i, ++nu)
            {
                double alpha = sin * Math.Cos(nu / n * Math.PI);
                a0 = 1 + alpha;
                a2 = 1 - alpha;

                parameters[i].c  = b0 / a0;
                parameters[i].a1 = -a1 / a0;
                parameters[i].a2 = -a2 / a0;
                if (type == 0)
                {
                    parameters[i].b1 = 2;
                }
                else
                {
                    parameters[i].b1 = -2;
                }
                parameters[i].b2 = 1;
            }

            return(parameters);
        }
Exemple #7
0
 PublicColor.FromArgb(alpha, lcSolidColors[0]),
Exemple #8
0
 public A(alpha fctDeleguee)
 {
     a += fctDeleguee;
 }