コード例 #1
0
        /// <summary>
        /// Erzeugt eine neue Farbe mit möglichst großem Abstand zu den bereits
        /// vorhandenen Farben und markiert sie als belegt.
        /// </summary>
        /// <returns>Neue Farbe.</returns>
        public Farbe ErzeugeUndBelegeFarbe()
        {
            Farbe farbe = ErzeugeFarbe();

            BelegeFarbe(farbe);
            return(farbe);
        }
コード例 #2
0
        /// <summary>
        /// Erzeugt eine neue Farbe mit möglichst großem Abstand zu den bereits
        /// vorhandenen Farben, verändert sie leicht und markiert sie als belegt.
        /// </summary>
        /// <returns>Neue Farbe.</returns>
        public Farbe ErzeugeUndBelegeFarbe(int streuung)
        {
            Farbe farbe = ErzeugeFarbe(streuung);

            BelegeFarbe(farbe);
            return(farbe);
        }
コード例 #3
0
        /// <summary>
        /// Erzeugt eine neue Farbe mit möglichst großem Abstand zu den bereits
        /// vorhandenen Farben und verändert sie leicht.
        /// </summary>
        /// <returns>Neue Farbe.</returns>
        public Farbe ErzeugeFarbe(int streuung)
        {
            Farbe  farbe  = ErzeugeFarbe();
            Random zufall = new Random();

            return
                (new Farbe
                 (
                     (farbe.Rot * 100) / (100 + zufall.Next(-streuung, streuung)),
                     (farbe.Grün * 100) / (100 + zufall.Next(-streuung, streuung)),
                     (farbe.Blau * 100) / (100 + zufall.Next(-streuung, streuung))));
        }
コード例 #4
0
        private int bestimmeMinimalenAbstand(Farbe farbe)
        {
            int besterAbstand = int.MaxValue;

            for (int f = 0; f < farben.Count; f++)
            {
                int abstand = farben[f] - farbe;
                if (abstand < besterAbstand)
                {
                    besterAbstand = abstand;
                }
            }
            return(besterAbstand);
        }
コード例 #5
0
        /// <summary>
        /// Erzeugt eine neue Farbe mit möglichst großem Abstand zu den bereits
        /// vorhandenen Farben.
        /// </summary>
        /// <returns>Neue Farbe.</returns>
        public Farbe ErzeugeFarbe()
        {
            int   besterAbstand = 0;
            Farbe besteFarbe    = new Farbe(0, 0, 0);

            int   r, g, b;
            int   r0 = 0, g0 = 0, b0 = 0;
            int   abstand;
            Farbe farbe;

            for (r = 8; r < 256; r += 16)
            {
                for (g = 8; g < 256; g += 16)
                {
                    for (b = 8; b < 256; b += 16)
                    {
                        farbe   = new Farbe(r, g, b);
                        abstand = bestimmeMinimalenAbstand(farbe);
                        if (abstand > besterAbstand)
                        {
                            besterAbstand = abstand;
                            r0            = r;
                            g0            = g;
                            b0            = b;
                        }
                    }
                }
            }

            for (r = -8; r < 8; r++)
            {
                for (g = -8; g < 8; g++)
                {
                    for (b = -8; b < 8; b++)
                    {
                        farbe   = new Farbe(r0 + r, g0 + g, b0 + b);
                        abstand = bestimmeMinimalenAbstand(farbe);
                        if (abstand > besterAbstand)
                        {
                            besterAbstand = abstand;
                            besteFarbe    = farbe;
                        }
                    }
                }
            }

            return(besteFarbe);
        }
コード例 #6
0
 /// <summary>
 /// Entfernt eine vorhandene Farbe.
 /// </summary>
 /// <param name="farbe">Vorhandene Farbe.</param>
 public void EntferneFarbe(Farbe farbe)
 {
     farben.Remove(farbe);
 }
コード例 #7
0
 /// <summary>
 /// Markiert eine neue Farbe als bereits vorhanden.
 /// </summary>
 /// <param name="farbe">Neue Farbe.</param>
 public void BelegeFarbe(Farbe farbe)
 {
     farben.Add(farbe);
 }