Mam planszę do gry, która ma 20 rzędów wysokości i 10 kolumn szerokości, a początek (0,0) znajduje się w lewym górnym rogu. Mam w grze tetrimino, które składa się z czterech bloków. Mam lokalizację x, y każdego bloku względem początku lewego górnego rogu. Mam także pozycję punktu obrotu, punkt, wokół którego chcę obrócić, względem punktu początkowego lewego górnego rogu.
Każdy blok ma pozycję całkowitą w kwadracie planszy, a zatem czop ma pozycję ułamkową między blokami, np. (10,5,10,5)
Moje pytanie brzmi: jakiej formuły mogę użyć, aby obrócić każdy blok wokół osi obrotu?
Przeglądałem już istniejące podobne pytania i odpowiedzi, ale nie mogłem znaleźć odpowiedzi, którą mógłbym dostać do pracy.
Pomoc będzie bardzo mile widziane.
Odpowiedzi:
Standardowa logika obrotu Tetris nazywa się Super Rotation System. SRS jest przystosowany do gry Tetris na wysokim poziomie, pozwalając na wiele odmian kopnięć w ścianę i spinów typu T.
Istnieje inny popularny wariant o nazwie ARS, który był używany w grach Arika's Tetris: The Grand Master .
źródło
Ogólny wzór na obracanie wokół początku to
Dla 90 stopni staje się
Najpierw uzyskaj współrzędne środka cegły względem punktu obrotu:
Następnie obróć je wokół punktu obrotu:
A następnie dodaj współrzędne obrotu do obróconego punktu:
Ale jeśli chcesz obracać o wielokrotność 90 stopni, możesz zapisać cztery zestawy cegieł dla każdej orientacji i przełączać się między nimi zamiast faktycznie obracać.
źródło
Możesz obrócić wszystkie kwadratowe pierścienie (od A do H o 2 pozycje, od A do P o 4 pozycje itd.) Wokół tego bloku przestawnego:
źródło
Postępuj zgodnie ze standardowymi formułami obrotu 2D w Matematyce.
http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra
źródło