Ejemplo n.º 1
0
        public override bool Equals(object obj)
        {
            if (obj.GetType() != typeof(Koordinate))
            {
                return(false);
            }

            Koordinate other = (Koordinate)obj;

            return(other == this);
        }
Ejemplo n.º 2
0
        // Lösche alle Punkte im Rechteck lb x lh um den Punkt x, y
        // Liefert true zurück, wenn Punkte gelöscht worden sind
        public bool LoescheBei(int x, int y, int lb, int lh)
        {
            bool punkteGeloescht = false;

            int min_x = x - lb / 2;
            int max_x = x + lb / 2;
            int min_y = y - lh / 2;
            int max_y = y + lh / 2;

            for (int i = Count - 1; i >= 0; i--)
            {
                // Alle passenden Koordinaten aus der Linie entfernen
                for (int k = this[i].Count - 1; k >= 0; k--)
                {
                    Koordinate koord = this[i][k];
                    if (koord.X >= min_x && koord.X <= max_x &&
                        koord.Y >= min_y && koord.Y <= max_y)
                    {
                        // Soll ein Punkt innerhalb einer Linie gelöscht werden, dann soll die Linie in zwei Teile aufgeteilt werden
                        if (k != 0 && k != this[i].Count - 1)
                        {
                            // Es soll in einer Linie gelöscht werden. Diese einfach aufteilen
                            Linie linie = new Linie();
                            for (int l = this[i].Count - 1; l > k; l--)
                            {
                                linie.Add(this[i][l]);
                                this[i].RemoveAt(l);
                            }

                            // Neue Linie hinter dieser einfügen
                            this.Insert(i + 1, linie);
                            break;
                        }

                        // Punkt befindet sich inenrhalb des angegebenen Rechtecks, also löschen
                        this[i].RemoveAt(k);
                        punkteGeloescht = true;
                    }
                }

                // Sind in dieser Linie überhaupt noch Punkte enthalten?
                if (this[i].Count == 0)
                {
                    // Nein - Linie löschen
                    this.RemoveAt(i);
                }
            }

            return(punkteGeloescht);
        }