Day 29

Vortex

现在我们有火焰了,但是呢如果今天我的火焰想要有点这种效果呢。

感觉有个台风在那里影响火焰的走向。

所以我们就来模拟台风。

台风会有旋转的速度,而他这个速度会影响到 Particle 的行径方向。

而台风能够影响 Particle 的有 posspeed跟台风的size

struct vortex{ 

    glm::vec2 pos = {0.f, 0.f};
    float speed = 0.f;
    float scale = 0.f;
}

然後更改一下我们的 Particle 的更新方法。

float dx = particle.pos.x - vortex.pos.x;
float dy = particle.pos.y - vortex.pos.y;
float vx = -dy * vortex.turbulence.x;
float vy = dx * vortex.turbulence.y;
factor_ = 1.0f/ (1.0f + (dx*dx + dy*dy)/vortex.currentSize*0.1);

particle.pos.x += (vx - particle.currentVel.x) * factor_ + particle.currentVel.x * dt;
particle.pos.y += (vy - particle.currentVel.y) * factor_ + particle.currentVel.y * dt;

不过刚刚这个是静态的台风,如果希望台风也能随时间移动的话其实也不难。因为只要把台风当作另一个 Particle,跟着一起排放就好了。

动态台风我们会需要更改我一些code

factor_ = 1.0f/ (1.0f + (dx*dx + dy*dy)/(vortex.currentSize*0.1));
float lifeFactor = vortex.life/emitter.vortexMaxParticleLife;
factor_ *= (1-lifeFactor)*lifeFactor*4;

我们的台风也会随时间移动,而也会随时间消失,我们希望在台风快死亡时对 Particle 的影响减小。

左边那个就是有 动态 vortex 影响喔


<<:  [Day28]简单的contextmenu

>>:  Day27 firbase hosting

EP28 - 使用 Container Insights 监控 EKS 上的容器,并整合 Grafana 作为仪表板

在 EP25 和 EP26, 我们为 EKS 配置了 Grafana 和 Loki, 让我们可以透过...

[Shell] Common Shells: sh, csh, tcsh, ash, bash

sh Bourne Shell, developed by Steve Bourne @ AT&a...

JS this DAY64

this 看到这个是不是很头痛??? 但别怕 接着往下看 this 基本观念 每个执行环境都有属於自...

Day 30 QuickSight 功能介绍

在资料源设定完成後,接下来介绍如何绘制图表 资料源是代表着每个 User 购买数量前五多的商品,而这...

故事的例子

先说明:今天加班到现在,所以先写一点点,後续再补上。 前天的文章有一位读者提问: 如果将团队在组织中...