Я использую getImageData и putImageData для рисования на холсте из буферного холста. Я использую эти методы, потому что у меня есть большое количество частиц, и они обеспечивают наилучшую производительность. Теперь я хотел бы добавить вращение частиц, но у меня с этим проблемы. Вот jsfiddle, который использует матрицу преобразования для вращения. Как вы можете видеть на картинке (или скрипке), в полученном изображении есть дыры, которых я ожидал от использования этой матрицы.
nx = ~~ (xx * Math.cos(angle) + yy * Math.sin(angle) + cx);
ny = ~~ (xx * Math.sin(angle) - yy * Math.cos(angle) + cy);
Но я не знаю, как сделать это лучше, особенно когда я ищу эффективное решение?
демонстрация jsfiddle
Изображение - квадрат после поворота (квадрат используется как простое тело):
В настоящее время моя резервная копия представляет собой процедурно сгенерированную анимацию спрайтов, которая заранее подготовлена со стандартными состояниями холста: сохранить -> перевести -> повернуть -> восстановить.
Большое спасибо за любые указания, которые вы можете мне дать.