粒子循环爆炸
Circular Explosion with Particles
>我目前有一个用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
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 使用 std::vector<Particle> 粒子;函数 .at() 不能与迭代器一起使用,它作为 for 循环中的参数
- 粒子循环爆炸
- 带有嵌套循环的矢量粒子-未检测到碰撞
- 如何在迭代(for循环)求解器中更新粒子位置
- 如何使用CUDA实现2-for粒子交互循环,以及由此产生的复杂性是什么