Andrew771,
Я имел ввиду -- зачем считать каждую линию, да ещё дважды? Давай представим спрайт в виде параллельных линий. Тогда мы можем его рисовать линия за линией. Каждая линия, естественно, состоит из точек. Каждая последующая смещена относительно предыдущей, следовательно, чтобы поставить следующую точку достаточно знать на сколько нужно сместиться по у при смещении по х на 1 пиксель. Это смещение равно тангенсу угла наклона линии к горизонтали. Поскольку все линии параллельны, то у них один и тот же угол наклона, мы можем его посчитать один-единственный раз. А дальше прибавлять смещение, и если результат получится больше 1, уменьшать его на 1. Угол наклона -- это и есть угол поворота спрайта относительно начального положения. Он известен, берём тангенс из таблицы.
Для перехода к следующей строке нужно знать смещение её начала относительно предыдушей линии. Это есть котангенс нашего угла поворота. Тоже берём из таблицы (быстрее если у нас две таблицы, но можно обойтись и одной, сэкономив немного памяти).
Т. е. сложность - 2 извлечения из таблицы + суммирование и проверка для каждого пикселя.




Ответить с цитированием