is presently its sole maintainer,
You can support him:
Plan for today
Adding acceleration and taking it into account to compute new positions
Bouncing particles off the ground
Modeling loss of energy
We want our fountain to be more fountain-like
Writing special-purpose code to achieve the desired behavior
Considering the interactions among particles instead of simulating particles in isolation
Two raw categories of physics simulations: Eulerian and Lagrangian methods
Lagrangian: Simulation of the motion of particles through space
Eulerian: Simulation of density and mean velocity of particles at specific locations in space
Lagrangian methods are bad at handling density
Eulerian methods don't keep track of the properties of individual particles
We'll resort to a mixed Eulerian-Lagrangian method
We could use the density gradient from an Eulerian representation to compute the horizontal push of particles in the Lagrangian representation
Let's implement it
Drawing the density field
Dispersing particles taking into account cell density
Discussion of possible improvements to the simulation
Taking advantage of the density gradient to achieve better results
We still don't use the mean velocity of particles inside each cell
andsz_ Q: I suppose adding some friction to dP.x might help
braincruser Q: Try reducing the size of the individual cells
quikligames Q: The back of the head would make a better particle than the side of the head
pseudonym73 Q: If you're going to alter the GridScale, you probably need to scale Dc by it too.
ezioauditorerevs Q: Did you ever add a way to tell the music to shut off or did you just disabled it?
culver_fly Q: What would happen if the particles were spawned between two cells? Would that cause an effect where everything would just not bounce off each other anymore?
mr4thdimention Q: On API design: You recently emphasized "Write the usage code first" and then the implementation later. While compression oriented programming is about writing code first and then compressing it, pulling code into functions where necessary, allowing the API to evolve out of that process. They seem like two contradictory methods. Are they? How do you decide when you're using one or the other?
starchypancakes Q: Would it be possible to split the fluid computation across two frames. Like use the first frame to accumulate velocity and momentum changes and the second one to resolve them?
ezioauditorerevs Q: Does the size of the grid relative to each particle matter much?
culver_fly Q: (Referring to Q at 01:17:22) Say you're deciding whether to bounce the particles off based on the density now, then if the particles were spawned between 2 cells, wouldn't the density be halved and not bounce off anymore?
spaceghost2345 Q: Would simulated annealing work for this issue?
noxy_key Q: Doesn't writing usage code first imply simplicity in API calls? Doesn't this box you in when trying to create persistent things on the stack? All complex initializations for persistent objects have to be done somewhere. If done on the stack, how do you persist complex data structs without using static?
braincruser Q: Current simulation is in pixel space?
quatzequatel Q: Are pre-rendered effects viable?