Sutikku Opublikowano 5 Listopada 2017 Udostępnij Opublikowano 5 Listopada 2017 Nie wiem jak się za to ugryźć. Mam grid mapę 255x255 i dajmy, że w środku niej jest kółko. I chciałbym przenieść to kółko z środka do rogu 0x0 i znaleźć drugi róg tego kółka np 128x122. Mam nadzieję, że chociaż napisane ułomnie to zrozumiale. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 5 Listopada 2017 Udostępnij Opublikowano 5 Listopada 2017 Róg kółka? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 5 Listopada 2017 Udostępnij Opublikowano 5 Listopada 2017 Z jakiegoś powodu wydaje mi się że szukasz zwyczajnego: x = sin(i)*r y = -cos(i)*r Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Listopada 2017 Administratorzy Udostępnij Opublikowano 6 Listopada 2017 18 godzin temu, Uzjel napisał: Róg kółka? chciałby przenieść cały kwadrat w którym jest koło, wiec zakładam, że to róg kwadratu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 6 Listopada 2017 Udostępnij Opublikowano 6 Listopada 2017 ja bym jednak poprosil o narysowanie tego, bo totalnie nie wiem o co chodzi : D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 6 Listopada 2017 Autor Udostępnij Opublikowano 6 Listopada 2017 Tak, chodzi o róg kwadratu opisanego na kole, mój błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Listopada 2017 Udostępnij Opublikowano 6 Listopada 2017 OK no to pozycją jaką szukasz jest średnica koła Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 6 Listopada 2017 Autor Udostępnij Opublikowano 6 Listopada 2017 Użyłem złego przykładu, to wcale nie jest koło, tylko tak dla zobrazowania użyłem, równie dobrze to może być np literka A. I szerokość nie jest równa wysokości. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Listopada 2017 Udostępnij Opublikowano 6 Listopada 2017 OK. No to dość proste. Czym są u ciebie puste dane? Możemy znać że to "0"? W takim razie pozycję x znajdujesz poprzez: _x=ds_grid_width(index); for(_x=ds_grid_width(index); _x>0; _x--) { if(ds_grid_get_min(index, _x, 0, _x, ds_grid_height(index))>0) { exit } } Y podobnie. Jeżeli operujesz na stringach to musisz zamiast ds_grid_get_min() zrobić znów for i przelecieć przez wszystko w y gnysek 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Listopada 2017 Administratorzy Udostępnij Opublikowano 6 Listopada 2017 No ale jak znasz wysokość i szerokość, to nadal jak wyżej. A jak nie znasz, to ciężka sprawa... chyba, ze to jedyny kształt w tym gridzie ? Wtedy będzie tak: var _w = ds_grid_width(index); var _h = ds_grid_height(index); var xstart = _w, xend = 0, ystart = _h, yend = 0; for(var i = 0; i < _w; i++) { for(var j = 0; j < _h; j++) { if index[# i, j] == 1 { xstart = min(xstart, i); xend = max(xend, i); ystart = min(ystart, j); yend = max(yend, j); } } } // ok, mamy juz prostokat w ktorym jest figura, teraz przesuwamy var offsetx = -1, offsety = -20; for(var i = xstart; i < xend; i++;) { for(var j = ystart; j < _yend; j++) { if index[# i, j] == 1 { index[# ((i + _w + xoffset) % _w), ((j + _h + yoffset) % _h)] = 1; index[# i, j] = 0; /* robimy operację modulo, żeby przenosiło na drugi koniec grida w przypadku, gdy np. litera zaczyna się na osi X w pozycji 2, a ustawisz offset na -5. ponieważ jednak modulo z liczb ujemnych nie jest tylko dopisaniem znaku - przed wartością, dodajemy pełną wysokość np. 3 % 10 = 3, ale -3 % 10 = 7, wystarczy jednak dodawać zawsze 10 do liczby i po sprawie (-3 + 10) % 10 = 3. */ } } } tu jest jeszcze taki jeden problem, że jak szerokość litery jest taka, ze po odjęciu offsetu nachodzi na siebie z drugiej strony, no to skasuje się część litery niestety - trzeba by wtedy do nowego grida po prostu przenosić i stary kasować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się