У меня есть сетка игровой доски, которая имеет высоту 20 строк и ширину 10 столбцов, а начало координат (0,0) находится в верхнем левом углу. У меня в игре тетримино, состоящее из четырех блоков. У меня есть координаты x, y каждого блока относительно верхнего левого угла. У меня также есть положение оси вращения, точка вокруг которой я хочу вращаться относительно точки отсчета верхнего левого угла.
Каждый блок имеет целочисленную позицию в квадрате игровой доски и, таким образом, стержень имеет дробную позицию между блоками, например (10.5,10.5)
Мой вопрос: какую формулу я могу использовать, чтобы вращать каждый блок вокруг оси?
Я уже посмотрел на существующие подобные вопросы и ответы, но не смог найти ответ, который я мог бы получить на работу.
Помощь будет высоко ценится.
Ответы:
Стандартная логика вращения тетриса называется Super Rotation System. SRS подходит для высокоуровневой игры в тетрис, что позволяет варьировать удары по стенке и т-спины.
Есть еще один распространенный вариант, называемый ARS, который использовался в играх Arika's Tetris: Grand Master .
источник
Общая формула для вращения вокруг происхождения
На 90 градусов становится
Итак, сначала получим координаты центра кирпича относительно точки поворота:
Затем поверните их вокруг точки поворота:
А затем добавьте координаты поворота к повернутой точке:
Но если вам нужно повернуть на 90 градусов, вы можете сохранить четыре набора позиций кирпича для каждой ориентации и переключаться между ними вместо фактического вращения.
источник
Вы можете вращать все квадратные кольца (a-through-h на 2 позиции, A-through-P на 4 позиции и т. Д.) Вокруг этого поворотного блока:
источник
Следуйте стандартным 2D-формулам вращения в математике.
http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra
источник