Equations
Node force
force = (node.strength · opacity) / r²,
r² = (x-nₓ)² + (y-nᵧ)²
Particle velocity (perpendicular)
Vₓ = -Δy · force, Vᵧ = Δx · force
Velocity with wind
Vₓ += windX · windStrength · k,
Vᵧ += windY · windStrength · k
k is a small scaling constant (e.g. 0.12)
Particle position update
x_new = x + (Vₓ / ||V||) · baseSpeed,
y_new = y + (Vᵧ / ||V||) · baseSpeed
Alpha decay
α = 1 - (life / maxLife)