效果图
心形爆炸(上升到一定高度后)的核心代码
/// --------------------------------------------------
/// @note 根据(单位圆的)角度计算笛卡尔坐标
float x = cos(ang); //coords of unit circle
float y = sin(ang);
/// 心形公式
y = y + abs(x) * sqrt( (8. - abs(x)) / 50.0 );
/// 心形速度向量,随着时间而变小
vec2 heart = vec2(x * x + y * y) * (0.4 / (t_i * sqrt(t_i))); /// 根据心形的当前速度和加速度、初始位置等更新粒子的位置
vec2 S = get_pos(heart, acc * ACC_RATIO, h_max, t_i - (t_up), ang);
/// --------------------------------------------------
首先根据心形公式(如下图所示)可以得到爆炸时每个粒子的初始位置