Таким образом, есть короткий ответ и длинный ответ.
Короткий ответ заключается в том, что вращение растровых изображений и холстов - это обычная функция, обычно называемая «вращением» и обычно принимающая точку, вокруг которой вращается.
Более длинный ответ состоит в том, что вся 2D и 3D графика превращаются в уловку матричной алгебры.Для каждой точки: new_x = factor_1 * old_x + factor_2 * old_y + factor_3 ...
Эти факторы работают очень хорошо в матрице, и именно поэтому матрица стала настолько популярной.Есть крутой трюк, в котором вы объединяете преобразования в единое целое, поэтому вы можете сформулировать свои проблемы следующим образом: «возьмите старый холст, переместите его так, чтобы точка касания была источником, поверните его, а затем переместите так, чтобы источник вернулся втронутая точка. "Или Matrix m = new Matrix (). PostTranslate (-touch_x, -touch_y) .postRotate (360/20) .postTranslate (touch_x, touch_y), чтобы каждый раз поворачивать его на 1/20 окружности.Затем вы передаете матрицу любой функции, которая принимает матрицу «преобразования».
Круто то, что вы делаете все вычисления для этой матрицы только один раз, а затем используете те же 4 умножения для каждой точки икуча добавлений.На самом деле, это настолько распространено, что видеокарты и набор инструкций Intel делают это аппаратно.Вы также можете просто умножить полученное изображение снова на ту же матрицу, чтобы получить следующую.
Теперь, если вы действительно просите взломать графику, как мне сделать это в каком-то безумно быстром коде сборки безпамять, уловка состоит в том, чтобы выбирать вращения и ошибки в маленькие цепочки, где вам не нужен буфер.Например, простой поворот на 90 градусов сначала поменяет четыре угла, а затем поменяется местами (верхний левый + 1 левый переходит в верхний правый + 1 нисходящий, который переходит в нижний правый - 1 левый, который переходит в нижний левый - 1 нисходящий, которыйвозвращается в верхний левый + 1).Эти приемы обычно имеют значение только для ограничений памяти.
Слишком много информации.Расскажите подробнее о своей проблеме.