Если изометрия, то тогда в любом случае спрайты нельзя вращать. Только отрисовка кадров.
Вид для печати
Ну вот что я имел ввиду
под вращением в реалтайме
спрайт размером 64х48
максимально быстрое вращение
потому и артефакты.
~120 000 тактов.
а можно спросить - под какую конфу написано? под тс или baseconf (atm3)?Цитата:
Ну вот что я имел ввиду
под вращением в реалтайме
и если можно, исходник?
jerri, по какому алгоритму делаешь там вращение?
Ну, это-же хаос:)
А если этот принцип применить для вращения, то:
1) Пиксели не теряются.
2) Можно поворачивать на любой угол.
Немножко математики
Матрица поворота:((c,s),(-s,c)), где: c==cos(alpha), s==sin(alpha)
Матрица сдвига по x:((1,k),(0,1))
Матрица сдвига по y:((1,0),(k,1)), где: k - коэффициент сдвига, он-же тангенс угла сдвига.
Три матрицы сдвига, которые обеспечивают поворот на угол:
((1,0) , (k1,1))*
((1,k2) , (0,1))*
((1,0) , (k1,1)), где k1==(c-1)/s, k2==s
Звёздочки - матричное умножение :), перемножьте эти 3 матрицы, и получите матрицу поворота.
Ну а сдвиг-то сделать легко, и пиксели никуда не теряются и ниоткуда не берутся (размер для пикселей обеспечить надо). Просто сдвигаем столбики/строчки.
Это только математика, вариантов её применения - масса.
[свернуть]
chaos zoomer основан на другом алгоритме и он неуместен к повороту спрайта.
В 3д играх на пц используются матричные преобразования, а для вращения используются кватернионы. С помощью них можно удобно складывать углы вращения и потом одним кватернионом производить сразу все повороты.
ZXMAK, ты это... пальцем покажи.
Кватерионы это же в трёхмерном пространстве, где 3 оси вращения. А разговор о 2d-движке, где одна ось. Зачем тут кватерионы?
Вращение битмапа на произвольный угол - это задача интерполяции функции от двух переменных. И она не имеет "правильного" решения, потому как значения исходной функции не заданы между пикселями исходного битмапа. Любой метод интерполяции будет исходить не из "настоящего" изображения, которое должно быть, а из каких-то допущений о том, каким оно могло бы быть. Отсюда неоднозначность.
Во-вторых, пиксельная графика обычно оптимизирована под конкретную сетку пикселей, так что, даже если бы непрерывная функция, соответствующая изображению, была известна во всех точках - попытка взять ее отсчеты после поворота приведет, как правило, лишь к посредственному результату, если речь идет о спрайтах с низким разрешением.
Поэтому вращать спрайты лучше вручную. Можно попытаться сначала их повернуть на PC с помощью фотошопа или другой аналогичной программы, и использовать результат такого поворота как ориентир для ручной прорисовки.