• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak na podstawie liczby kafelka wyliczyć pozycję kafelka

Object Storage Arubacloud
0 głosów
198 wizyt
pytanie zadane 8 października 2015 w C i C++ przez Albert221 Obywatel (1,980 p.)

Witam ponownie. No więc mam obrazek, którego wymiary są zmienne (ale podzielne przez 32). W tym obrazku znajdują się kafelki 32x32px. Chcę na podstawie liczby kafelka (liczonej od lewego górnego rogu) wyliczyć pozycję lewej górnej krawędzi tego kafelka. Narysowałem to: x to liczba kafelka (na obrazku jest to 16), imageWidth i Height to wymiary obrazka, a y to pozycja tej krawędzi. Przydatny każdy pseudokod, kod w jakimkolwiek języku lub wytłumaczenie jak to obliczyć :)

 

Pozdrawiam!

2 odpowiedzi

+2 głosów
odpowiedź 8 października 2015 przez Szykem2 Nałogowiec (29,510 p.)
wybrane 8 października 2015 przez Albert221
 
Najlepsza

Spróbuję wytłumaczyć metodę.

Przyjmijmy, że d-szerokość obrazka. Mamy więc zależność d/32 = n, gdzie n to ilość możliwych do ułożenia w rzędzie kafelków.

Teraz bierzemy operację modulo. (k-1)%n = x, gdzie k to numer kafelka. Teraz to trochę objaśnie. operacja modulo zwraca resztę z dzielenia k/n. Czyli jeżeli mamy 4 kolumnową tabelę i badamy pozycję 11 kafelka to x = 2 czyli mamy współżędną x-ową tego kafelka.(U Ciebie na załączonym obrazku ten punkt ma współżędą x=1, tak dla lepszego wyjaśnienia, żeby nie brać tego, która to kolumna tylko rzeczywistą współrzędną). Modulo zwróci 0 jak punkt jest na krawędzi obrazka a 3 jeśli kafelek przylega do prawej stronu obrazka. Ta -1 bierze się z warunku dla brzegowych kafelków. bez niej wychodziłoby, że 4 kafelek jest pierwszy w drugim rzędzie.

Dobra teraz została jeszcze współrzędna y-owa. W tym wypadku tylko dzielimy i obkładamy funkcją podłoga(rzutowanie na int lub w C/C++ funkcja floor()) (k-1)/n = y. Sprawdzamy ile rzędów jesteśmy w stanie zapełnić tą liczbą kafelków. Ta -1 jak wyżej bierze się z warunku dla brzegowych kafelków. Czyli jeżeli mamy ten 4 kafelek po pozieleniu przez 4 daje 1 a nie 0 jak wyjść powinno.

Tylko trzeba pamiętać, że układ jest odwrócony(oś y rośnie w dół a nie w górę). Mam nadzieję, że zrozumiale to wyjaśniłem. Ambitny przykład w paincie ;)

komentarz 8 października 2015 przez Albert221 Obywatel (1,980 p.)

Dziękuję bardzo! x już zdołałem wyliczyć sam, ale z y miałem spory problem. Bardzo dziękuję za solidne wytłumaczenie i nawet obrazek :)

0 głosów
odpowiedź 8 października 2015 przez NoName Mądrala (5,640 p.)
czyli kafelki są stałe, obrazek nie, tak?
zawsze znasz liczbę kafelków jaką zajmuje obrazek?

Sprawdzasz w którym rzędzie jest kafelek, a potem na której pozycji. Mnożysz któryRząd*32 i któreMiejsce*32.

Nie wiem czy o to Ci chodzi dokładnie...

Podobne pytania

0 głosów
1 odpowiedź 321 wizyt
0 głosów
1 odpowiedź 573 wizyt
pytanie zadane 26 lutego 2016 w C i C++ przez SuperCoder2000 Nowicjusz (150 p.)

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,003 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...