private void GenerovanieSkaly(int pocetSkaly) { List <int[]> volnePozicie = VyberPozicii(pocetSkaly, NajdenieVhodnychPozicii(TypyObjektov.prazdnaZem)); foreach (int[] pozicia in volnePozicie) { Skala skala = new Skala(pozicia[0], pozicia[1], true, true); mraveniskoTypyPolicok[pozicia[0], pozicia[1]] = skala; HlaskyCinnostiMravcovStavObjektov.SkalaVznikla(casExistencieMraveniska, skala.ZistiXSuradnicu(), skala.ZistiYSuradnicu()); } }
private Wektor fR; //wektor przesunięcia układu obserwatora; //--------------------------------------------------------------------------- // Konstruktor główny, inicjujący wszystkie parametry przekształcenia 3d // Trzy ostatnie paramtry (metryczny opis ekranu) nie są wymagane - // zostaną obliczone ze wymiarów pikselowych i standardowej pozycji // komputerowca przed monitorem . public T3d(Punkt obs, //pozycja obserwatora int xe0, int ye0, int eszer, int ewys, //okno ekranowe w pikselach float odl_ekr = 0, //typowa odległość oczu od monitora float szer_ekr = 0, float wys_ekr = 0) //fizyczny opis ekranu w metrach { Punkt centrum = new Punkt(0, 0, 0); //tam patrzy obserwator Wektor pion = new Wektor(0, 0, 1); //pomocniczy wektor, orientujący obserwatora w 3d if (odl_ekr <= 0) { odl_ekr = 0.5f; } if (szer_ekr <= 0) //gdy nie określono rozmiarów ekranu { szer_ekr = (float)eszer * 0.0257f / 96.0f; //0.0257 m = 1 cal. Ekran ma 96 pikseli/cal } if (wys_ekr <= 0) { wys_ekr = (float)ewys * 0.0257f / 96.0f; } s = new Skala(xe0, ye0, eszer, ewys, 0, 0, szer_ekr, wys_ekr); Wektor w3 = new Wektor(obs, centrum); //lokalny wektor z obserwatora (wkazujący środek układu) w3.unormuj(); Wektor w1 = new Wektor(); w1 = (pion ^ w3); //lokalny wektor osi x' obserwatora w1.unormuj(); Wektor w2 = new Wektor(); w2 = (w3 ^ w1); //lokalny wektor osi y' obserwatora w1 = -w1; //lewoskrętność układu obserwatora M = new Macierz(w1, w2, w3); //macierz przekształcenia fodl_ekr = odl_ekr; //parametry potrzebne innym funkcjom fR = new Wektor(obs, new Punkt()); //tyle dystansu dzieli układy odniesienia }