Возможно ли написать универсальный алгоритм поворота для фигуры, состоящей из квадратных блоков?
Например, фигура из тетриса. Имеет примерно такой вид: Каждый квадрат (блок) - отдельная картинка. Фигура поворачивается на угол 90 градусов по часовой стрелке, т.е. всего есть 4 этапа поворота: Сейчас я просто задаю координаты каждого блока для каждого этапа поворота. Это не универсально, долго и неразумно. Есть какой-нибудь более рациональный путь для решения данной проблемы? |
возьмем к примеру матрицу 3х3 и поместим в неё заданную фигуру.
затем в каждом блоке напиши его координаты (центральную клетку возьми за 0). возьми другой листок, поверни фигуру на 90 градусов, опять напиши координаты. и еще два раза. когда получишь четыре картинки, легко можно вывести зависимость. это называется методом индукции - т.е. формула выводится без доказательств. работает - и ладно. данный метод сильно экономит нервы и время :) о результатах сообщи плиз :rolleyes: |
Я так и делал, но у меня не получалось вывести зависимость даже для одного блока. Если, например, есть цикл, в котором перебираются все блоки нарисованной выше фигуры, то он выглядит примерно так:
Код:
For i=0 to 3 В общем, бред сивой кобылы у меня пока получается. :( |
задело меня за живое :) наверное, потому что в примерах к Turbo Pascal'ю сделали при помощи заранее заданных матриц :lol:
итак, табличка: Код:
|---| Xi+1=Yi; Yi+1=(-1)*Xi вот тебе и вся зависимость. пробегаешь в цикле массив, задающий фигуру. если в клетке есть блок, значит его надо убрать из этой клетки и поместить в клетку с новыми координатами (через дополнительный массив). для простого тетриса слишком наворочено, но зато - универсально, красиво. классная задачка :) |
Спасибо.
Рад, что понравилась задачка :) Ну и как всегда я был ленив и невнимателен :wallbash: |
Во! Это вроде как линейный оператор, действующий на множестве квадратных матриц 3*3 :)
|
мне impersonalis пытался навязать матрицу шмитда :o
так вот - простой разворот матрици 3*3 с центром 2*2 центр менять нельзя поворачивать можно только на -90 и на 90 градусов матрицу представил в виде масима :) потомучто с типами возится в западло было я гений минимализма :)) |
Причём здесь Шмидт?! Я тебе перечислил некоторые операции, производимые с матрицами. Касаемо юзания данной матрицы для поворта фигуры - сказано не было!
|
Аттач посмотрел. Вариант решения.
|
Часовой пояс GMT +4, время: 13:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot