Exemplo n.º 1
0
        /// <summary>
        /// Creates Images of an optical illusion that tricks the mind into
        /// seeing more different colors (4) than are actually present in the
        /// image (3).
        /// </summary>
        public static PixImage <byte> CreateHowManyColorsIllusion(int size, bool parallel = true)
        {
            var scale = 1024.0 / size;
            var delta = 0.5 * (double)(size - 1);

            var pixImage = new PixImage <byte>(size, size, 3);

            var colorMatrix = pixImage.GetMatrix <C3b>();

            var orange    = new C3b(255, 150, 0);
            var magenta   = new C3b(255, 0, 255);
            var bluegreen = new C3b(0, 255, 150);
            Func <long, long, C3b> pixelFun = (x, y) =>
            {
                var xd = scale * (x - delta); var yd = scale * (y - delta);
                var r   = Fun.Sqrt(xd * xd + yd * yd);
                var phi = Fun.Atan2(yd, xd);
                var lp1 = phi / Constant.PiTimesFour;
                var lp2 = phi / Constant.Pi; // TimesTwo;
                var lr  = Fun.Log(r) / Constant.E;
                var p1  = Fun.Frac(0.05 + 4 * (lr - lp1));
                var p2  = Fun.Frac(96 * (lr + lp2)); // 64
                return(p2 < 0.5
                    ? (p1 >= 0.0 && p1 < 0.25 ? bluegreen : orange)
                    : (p1 >= 0.5 && p1 < 0.75 ? bluegreen : magenta));
            };

            if (parallel)
            {
                colorMatrix.SetByCoordParallelY(pixelFun);
            }
            else
            {
                colorMatrix.SetByCoord(pixelFun);
            }

            return(pixImage);
        }
Exemplo n.º 2
0
 public static System.Drawing.Color ToColor(this C3b color)
 {
     return(System.Drawing.Color.FromArgb(
                color.R, color.G, color.B));
 }
Exemplo n.º 3
0
 /// <summary>Computes MD5 hash of given data.</summary>
 public static Guid ComputeMd5Hash(this C3b x)
 => ComputeMd5Hash(bw => { bw.Write(x.R); bw.Write(x.G); bw.Write(x.B); });
Exemplo n.º 4
0
 public void Write(C3b c)
 {
     Write(c.R); Write(c.G); Write(c.B);
 }
 /// <summary>
 /// C3b to System.Drawing.Color.
 /// </summary>
 public static Color ToColor(this C3b color)
 => Color.FromArgb(color.R, color.G, color.B);