Показать сообщение отдельно
  #3 (permalink)  
Старый 26.03.2018, 01:02
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

На такие вопросы отвечает профилирование приложений загугли посмотри на ютубе.

но setInterval(rotateFigure,1) - не лучшее решение для анимации.
и ужасно много ненужных и часто повторяющихся вычислений.
К примеру функция центр в которой много вычислений цикл по вершинам вызывается много раз за одну анимацию в этом нет никакой необходимости т.к. фигура не двигается и ее центр не изменяется.
Еще любопытный факт что если сдвинуть фигуру на 100 пикселей вправо то и ее центр также сдвинется вправо на 100 пикселей и совсем не обязательно пересчитывать все вершины и искать их центр.
Такие вычисления происходят на каждой отрисовке кадра и для каждой фигуры.
Тригонометрические функции так же не лучший подход для вычислений вращения фигуры. Обычно в анимации используют комплексные числа матрицу поворота для простых вращений ну или же матрицу трансформации для более сложных фращений перемещений или масштабирования.
Просто работа с комплексными числами сводится к простым арифметическим операциям над матрицами что для компьютера гораздо проще чем расчеты тригонометрических функций.

Приведенный код простой и не должен притормаживать даже на слабых устройствах вроде телефонов.
Проблема в том что анимации не выглядит плавной =). а это уже отдельная тема
Ответить с цитированием