для начала надо просто их настроить для поворотов и вапще с графикой засада.пошаговую стратегию делаешь?
возьми картинку (любую) 64х64 и вращай
вернее тебе не вращать надо
а брать точки с одной плоскости и укладывать их в нужные места
на другой плоскости
на рисунке слева находится твой спрайт
далее ты вычисляешь точку куда будешь рисовать
и заодно приращения для координат Х и У
ну и рисуешь.
С уважением,
Jerri / Red Triangle.
Школа ,по моему шестой класс - система полярных координат ,изменение угла... 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
Последний раз редактировалось JV-Soft; 12.08.2015 в 00:32.
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
Примерно, также мыслю.
Спрайт - прямоугольник с геометрическим центром в точке вращения. Впишем его в окружность. Таким образом, точка ЛВУ спрайта в в каждой позиции поворота будет принадлежать данной окружности.
Для каждого значения угла поворота строим таблицу, которая содержит:
1) координаты ЛВУ спрайта,
2) приращения по оси ординат для начальной левой точки каждой последующей горизонтальной линии спрайта относительно вышележащей линии,
3) приращения по оси ординат для каждой последующей точки горизонтальной линии спрайта,
4) Значение шага - число точек, после отрисовки которых пропускается точка в иходном спрайте.
Для чего нужен это шаг? - Пиксели в мониторе квадратные, а гипотенуза всегда длиннее любого из катетов. Поэтому во избежании искажения размеров спрайта при повороте придётся "прорежать" линии, чтобы их длина по диагонали визуально соответствовала горизонтальной линии. При этом изображение спрайта, конечно, пострадает. Хотя, наверное, можно пойти по другому: добавлять точки по мере приближения к горизонтали.
Углов поворота, кстати, не может быть больше, чем число пикселей, лежащих на окружности, в которую вписан спрайт.
А выбор оси приращений и направления рисования в зависимости от положения ЛВУ, думаю, сходен с таковым для рисования окружностей.
Последний раз редактировалось Sergey; 12.08.2015 в 08:25.
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
Тут быстрее будет показать на примере
надо будет подумать.
наверное позже
под ТС конфу сделаю.
С уважением,
Jerri / Red Triangle.
1) координаты ЛВУ спрайта,
2) приращения по оси ординат для начальной левой точки каждой последующей горизонтальной линии спрайта относительно вышележащей линии,
3) приращения по оси ординат для каждой последующей точки горизонтальной линии спрайта,
4) Значение шага - число точек, после отрисовки которых пропускается точка в исходном спрайте.
Кстати о синусоиде - вспомни свою козявилку для Inferno. Мож, покатит?
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
Sergey
это все вычисляется, хотя да можно использовать и предрассчитанные данные
4 это лишнее
1 координаты угла
2 смещение при отрисовке
3 смещение при переходе на новую линию
а дальше берем точки и укладываем по порядку.
соответственно шагу.
С уважением,
Jerri / Red Triangle.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)