粒子循环爆炸

Circular Explosion with Particles

本文关键字:循环 粒子      更新时间:2023-10-16

>我目前有一个用C++编写的粒子系统,我用它来创建每个有500个粒子的烟花。目前,我使用以下代码为每个粒子提供两个数字之间的随机速度来使它们爆炸:

vel = new glm::vec3[numParticles];
for (int i = 0; i < numParticles; i++){
        vel[i] = glm::vec3((rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f);
    }
这使得它们以

矩形爆炸,但我希望它们以圆形爆炸,就像真正的烟花爆炸一样。我似乎无法计算圆形爆炸的每个 X、Y 和 Z。有没有这方面的公式?

谢谢,康纳

规范化它。这使得粒子速度单位长度,这意味着它们将以大致的圆形模式爆炸。

vel = new glm::vec3[numParticles];
for (int i = 0; i < numParticles; i++){
        vel[i] = glm::normalize(glm::vec3((rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f, (rand() % 1500 - 750) / 10000.0f));
    }

我会使用球面坐标给它们一个随机的星等、θ和欧米茄。 然后,您可以将它们转换为XYZ。 这个网站应该有你需要的所有公式

http://mathworld.wolfram.com/SphericalCoordinates.html