From Quantum Double Slit · v2. Edit this definition in its source simulation.
Source
behavior XOdd for Quantum {
update when self.open > 0.5 && self.xEven == 1.0 {
let linked = (neighbors[Quantum, -X].open else 0.0);
let c = 1.0 + linked * (0.99500416527802571 - 1.0);
let s = linked * 0.09983341664682815;
let r = self.real * c - (neighbors[Quantum, -X].imag else 0.0) * s;
let i = self.imag * c + (neighbors[Quantum, -X].real else 0.0) * s;
set self.real = clamp(r, -2.0, 2.0);
set self.imag = clamp(i, -2.0, 2.0);
}
update when self.open > 0.5 && self.xEven == 0.0 {
let linked = (neighbors[Quantum, +X].open else 0.0);
let c = 1.0 + linked * (0.99500416527802571 - 1.0);
let s = linked * 0.09983341664682815;
let r = self.real * c - (neighbors[Quantum, +X].imag else 0.0) * s;
let i = self.imag * c + (neighbors[Quantum, +X].real else 0.0) * s;
set self.real = clamp(r, -2.0, 2.0);
set self.imag = clamp(i, -2.0, 2.0);
}
}Building blocks
These exact versions are included when you reuse this artifact.