Unlike a static Punnett square, this scene runs the actual cellular process continuously: each parent's homologous chromosome pair (two rods carrying one allele sphere each) splits during meiosis, sending one allele into each of several floating gametes. A gamete from the egg cloud and one from the sperm cloud drift together, and when a pair meets it fuses — the two allele spheres merge into a zygote whose colour is fixed by the combined genotype, then drifts off to join the running tally. Because fusion is driven by proximity in real 3D space rather than an instant lookup, the same underlying probabilities from the Punnett square emerge gradually from repeated physical events instead of being computed in one step.
meiosis: {A,a} pair → 2 gametes, 1 allele each (50/50)
fertilization: gamete(egg) + gamete(sperm) → zygote
zygote genotype = sorted(allele_egg, allele_sperm)
- Genotype — sets each parent's own allele pair, exactly as in the 2D Punnett-square version of this simulation — try Aa × Aa for the classic 25% recessive-disease risk.
- Fertilizations / second — how often a new gamete pair is allowed to fuse; slow it down to watch a single meiosis-to-zygote event, or speed it up to build a large sample fast.
- Gamete cloud size — how many egg/sperm gametes drift in the scene at once; a bigger cloud means more simultaneous fusion opportunities and a faster-filling tally.
- Zygote colour — blue = AA, amber = Aa (carrier), red = aa (affected) — the same encoding as the 2D version, so results from both simulations are directly comparable.
Real-world relevance: this is a physical, not just statistical, picture of why the Punnett square works — meiosis genuinely does split each parent's allele pair 50/50 into gametes, and fertilization genuinely is a random pairing of one gamete from each parent, which is exactly why the 1:2:1 genotype ratio for a carrier × carrier cross holds up across millions of real human conceptions.