From Quantum Double Slit · v2. Edit this definition in its source simulation.
Source
behavior Absorb for Quantum {
update when self.open > 0.5 {
let p = self.real * self.real + self.imag * self.imag;
let lost = p * (1.0 - self.absorb * self.absorb);
set self.received = clamp(self.received + self.detector * lost, 0.0, 2.0);
set self.sink = clamp(self.sink + (1.0 - self.detector) * lost, 0.0, 2.0);
set self.real = clamp(self.real * self.absorb, -2.0, 2.0);
set self.imag = clamp(self.imag * self.absorb, -2.0, 2.0);
}
}Building blocks
These exact versions are included when you reuse this artifact.