Фейерверк
Опубликовано 21 января, 2023 - 18:30 пользователем Цыганов Иван
Для разброса частиц по окружности, использовал полярную систему координат: задавал скорость и угол полета.
Параметры частиц:
constructor(x, y) { this.cur_x = x // текущие координаты частицы this.cur_y = y this.cent_x = x // центр салюта this.cent_y = y this.speed = Math.random() * 10 + 2 // скорость частицы в интервале [2, 12] this.angle = Math.round(Math.random() * 72) * 5 // направление скорости в виде угла 0 до 2pi с шагом pi/36 this.color = 'red' this.state = 0 // состояние частицы, закончила ли она свой полёт this.x_speed = this.speed * Math.cos(rad(this.angle)) // скорости по осям, перевод из полярной системы координат this.y_speed = this.speed * Math.sin(rad(this.angle)) }
Цвет частицы задавал в зависимости от расстояния до центра салюта:
this.color = `rgb(255,${distance(this.cent_x, this.cent_y, this.cur_x, this.cur_y)/350 * 255},0)`
Исходники: