На Спеке по любому будет медленно)
Вид для печати
для начала надо просто их настроить для поворотов и вапще с графикой засада.Цитата:
пошаговую стратегию делаешь?
возьми картинку (любую) 64х64 и вращай
вернее тебе не вращать надо
а брать точки с одной плоскости и укладывать их в нужные места
на другой плоскости
http://zx-pk.ru/attachment.php?attac...1&d=1439320847
на рисунке слева находится твой спрайт
далее ты вычисляешь точку куда будешь рисовать
и заодно приращения для координат Х и У
ну и рисуешь.
Школа ,по моему шестой класс - система полярных координат ,изменение угла... http://www.mathprofi.ru/poljarnye_koordinaty.html , в OVER THE TOP мы это делали в real time
https://youtu.be/WwD3SJDnPe4?t=200
https://zxaaa.untergrund.net/view_demo.php?id=8805
Примерно, также мыслю.
Спрайт - прямоугольник с геометрическим центром в точке вращения. Впишем его в окружность. Таким образом, точка ЛВУ спрайта в в каждой позиции поворота будет принадлежать данной окружности.
Для каждого значения угла поворота строим таблицу, которая содержит:
1) координаты ЛВУ спрайта,
2) приращения по оси ординат для начальной левой точки каждой последующей горизонтальной линии спрайта относительно вышележащей линии,
3) приращения по оси ординат для каждой последующей точки горизонтальной линии спрайта,
4) Значение шага - число точек, после отрисовки которых пропускается точка в иходном спрайте.
Для чего нужен это шаг? - Пиксели в мониторе квадратные, а гипотенуза всегда длиннее любого из катетов. Поэтому во избежании искажения размеров спрайта при повороте придётся "прорежать" линии, чтобы их длина по диагонали визуально соответствовала горизонтальной линии. При этом изображение спрайта, конечно, пострадает. Хотя, наверное, можно пойти по другому: добавлять точки по мере приближения к горизонтали.
Углов поворота, кстати, не может быть больше, чем число пикселей, лежащих на окружности, в которую вписан спрайт.
А выбор оси приращений и направления рисования в зависимости от положения ЛВУ, думаю, сходен с таковым для рисования окружностей.
Тут быстрее будет показать на примере
надо будет подумать.
наверное позже
под ТС конфу сделаю.
1) координаты ЛВУ спрайта,
2) приращения по оси ординат для начальной левой точки каждой последующей горизонтальной линии спрайта относительно вышележащей линии,
3) приращения по оси ординат для каждой последующей точки горизонтальной линии спрайта,
4) Значение шага - число точек, после отрисовки которых пропускается точка в исходном спрайте.
Кстати о синусоиде - вспомни свою козявилку для Inferno. Мож, покатит?
Sergey
это все вычисляется, хотя да можно использовать и предрассчитанные данные
4 это лишнее
1 координаты угла
2 смещение при отрисовке
3 смещение при переходе на новую линию
а дальше берем точки и укладываем по порядку.
соответственно шагу.