Simulation · Published v2
Neon Tidal Pool
Three impulses spread and interfere across a luminous lattice. Neighbor differences accelerate each cell and a second phase integrates displacement. Color shows signed displacement; this is a discrete wave experiment.
No preview
Inside this simulation
Every named building block is public and reusable. These are the exact versions published with this simulation.
Properties 1
Wave@hyle · v1Appearance 1
NeonWater@hyle · v1Source
property Wave { displacement: Float<0.0>; velocity: Float<0.0>; }
model Crest : Wave { displacement<1.0>; };
model Pool : Wave;
world { dimensions 3; cell Cube; neighborhood VonNeumann; }
// Integrate in two phases so position uses the newly computed velocity.
behavior WaveAcceleration for Wave { update { let laplace = sum n in neighbors[Wave] { n.displacement - self.displacement }; set self.velocity = clamp((self.velocity + laplace * 0.16) * 0.995, -0.5, 0.5); } }
behavior WaveIntegration for Wave { update { set self.displacement = clamp(self.displacement + self.velocity, -1.0, 1.0); } }
phase acceleration { run WaveAcceleration on Crest; run WaveAcceleration on Pool; }
phase integration { run WaveIntegration on Crest; run WaveIntegration on Pool; }
visual NeonWater for Wave { color { let lift = clamp(self.displacement * 4.0, -1.0, 1.0); rgba(0.20 + max(lift, 0.0) * 0.75, 0.40 + max(-lift, 0.0) * 0.58, 0.85 - max(lift, 0.0) * 0.30, 1.0) } }
visualize Crest with NeonWater;
visualize Pool with NeonWater;