Exemple #1
0
        //po zajęciu powierzchni matrycy przez prostokąt musimy odnotować to w tablicy zajętości
        private void aktualizacja_tablic_zajetosci(Punkt p, int[] zajetosc_x)
        {
            int poczatek_x = min_x(p);
            int koniec_x   = max_x(p);

            for (int i = poczatek_x; i < koniec_x; i++)
            {
                zajetosc_x[i] = p.y;
            }
        }
Exemple #2
0
        //przesuwamy położenie prostokąta maksymalnie w prawo
        private void idz_max_w_prawo(Punkt p, int[] tab_zaj_x, int odstep)
        {
            int max_wart_x = zwroc_max_x_prostokat(p, tab_zaj_x, odstep);

            if (max_wart_x != tab_zaj_x.Length - 1)
            {
                max_wart_x -= odstep;
            }

            p.x = max_wart_x - max_x(p) + min_x(p);
        }
Exemple #3
0
        //ustalamy pozycje: potrzebna jest matryca (przede wszystkim tablica zajetosci) i punkt (domyślny punkt zaczepienia, tj. 0,0)
        public bool ustal_pozycje(Punkt p, Matryca m, int odstep)
        {
            bool start = false;

            if (polozenie_poczatkowe_prostokat(p, m.zajetosc_x, odstep)) //sprawdzamy czy w ogóle można umieścić prostokąt na matrycy
            {
                start = true;
                idz_max_w_gore(p, m.zajetosc_x, odstep);
                idz_max_w_prawo(p, m.zajetosc_x, odstep);
                idz_max_w_gore(p, m.zajetosc_x, odstep);
                aktualizacja_tablic_zajetosci(p, m.zajetosc_x); //po wykonaniu powyższych trzech kroków, znajdujemy punkt zaczepienia prostokąta na matrycy i aktualizujemy tablicę zajętości
            }

            return(start);
        }
Exemple #4
0
        //zwracamy minimalną wartość x jaką może zająć prostokąt - nie używamy tej metody
        private int zwroc_min_x_prostokat(Punkt p, int[] tab_zaj_y)
        {
            int poczatek_y = min_y(p);
            int koniec_y   = max_y(p);
            int max        = 0;

            for (int i = poczatek_y; i <= koniec_y; i++)
            {
                if (tab_zaj_y[i] > max)
                {
                    max = tab_zaj_y[i];
                }
            }

            return(max);
        }
Exemple #5
0
        //zwracamy maksymalną wartość x jaką może zajmować prostokąt
        private int zwroc_max_x_prostokat(Punkt p, int[] tab_zaj_x, int odstep)
        {
            int y_max            = max_y(p);
            int poczatkowy_max_x = max_x(p);
            int poczatek_x       = poczatkowy_max_x;
            int rozmiar_tab      = tab_zaj_x.Length;

            if (poczatek_x + odstep < tab_zaj_x.Length - 1)
            {
                poczatek_x += odstep;
            }

            for (int i = poczatek_x; i < rozmiar_tab; i++)
            {
                poczatek_x = i;
                if ((tab_zaj_x[i] < y_max))
                {
                    break;
                }
            }

            return(poczatek_x);
        }
Exemple #6
0
 public MatrycaFiguraPunkt(int nr, Prostokat fig, Punkt punkt)
 {
     nr_matrycy = nr;
     figura     = fig;
     p          = punkt;
 }
Exemple #7
0
 //przekazujemy punkt i otrzymujemy minimalną wartość y danego prostokąta
 public int min_y(Punkt p)
 {
     return(p.y);
 }
Exemple #8
0
 //przekazujemy punkt i otrzymujemy minimalną wartość x danego prostokąta
 public int min_x(Punkt p)
 {
     return(p.x);
 }
Exemple #9
0
        //dla danego położenia sprawdzamy czy można iść w góre - tej metody nie używyamy (w bieżącej wersji zamiast sprawdzać mozna po prostu pójść w góre)
        private bool probkuj_gore(Punkt p, int[] tab_zaj_x, int odstep)
        {
            int max_wart_y = zwroc_max_y_prostokat(p, tab_zaj_x, odstep);

            return(max_wart_y > p.y + max_y(p) - min_y(p));
        }
Exemple #10
0
        //przesuwamy położenie prostokąta maksymalnie w góre
        private void idz_max_w_gore(Punkt p, int[] tab_zaj_x, int odstep)
        {
            int max_wart_y = zwroc_max_y_prostokat(p, tab_zaj_x, odstep);

            p.y = max_wart_y - max_y(p) + min_y(p);
        }
Exemple #11
0
 //przekazujemy punkt i otrzymujemy maksymalną wartość y danego prostokąta
 public int max_y(Punkt p)
 {
     return(p.y + wysokosc);
 }
Exemple #12
0
 //przekazujemy punkt i otrzymujemy maksymalną wartość x danego prostokąta
 public int max_x(Punkt p)
 {
     return(p.x + szerokosc);
 }