---
title: "De wetenschap van het simuleren"
description: "Het onderzoek achter de simulatie in Professor Oops: wat we uit elke bron haalden, wat we afwezen en waarom, en elke bron op een rij."
source_name: "Game Tailors"
source_url: "https://professoroops.com/binnenin/onderzoek-simulatie/"
site_home: "https://professoroops.com/"
source_description: "De teken-app waarin het papier echt is. Geen reclame. Geen accounts. Geen persoonsgegevens: alleen anonieme tellingen, en die kun je uitzetten."
locale: "nl"
legal:
  - "Game Tailors · Schieweg 15Y-40, 2627 AN Delft (NL)"
  - "KvK 92437702 · VAT NL866044474B01"
  - "info@gametailors.com · +31 6 4227 5919"
copyright: "© 2026 Game Tailors"
published_at: "2026-11-11T11:18:23.789Z"
modified_at: "2026-11-11T11:18:23.789Z"
---

# De wetenschap van het simuleren

## Gebouwd op het onderzoek, teruggebracht tot wat een kind kan zien

Professor Oops begon met een leeslijst: hoe onderzoekers van computeranimatie voorkomen dat gesimuleerde wind uit de hand loopt, waarom opgedroogde waterverf een donkere rand heeft, hoe een forensisch onderzoeker de hoek van een vallende druppel afleest. We hielden de effecten die mensen herkennen en lieten weg wat een tablet te veel kost. Deze pagina noemt elke bron, wat we eruit haalden, en wat we afwezen en waarom.

[Voor technici](<#hood-engineers>)

![Geschilderde illustratie van de schilder die over zijn baard strijkt terwijl hij een gloeilamp in zijn hand bestudeert, met een vergrootglas en een waskrijtje op tafel](<https://professoroops.com/_assets/entity_fPSmZk7fTNdZ8g5RRilP.webp>)

## Het spel houdt wat mensen herkennen, zoals de donkere rand van opgedroogde waterverf, en slaat precisie over die niemand ziet

De simulatie van het spel begon in oktober 2026 met twee onderzoeksnotities. Die gingen door de literatuur over computergraphics en natuurkunde met één uitgesproken regel: geloofwaardig in plaats van natuurkundig juist, en de goedkoopste techniek die de kenmerken houdt die mensen herkennen.

Een donkere rand aan een opgedroogde laag waterverf is zo’n kenmerk. Net als de manier waarop een plas terugloopt in het spoor dat een vinger achterlaat, of hoe een druppel die schuin landt een lange vlek maakt. De precieze snelheid van een rimpeling op drie millimeter water is dat niet, in elk geval niet voor een kind met een tablet.

Het onderzoek kreeg uiteindelijk drie verschillende taken. Een paar methoden gingen bij naam de code in. Veel meer vormde het idee van een systeem en werd daarna op een eenvoudigere manier gebouwd. En een deel van het bekendste werk werd gelezen en bewust weggelaten. Elke bron op deze pagina heeft een van vier labels:

- **Direct toegepast**: de code noemt de methode en volgt die
- **Vormde het ontwerp mee**: het bepaalde een besluit, gebouwd of niet
- **Later gevonden**: de code gebruikt een klassieke naam; het artikel erachter staat erbij om te controleren
- **Nog niet gebruikt**: sterk werk waar we nog niet uit hebben geput

Het derde label is er uit eerlijkheid. De code gebruikt klassieke namen zoals multigrid, overrelaxatie, vorticity confinement, het koffievlekeffect, marangonistroming en de wet van Poiseuille zonder iemand te citeren. We noemen de artikelen achter die namen zodat een technicus ons kan controleren, en we beweren niet dat we ze hebben gevolgd.

Gebouwd op het onderzoek, teruggebracht tot wat een kind kan zien

Voor technici

### Gebouwd op het onderzoek, teruggebracht tot wat een kind kan zien

Twee methoden zijn bij naam toegepast: de stable fluids van Stam \(1999\) voor de wind, met de drukoplossing herbouwd als een spiegelexacte afgeschermde multigrid, en de forensische regel W/L = sin α voor druppelvlekken. De meeste bronnen vormden een eenvoudigere eigen regel in plaats van gevolgd te worden: de waterverf van Curtis et al., de vezelruis van MoXi, de splitsing in elementen × materialen. Sommige bekende werden bewust niet gebouwd: Kubelka-Munk, Mixbox, lattice Boltzmann, oplossers op de GPU, diffusiebegrensde aggregatie. Hieronder 56 bronnen, elk gelabeld naar wat we er echt mee deden.

[Onder de motorkap: hoe elke bron werd gecontroleerd](<#hood-how-we-read>)

Hoe elke bron werd gecontroleerd

Onder de motorkap

### Hoe elke bron werd gecontroleerd

Elke vermelding werd gecontroleerd tegen een registratie van buiten: het Crossref-record van de DOI, de pagina van de uitgever of de projectpagina. Vier werden helemaal gelezen: Curtis et al. 1997, Stam 2003, Fedkiw et al. 2001 en O’Brien & Hodgins 1995. De rest werd gecontroleerd op record en samenvatting, wat bevestigt dat de bron bestaat en zegt wat wij zeggen; het betekent niet dat het hele artikel is nagelopen.

Elke relatie werd daarna tegen de code gecontroleerd. “Direct toegepast” vraagt dat de code de methode noemt en volgt, en daar komen maar twee bronnen door. Een aanbeveling in de onderzoeksnotities van het project telt als “vormde het ontwerp mee”, ook waar de code daarna een andere kant op ging.

Er is geen eigen onderzoek naar nauwkeurigheid. Geen test vergelijkt de lucht, het water, de verf, het vuur of de zeep met gegevens uit een artikel hier. De tests leggen richting, behoud en interne samenhang vast. De ene vergelijking met echte rekenkunde is de elektriciteit: de wet van Ohm tot op drie cijfers, gecontroleerd door een test.

Hoe elk van de 56 bronnen werd gebruikt

2 bronnen werden direct toegepast, 28 vormden het ontwerp mee, 13 werden later gevonden en 13 zijn nog niet gebruikt.

Gegevenstabel

Hoe elk van de 56 bronnen werd gebruikt

|  | bronnen |
| --- | --- |
| Toegepast | 2 |
| Vormde | 28 |
| Later gevonden | 13 |
| Nog niet gebruikt | 13 |

Bron: Geteld uit de bronnenlijst onderaan deze pagina. “Vormde het ontwerp mee” omvat 16 bronnen waarvan de methode werd overwogen en niet gebouwd.

## De wind is een vloeistofoplosser uit de computeranimatie, herbouwd voor een pagina die je van boven ziet

Houd een föhn boven bloem en de bloem wordt van zijn hoopje geblazen en komt verder weg neer. Die wind komt van “stable fluids” <sup>[Stam 1999](<https://professoroops.com/binnenin/onderzoek-simulatie/#stam-1999>)</sup>, de enige vloeistofmethode in het spel die direct is toegepast. Hij is gemaakt voor animatie, niet voor technische nauwkeurigheid, en zijn grote pluspunt is dat hij niet kan ontsporen, hoe groot de tijdstap ook is. Elke stap verplaatst de wind langs zichzelf door terug te kijken naar waar elk stukje lucht vandaan kwam, en haalt dan het deel van de stroming weg dat zich ophoopt.

We veranderden hem op drie plekken, elk met een reden. Van boven gezien zit lucht niet gevangen in het vlak van het papier: een ventilator die naar beneden blaast is een bron, een vuur dat lucht omhoogzuigt is een put. Dus wordt maar een deel van de correctie toegepast, en de druk is “afgeschermd”: zijn bereik ebt over een korte afstand op het papier weg. Er is geen viscositeitsstap, alleen een zachte algemene demping. En kleine wervelingen worden in leven gehouden door vorticity confinement, een techniek die de code bij naam noemt; die gaat terug op Steinhoff en Underhill <sup>[Steinhoff 1994](<https://professoroops.com/binnenin/onderzoek-simulatie/#steinhoff-1994>)</sup> en kwam de graphics in met Fedkiw, Stam en Jensen <sup>[Fedkiw 2001](<https://professoroops.com/binnenin/onderzoek-simulatie/#fedkiw-2001>)</sup>.

De drukoplossing heeft een eigen verhaal. De eerste lucht gebruikte een vast aantal Gauss-Seidel-rondes, hetzelfde soort relaxatie als het korte recept van Stam voor games <sup>[Stam 2003](<https://professoroops.com/binnenin/onderzoek-simulatie/#stam-2003>)</sup>. We ontdekten dat die scheef trok: tocht blies ongeveer een vijfde harder de ene kant op dan de andere, en het midden van een windvlaag lag een halve cel lager en naar rechts van waar hij werd geblazen. Gauss-Seidel werkt cellen in leesvolgorde bij, elk met buren die in dezelfde ronde al zijn bijgewerkt, dus het antwoord hangt af van de hoek waar je begint.

Die ontdekking was van ons, niet uit een artikel. De oplossing was een klassieke methode, zorgvuldig gebruikt. Multigrid <sup>[Brandt 1977](<https://professoroops.com/binnenin/onderzoek-simulatie/#brandt-1977>), [Briggs 2000](<https://professoroops.com/binnenin/onderzoek-simulatie/#briggs-2000>)</sup> strijkt glad op het fijne rooster en lost wat overblijft op op grovere roosters, waar fouten die de hele pagina beslaan kort van bereik en goedkoop te verwijderen worden. Onze rondes zijn Jacobi-rondes, elke cel uit de ronde ervoor, en de buren van een cel worden in paren opgeteld, zodat wind die links-rechts gespiegeld is een correctie krijgt die tot op de bit gespiegeld is.

De GPU-route in onze notities <sup>[Harris 2004](<https://professoroops.com/binnenin/onderzoek-simulatie/#harris-2004>), [WebGL fluid](<https://professoroops.com/binnenin/onderzoek-simulatie/#paveldogreat>)</sup> werd niet genomen. De lucht draait op de CPU, in een WebAssembly-kernel in een Web Worker, en die kernel komt tot op de bit overeen met de gewone JavaScript-versie. Jacobi werd daar gekozen om de symmetrie, niet voor parallelle hardware.

[Onder de motorkap: de lucht, naast het papier](<#hood-air>)

De lucht, naast het papier

Onder de motorkap

### De lucht, naast het papier

Het luchtrooster is grover dan het papierrooster: 64 × 48 luchtcellen op de computer, 36 × 27 op de telefoon. De snelheid zit in het midden van de cellen, en de wind wordt meegevoerd door een semi-Lagrangiaans terugspoor, zoals in de methode van Stam.

∇²*p* − σ *p* = ∇·**u**

Een afgeschermde Poisson-vergelijking, met een kleine afschermterm σ.

- **Deel van de projectie**: maar een deel van de drukgradiënt wordt uit de wind gehaald. De wind is niet onsamendrukbaar, en dat is ook niet de bedoeling.
- **Niveaus**: de afscherming groeit op elk grover rooster, dus het grover maken stopt zodra die overheerst, na een paar niveaus. Roosters met oneven zijden, zoals dat van de telefoon, worden op hun eigen manier grover.
- **Rondes**: gewogen Jacobi-gladstrijken, volledige multigrid met V-cycli; de buren van een cel worden in gespiegelde paren opgeteld.
- **Demping**: een vast verval per stap in plaats van een diffusiestap.
- **Vorticity confinement**: een kracht die bestaande wervelingen opzwiept, alleen ingeschakeld als de wind snel is, met kleine willekeurige wervels in sterke vlagen.
- **Bitexact**: enkele precisie, afgerond na elke bewerking, in een vaste volgorde, zodat de WebAssembly-tweeling tot op de bit overeenkomt met de JavaScript. Automatische tests controleren zowel de tweeling als de spiegelsymmetrie.

Probeer het: laat Gauss-Seidel tegen multigrid racen De eigen regel van het spelBeide vakken lossen dezelfde druk op voor één ventilator op het luchtrooster van 64 × 48 van de computer, vanuit niets, en besteden evenveel werk. Het multigridvak is de oplosser van het spel, stap voor stap: eerst het grofste rooster, dan één V-cyclus per niveau, dan meer V-cycli. Het Gauss-Seidel-vak draait de gewone methode op dezelfde vergelijking, één ronde tegelijk. Tik op een vak om de ventilator te verplaatsen, of druk op **Verplaats de ventilator**. **Waar je op let:** multigrid laat bijna meteen een grof antwoord zien en zijn volledige antwoord na ongeveer vijf rondes werk, al dicht bij het juiste; Gauss-Seidel kruipt naar buiten, en zijn midden \(het kruisje\) ligt naast dat van de ventilator \(de ring\). Zet de afscherming uit om te zien hoe langzaam het bereik van één ronde zich over een hele pagina verspreidt.

![Twee drukvelden die zich rond een ventilator vullen: gewone Gauss-Seidel in het ene vak, de multigrid van het spel in het andere](<https://professoroops.com/_assets/entity_iOFym6ulpqSXBoO2hnjl.png>)

- Gauss-Seidel
- Multigrid \(het spel\)
- ring: de ventilator · kruisje: het midden van het antwoord

AfschermingAan \(het spel\)UitVolgorde van de rondesLeesvolgordeHeen, dan terug

Snelheid7 rondes/s

werk tot nu toe—

Gauss-Seidel—

Multigrid—

V-cycli op het fijnste rooster—

Gauss-Seidel zit ernaast met—

multigrid zit ernaast met—

midden van Gauss-Seidel verschoven, opzij—

omlaag—

niveaus—

Hoe ver de druk van het spel van het precieze antwoord mag liggen“Precies” betekent de afgeschermde vergelijking, en dat is een keuze, geen natuurkunde. Een traag apparaat zonder de WebAssembly-kernel neemt genoegen met het goedkopere antwoord.

Eén V-cyclus vanuit niets mag tot 35% ernaast zitten; de volledige multigrid van het spel wordt binnen 12% gehouden.

Gegevenstabel

Hoe ver de druk van het spel van het precieze antwoord mag liggen

|  | toegestane fout |
| --- | --- |
| 1 V-cyclus vanuit niets | 35% |
| Volledige multigrid \(het spel\) | 12% |

Bron: Grenzen die een automatische test eist, tegen een lange reeks V-cycli als het precieze antwoord.

### Wat we hierna zouden lezen

Drie werken waar we nog niet uit hebben geput, zouden de eerste toetsen van deze keuzes zijn. McAdams, Sifakis en Teran <sup>[McAdams 2010](<https://professoroops.com/binnenin/onderzoek-simulatie/#mcadams-2010>)</sup> is multigrid voor vloeistoffen in de graphics, het naaste eerdere werk bij onze oplosser. Het leerboek van Bridson <sup>[Bridson 2016](<https://professoroops.com/binnenin/onderzoek-simulatie/#bridson-2016>)</sup> zou vraagtekens zetten bij onze snelheden in het midden van de cellen in plaats van op de celwanden. Het artikel van Chorin uit 1968 <sup>[Chorin 1968](<https://professoroops.com/binnenin/onderzoek-simulatie/#chorin-1968>)</sup> is een voorloper van de projectiestap zelf.

## Plassen stromen door virtuele buizen, met echte zwaartekracht die wordt afgeremd om stabiel te blijven

volgende update In het uitgebrachte spel vlakt staand water zich in een gewoon tempo uit, zonder vaart. In de volgende update blijft het gaan als het eenmaal beweegt. Trek een vinger door een plas en het water loopt meteen terug in het spoor; een dun laagje beweegt nauwelijks.

De techniek heet “virtuele buizen”. Elke cel is met een buis verbonden met zijn vier buren. Wat een buis deze stap draagt, is wat hij de vorige stap droeg, versneld door hoeveel hoger het water aan één kant staat. Het idee gaat terug op O’Brien en Hodgins <sup>[O'Brien 1995](<https://professoroops.com/binnenin/onderzoek-simulatie/#obrien-1995>)</sup>, en kwam bij ons via het werk over hydraulische erosie van Mei, Decaudin en Hu <sup>[Mei 2007](<https://professoroops.com/binnenin/onderzoek-simulatie/#mei-2007>)</sup> en het ondiepe water op kleine schaal van Dagenais et al. <sup>[Dagenais 2018](<https://professoroops.com/binnenin/onderzoek-simulatie/#dagenais-2018>)</sup>. Dat laatste gebruikt ook cellen van een halve millimeter en behandelt viscositeit impliciet, net als onze code, al is onze viscositeitsterm apart afgeleid, uit de wet van Poiseuille <sup>[Sutera 1993](<https://professoroops.com/binnenin/onderzoek-simulatie/#sutera-1993>)</sup>. Water als hoogteveld gaat nog verder terug, op Kass en Miller <sup>[Kass 1990](<https://professoroops.com/binnenin/onderzoek-simulatie/#kass-1990>)</sup>.

De regel gebruikt echte constanten: de zwaartekracht op haar ware 9,81 m/s², geschaald naar cellen van een halve millimeter, en de echte viscositeit van water van 1 mm²/s. Daar loopt hij ook tegen zijn grens aan. Een golf op 3 mm echt water loopt met 17 cm/s, tien cellen in één stap, sneller dan een stap kan dragen en stabiel blijven. Dus de duw is begrensd. De grens wint in de praktijk altijd, en golven in het spel lopen met ongeveer 7 mm/s, zo’n 25 keer langzamer dan echte. De regel heeft de juiste vorm en echte constanten, en wordt bewust afgeremd.

[Onder de motorkap: één buis, per ronde van 1/30 s](<#hood-water>)

Eén buis, per ronde van 1/30 s

Onder de motorkap

### Eén buis, per ronde van 1/30 s

Elke buis onthoudt zijn stroming van de vorige ronde. Er werken twee dingen op. Het verschil in wateroppervlak tussen zijn twee cellen duwt hem door, met echte zwaartekracht geschaald naar de celgrootte. De viskeuze weerstand van een dun laagje houdt hem tegen, uit de wet van Poiseuille met de echte viscositeit van water, impliciet toegepast zodat dikke vloeistoffen hem niet instabiel kunnen maken. De duw wordt daarna onder een stabiliteitsgrens gehouden, en heel kleine hoogteverschillen worden met rust gelaten.

Alle uitstroom van een cel samen blijft onder het water dat hij heeft, zodat geen kolom negatief wordt, zoals bij O’Brien & Hodgins \(die de uitstroom op dezelfde manier schalen, met acht buren in plaats van vier en zonder viskeuze rem\). Stroming die op een vlak of oplopend oppervlak stuit, vertraagt. Een heel dun laagje stroomt helemaal niet, en aan de rand van een plas geldt nog de oude regel van uitvlakken.

Bij de ronde van 1/30 s van het spel zou echte zwaartekracht op elke diepte waar water stroomt harder duwen dan de grens, dus elke stromende cel is begrensd. Een automatische test meet het resultaat: het spoor van een handpalm door een plas is binnen een seconde terug op de helft van de diepte van de plas, waar de regel van uitvlakken na vijf seconden 5% terug was; het spoor van een vingertop sluit meteen achter hem.

Probeer het: trek een vinger door een plas De eigen regel van het spelvolgende update Een plas van 6 cm × 4 cm en ongeveer 1 mm diep, met de cellen van een halve millimeter van het spel, in de 30 rondes per seconde van het spel. Elke tweeënhalve seconde trekt een vingertop erdoorheen; trek er ook zelf je vinger door, of druk op **Trek een vinger erdoor**. **Waar je op let:** met buizen vult het spoor zich bijna meteen weer. Schakel naar de uitgebrachte regel en hetzelfde spoor vult zich veel langzamer. Maak de vloeistof dikker en de buizen verliezen hun vaart. Lage richels blijven liggen: een oppervlak dat tussen buren bijna vlak is, wordt met rust gelaten. Buizen verplaatsen alleen water, dus het totaal blijft gelijk.

![Een ondiepe plas van boven gezien; een vingertop trekt er een spoor door en het water loopt terug](<https://professoroops.com/_assets/entity_p4OLHgZLEeLWzIv2SWUz.png>)

RegelBuizen \(volgende update\)Uitvlakken \(uitgebracht\)

Dikte ν1 mm²/s

laatste spoor bijgevuld—

water op het vel—

snelste buis—

stromende cellen op de duwgrens—

Echte zwaartekracht zou plaswater hard duwen; een stabiliteitsgrens houdt het tegenDe twee lijnen gaan uit elkaar bij ongeveer 0,08 mm, onder de diepte waarop water begint te stromen, dus elke stromende cel is begrensd.

Uit echte zwaartekracht klimt de duw per ronde van ongeveer 0,003 bij 0,03 mm tot meer dan 10 bij 1,5 mm; het spel houdt hem vanaf ongeveer 0,08 mm op 0,2.

- g·dt²·h·keep, uit echte g en ν
- wat het spel gebruikt, begrensd

Gegevenstabel

Echte zwaartekracht zou plaswater hard duwen; een stabiliteitsgrens houdt het tegen

| waterdiepte \(mm\) | g·dt²·h·keep, uit echte g en ν | wat het spel gebruikt, begrensd |
| --- | --- | --- |
| 0,03 | 0,01167 | 0,01167 |
| 0,0337 | 0,01644 | 0,01644 |
| 0,0378 | 0,02316 | 0,02316 |
| 0,0424 | 0,03259 | 0,03259 |
| 0,0475 | 0,04583 | 0,04583 |
| 0,0533 | 0,06437 | 0,06437 |
| 0,0599 | 0,09027 | 0,09027 |
| 0,0672 | 0,1264 | 0,1264 |
| 0,0754 | 0,1765 | 0,1765 |
| 0,0846 | 0,246 | 0,2 |
| 0,0949 | 0,3415 | 0,2 |
| 0,1064 | 0,4723 | 0,2 |
| 0,1194 | 0,65 | 0,2 |
| 0,134 | 0,8895 | 0,2 |
| 0,1504 | 1,209 | 0,2 |
| 0,1687 | 1,63 | 0,2 |
| 0,1893 | 2,177 | 0,2 |
| 0,2124 | 2,878 | 0,2 |
| 0,2383 | 3,763 | 0,2 |
| 0,2674 | 4,86 | 0,2 |
| 0,3 | 6,196 | 0,2 |
| 0,3366 | 7,796 | 0,2 |
| 0,3777 | 9,68 | 0,2 |
| 0,4238 | 11,87 | 0,2 |
| 0,4755 | 14,37 | 0,2 |
| 0,5335 | 17,21 | 0,2 |
| 0,5986 | 20,4 | 0,2 |
| 0,6716 | 23,97 | 0,2 |
| 0,7536 | 27,94 | 0,2 |
| 0,8455 | 32,34 | 0,2 |
| 0,9487 | 37,23 | 0,2 |
| 1,0644 | 42,65 | 0,2 |
| 1,1943 | 48,66 | 0,2 |
| 1,3401 | 55,34 | 0,2 |

Bron: Berekend uit echte zwaartekracht, de echte viscositeit van water en de grens van het spel, bij de ronde van 1/30 s van het spel.

### Ketchup houdt zijn vorm door een drempel, niet door een wet voor zwichtspanning

Een hoopje ketchup blijft een hoopje; verf vloeit uit. In het echt is dat een zwichtspanning: de pasta stroomt pas als hij hard genoeg wordt geduwd. Smeringstheorie voor zulke dunne “Bingham”-lagen <sup>[Liu 1989](<https://professoroops.com/binnenin/onderzoek-simulatie/#liu-1989>)</sup> geeft een stroom die afhangt van diepte en helling, en onze onderzoeksnotitie schreef die uit. De code doet iets veel eenvoudigers. Pasta stroomt alleen naar een buur waar zijn oppervlak meer dan een drempel per materiaal hoger staat, en dan in verhouding tot het teveel. De diepte doet niet mee. De code noemt het “Bingham-achtig”, en dat is het eerlijke woord.

Twee andere artikelen vormden de smurrie op dezelfde manier, als ideeën. Het smelten en stromen van Carlson et al. <sup>[Carlson 2002](<https://professoroops.com/binnenin/onderzoek-simulatie/#carlson-2002>)</sup> stond op de leeslijst, en we gebruikten niets van de methode. Onze smurrie stroomt gewoon minder naarmate er meer van is opgesteven. Sumner, O’Brien en Hodgins <sup>[Sumner 1999](<https://professoroops.com/binnenin/onderzoek-simulatie/#sumner-1999>)</sup> duwden zand, modder en sneeuw opzij als hoogtekolommen en lieten steile kolommen inzakken; ons wegschuiven en inzakken doet hetzelfde zonder dat er iets verloren gaat, al wordt geen van hun parameters gebruikt. Opgehoopte korrels lawinen voorbij een vaste stijging per cel, uit dezelfde familie drempelregels als het zandhoopmodel van zelfgeorganiseerde kritikaliteit <sup>[Bak 1987](<https://professoroops.com/binnenin/onderzoek-simulatie/#bak-1987>)</sup>.

[Onder de motorkap: hoe ver de smurrie van Bingham af staat](<#hood-goop>)

Hoe ver de smurrie van Bingham af staat

Onder de motorkap

### Hoe ver de smurrie van Bingham af staat

De smeringsstroom uit de notitie, niet gebouwd:

*q* ∝ \(*h* − *h*<sub>0</sub>\)² \(2*h* \+ *h*<sub>0</sub>\),   *h*<sub>0</sub> = τ<sub>y</sub> / \(ρ *g* \|∇*s*\|\)

Wat het spel in plaats daarvan doet: elk materiaal heeft een eigen zwichtdrempel en een eigen beweeglijkheid. Pasta stroomt alleen naar een buur waar de stap in het oppervlak groter is dan de zwichtdrempel, in verhouding tot het teveel, en een materiaal dat deels is opgesteven, beweegt minder. Ketchup heeft een hoge drempel en een lage beweeglijkheid; verf andersom. Een automatische test legt vast dat dunne verf verder uitvloeit dan ketchup.

Korrels hebben een eigen hellingshoek, met behoud van volume. Een andere test controleert dat zand zakt tot zijn hoek en zout steiler blijft staan.

## Waterverf droogt op met een donkere rand, een idee uit een klassiek onderzoeksartikel op een goedkopere manier gedaan

Strijk een laag waterverf op het papier, laat hem drogen, en zijn rand wordt donkerder dan zijn midden. Laat schoon water in een drogende laag vallen en het duwt de kleur naar buiten tot een bloem. Die kenmerken komen meer dan uit welk ander artikel ook uit één artikel: “Computer-Generated Watercolor” van Curtis, Anderson, Seims, Fleischer en Salesin <sup>[Curtis 1997](<https://professoroops.com/binnenin/onderzoek-simulatie/#curtis-1997>)</sup>. Dat gaf ons het denkmodel: water op het vel, water in de vezels, pigment dat naar de randen wordt gevoerd.

Het gaf ons niet de methode. Curtis et al. draaien een kleine vloeistofsimulatie op het papier, met een snelheidsveld, een masker van het natte gebied, een stroming naar buiten berekend uit een vervaagd masker, en glacislagen samengesteld met de Kubelka-Munk-optica van verf. Het spel heeft helemaal geen snelheid in het papierwater. Elke cel wisselt water en kleurstof uit met zijn buren naar hun verschil in natheid, doorgelaten door een vezelpatroon, en elk plekje droogt even snel, tenzij het wordt verwarmd. De rand verschijnt toch, omdat de dunne rand het eerst leegloopt en water er naartoe uitvlakt en kleur meeneemt. Een test controleert dat de rand 1,3 tot 2,5 keer zo sterk uitkomt als de laag erbinnen.

Het vezelpatroon is het enige wat we hielden van MoXi <sup>[Chu 2005](<https://professoroops.com/binnenin/onderzoek-simulatie/#chu-2005>)</sup>, een prachtig realtime inktmodel gebouwd op lattice-Boltzmannstroming op de GPU. Die methode legden we opzij als mogelijk speciaal penseel. Wat overbleef, is het idee dat ruis in de vezels het natte front breekt. Hetzelfde vezelveld bepaalt nu ook hoe snel papier brandt en warmte geleidt. De verspreiding die van de verzadiging afhangt in onze notities, die scherpere natte fronten zou geven, werd niet gebouwd. De realtime waterige verf van Van Laerhoven en Van Reeth <sup>[Van Laerhoven 2005](<https://professoroops.com/binnenin/onderzoek-simulatie/#vanlaerhoven-2005>)</sup> stond ook in de notities; dat is ook dynamica op de GPU, en we namen er niets specifieks uit over.

Een opgedroogde koffiedruppel heeft een donkere ring om een reden die Deegan et al. <sup>[Deegan 1997](<https://professoroops.com/binnenin/onderzoek-simulatie/#deegan-1997>)</sup> uitlegden: vloeistof die aan een vastgepinde rand verloren gaat, wordt van binnenuit aangevuld, en die stroming voert de vaste deeltjes naar buiten. De korrels in het spel rijden ook met het water mee naar een drogende rand. Dat klopt alleen in het mechanisme. Er is geen vastgepinde contactlijn, geen extra verdamping aan de rand, en niemand heeft de machtswet uit het artikel getest.

[Onder de motorkap: de regel voor waterverf](<#hood-paper>)

De regel voor waterverf

Onder de motorkap

### De regel voor waterverf

- **Water** beweegt tussen naburige plekjes in verhouding tot hun verschil in natheid, doorgelaten door de vezelruis van allebei. De uitwisseling is lineair in natheid, waar MoXi en Richards haar met de natheid zouden laten groeien.
- **Uitvloeien**: nat pigment verspreidt zich alleen tussen plekjes die allebei nat zijn.
- **Korrels** rijden mee op een deel van de waterstroom, een groter deel waar het papier natter is.
- **De rand**: waar de natheid wegvalt, wordt kleur naar de drogere kant getrokken, en dat bouwt de rand op.
- **Droogrand**: een flauwe tint waar nat en droog elkaar raken. Die voegt kleur toe in plaats van haar te verplaatsen, dus die ene term behoudt de kleurstof niet.
- **Drogen** gaat overal even snel, sneller waar het papier warm is.

Automatische tests leggen de rand vast op 1,3 tot 2,5 keer de laag, zacht en een paar cellen breed; een bloem die de kleur van de laag houdt; nat pigment dat uitvloeit terwijl droog pigment blijft liggen; en de kleurbanden van een natte stiftlijn.

Uit Curtis et al. 1997

- **gehouden** · Water op het vel en water in de vezels
- **gehouden** · Pigment dat naar een drogende rand wordt gevoerd: donkere randen
- **gehouden** · Terugloop: schoon water dat kleur in bloemen duwt
- **geschrapt** · Een snelheidsveld in het papierwater
- **geschrapt** · Het masker van het natte gebied en de Gaussische vervaging ervan
- **geschrapt** · Snellere verdamping aan de rand
- **geschrapt** · Glaceren met Kubelka-Munk

Helemaal gelezen. Relatie: vormde het ontwerp mee.

Uit MoXi, Chu & Tai 2005

- **gehouden** · Een veld van vezelruis dat de stroming tussen buren doorlaat of tegenhoudt
- **gehouden** · Hetzelfde veld hergebruikt voor branden en warmte
- **geschrapt** · Lattice-Boltzmannstroming
- **geschrapt** · De GPU
- **geschrapt** · Verspreiding die met de natheid groeit \(D ∝ water²\)

Gecontroleerd op record en samenvatting. Relatie: vormde het ontwerp mee.

![In het spel een opgedroogde laag blauwe waterverf waarvan de rand duidelijk donkerder is dan het midden](<https://professoroops.com/_assets/entity_FIOcJt6UbmBRcltRhBlz.webp>)

**Een opgedroogde laag houdt een donkerdere rand, in het spel.** Water voert kleur naar de drogende rand en laat haar daar achter. Curtis et al. tekenden hetzelfde kenmerk met een volledig stromingsmodel; het onze komt uit een eenvoudige regel tussen naburige plekjes.

### We wezen de beroemde modellen voor het mengen van verf af

Echte verf verstrooit licht en neemt het ook op. Daarom kan lichte verf donkere bedekken. Het klassieke model daarvan is dat van Kubelka en Munk <sup>[Kubelka 1931](<https://professoroops.com/binnenin/onderzoek-simulatie/#kubelka-1931>)</sup>, en onze onderzoeksnotitie raadde aan de twee getallen ervan per pigment op te slaan. Een moderne methode die erop voortbouwt, Mixbox <sup>[Sochorová 2021](<https://professoroops.com/binnenin/onderzoek-simulatie/#sochorova-2021>)</sup>, mengt digitale verf prachtig, maar de licentie is niet-commercieel, en dat sloot hem uit. De open bibliotheek spectral.js <sup>[spectral.js](<https://professoroops.com/binnenin/onderzoek-simulatie/#vanwijnen>)</sup> werd overwogen en niet overgenomen.

Het spel doet iets goedkopers. Een kleur is hoeveel licht hij wegneemt, per rood, groen en blauw kanaal. Lagen tellen hun absorbantie op en het licht dat overblijft, neemt er exponentieel mee af, en dat is wat de wet van Beer-Lambert beschrijft <sup>[Swinehart 1962](<https://professoroops.com/binnenin/onderzoek-simulatie/#swinehart-1962>)</sup>; de code noemt het optische dichtheid. Twee dunne lagen worden samen donkerder zoals echte dat doen. Wat verloren gaat, is verstrooiing: lichte verf kan donkere niet bedekken. [Hoe kleuren mengen](<https://professoroops.com/binnenin/kleur/>) heeft het hele model.

### De vergelijking die we het liefst willen maken

Water klimt in papier met een front dat beweegt met de wortel uit de tijd. Lucas <sup>[Lucas 1918](<https://professoroops.com/binnenin/onderzoek-simulatie/#lucas-1918>)</sup> en Washburn <sup>[Washburn 1921](<https://professoroops.com/binnenin/onderzoek-simulatie/#washburn-1921>)</sup> werkten die wet uit, en Richards <sup>[Richards 1931](<https://professoroops.com/binnenin/onderzoek-simulatie/#richards-1931>)</sup> schreef de vergelijking voor stroming door poreuze stoffen waarin natter papier water beter geleidt, de oorzaak van een scherp nat front. Niemand heeft het natte front van het spel al tegen √t gemeten. Als het klopt, zou het een echte vergelijking met de natuurkunde zijn in plaats van een gelijkenis. Vóór Curtis et al. simuleerde Small <sup>[Small 1991](<https://professoroops.com/binnenin/onderzoek-simulatie/#small-1991>)</sup> waterverf op een Connection Machine; Curtis et al. noemen dat baanbrekend, en wij hebben het niet gelezen.

## Elke druppelvlek volgt een regel uit de forensische wetenschap

Spat verf over het vel en elke druppel laat een vlek achter. Een druppel die recht naar beneden komt, laat een rond stipje achter; een die onder een lage hoek binnenscheert, laat een lang ovaal achter dat wijst in de richting waarin hij ging. Onderzoekers op een plaats delict gebruiken dit om uit te zoeken waar bloed vandaan kwam. De regel is eenvoudig: de breedte van de vlek gedeeld door de lengte is de sinus van de hoek waaronder de druppel binnenkwam. Hij wordt toegeschreven aan Balthazard en collega’s in 1939, en wij pasten hem direct toe uit een uitleg over vloeistofdynamica van Neitzel en Smith <sup>[Neitzel & Smith](<https://professoroops.com/binnenin/onderzoek-simulatie/#neitzel>)</sup>.

Het spel rekent de inslaghoek van elke druppel uit zijn eigen snelheid over het vel en zijn snelheid naar beneden, zodat een druppel die snel en laag wordt gegooid een lange vlek achterlaat en een die recht naar beneden valt een ronde. Het uitrekken is begrensd, zodat heel vlakke druppels geen dunne strepen worden.

De rest van het spatonderzoek in onze notities bouwden we niet: hoeveel vingers zich vormen rond een druppel die op een plaat slaat <sup>[Mehdizadeh 2004](<https://professoroops.com/binnenin/onderzoek-simulatie/#mehdizadeh-2004>)</sup>, hoe de rand van een kroonspat groeit en uiteenvalt <sup>[Agbaglah 2014](<https://professoroops.com/binnenin/onderzoek-simulatie/#agbaglah-2014>)</sup>, en kroonvingers van niet-bolvormige druppels <sup>[Anirudh 2026](<https://professoroops.com/binnenin/onderzoek-simulatie/#anirudh-2026>)</sup>. Spatnatuurkunde van dit soort weegt de traagheid van een druppel tegen zijn oppervlaktespanning af, het getal van Weber. Nergens in de code bestaat een getal van Weber. Staartjes en satellietdruppeltjes komen uit eenvoudige regels.

[Onder de motorkap: de landing](<#hood-stains>)

De landing

Onder de motorkap

### De landing

Op het moment dat een druppel landt, geven zijn snelheid over het vel en zijn snelheid naar beneden de sinus van zijn inslaghoek. De vlek wordt uitgerekt met 1 / sin α, tot een grens, en zijn lange as volgt de richting van de druppel over het vel. De bronpagina schrijft sin α = W/L toe aan Balthazard, Piedelievre, Desoille en DeRobert \(1939\); dat artikel kennen we alleen via die pagina, en niets op de pagina wijst op peerreview.

Probeer het: gooi druppels onder een hoek De eigen regel van het spelDruppels vliegen van links binnen en landen onder de hoek die je instelt. Tik op het papier om er een naar een plek te gooien, of druk op **Gooi een druppel**. **Waar je op let:** bij 90° zijn de vlekken rond; onder 30° rekken ze uit tot twee keer hun breedte en meer; onder ongeveer 14,5° groeien ze niet verder dan 4 : 1, waar de echte regel zou doorgaan. Zet de omtrek aan om de vorm volgens de echte regel rond de nieuwste vlek te zien.

![Rode druppels die onder een gekozen hoek op papier landen en ronde of lange ovale vlekken achterlaten](<https://professoroops.com/_assets/entity_y0YJmoQCLQkOrykEs3p1.png>)

Inslaghoek25°

echte W/L = sin α—

W/L in het spel—

echte lengte ÷ breedte—

lengte ÷ breedte in het spel—

begrensd—

Een vlek rekt uit naarmate een druppel vlakker binnenkomt, tot 4 : 1

De forensische regel geeft 11,5 : 1 bij 5° en 2 : 1 bij 30°; het spel volgt hem tot 14,5° en blijft daaronder op 4 : 1.

- de forensische regel, 1 / sin α
- het spel, begrensd op 4

Gegevenstabel

Een vlek rekt uit naarmate een druppel vlakker binnenkomt, tot 4 : 1

| inslaghoek \(graden\) | de forensische regel, 1 / sin α | het spel, begrensd op 4 |
| --- | --- | --- |
| 5 | 11,474 | 4 |
| 6 | 9,567 | 4 |
| 7 | 8,206 | 4 |
| 8 | 7,185 | 4 |
| 9 | 6,392 | 4 |
| 10 | 5,759 | 4 |
| 11 | 5,241 | 4 |
| 12 | 4,81 | 4 |
| 13 | 4,445 | 4 |
| 14 | 4,134 | 4 |
| 15 | 3,864 | 3,864 |
| 16 | 3,628 | 3,628 |
| 17 | 3,42 | 3,42 |
| 18 | 3,236 | 3,236 |
| 19 | 3,072 | 3,072 |
| 20 | 2,924 | 2,924 |
| 21 | 2,79 | 2,79 |
| 22 | 2,669 | 2,669 |
| 23 | 2,559 | 2,559 |
| 24 | 2,459 | 2,459 |
| 25 | 2,366 | 2,366 |
| 26 | 2,281 | 2,281 |
| 27 | 2,203 | 2,203 |
| 28 | 2,13 | 2,13 |
| 29 | 2,063 | 2,063 |
| 30 | 2 | 2 |
| 31 | 1,942 | 1,942 |
| 32 | 1,887 | 1,887 |
| 33 | 1,836 | 1,836 |
| 34 | 1,788 | 1,788 |
| 35 | 1,743 | 1,743 |
| 36 | 1,701 | 1,701 |
| 37 | 1,662 | 1,662 |
| 38 | 1,624 | 1,624 |
| 39 | 1,589 | 1,589 |
| 40 | 1,556 | 1,556 |
| 41 | 1,524 | 1,524 |
| 42 | 1,494 | 1,494 |
| 43 | 1,466 | 1,466 |
| 44 | 1,44 | 1,44 |
| 45 | 1,414 | 1,414 |
| 46 | 1,39 | 1,39 |
| 47 | 1,367 | 1,367 |
| 48 | 1,346 | 1,346 |
| 49 | 1,325 | 1,325 |
| 50 | 1,305 | 1,305 |
| 51 | 1,287 | 1,287 |
| 52 | 1,269 | 1,269 |
| 53 | 1,252 | 1,252 |
| 54 | 1,236 | 1,236 |
| 55 | 1,221 | 1,221 |
| 56 | 1,206 | 1,206 |
| 57 | 1,192 | 1,192 |
| 58 | 1,179 | 1,179 |
| 59 | 1,167 | 1,167 |
| 60 | 1,155 | 1,155 |
| 61 | 1,143 | 1,143 |
| 62 | 1,133 | 1,133 |
| 63 | 1,122 | 1,122 |
| 64 | 1,113 | 1,113 |
| 65 | 1,103 | 1,103 |
| 66 | 1,095 | 1,095 |
| 67 | 1,086 | 1,086 |
| 68 | 1,079 | 1,079 |
| 69 | 1,071 | 1,071 |
| 70 | 1,064 | 1,064 |
| 71 | 1,058 | 1,058 |
| 72 | 1,051 | 1,051 |
| 73 | 1,046 | 1,046 |
| 74 | 1,04 | 1,04 |
| 75 | 1,035 | 1,035 |
| 76 | 1,031 | 1,031 |
| 77 | 1,026 | 1,026 |
| 78 | 1,022 | 1,022 |
| 79 | 1,019 | 1,019 |
| 80 | 1,015 | 1,015 |
| 81 | 1,012 | 1,012 |
| 82 | 1,01 | 1,01 |
| 83 | 1,008 | 1,008 |
| 84 | 1,006 | 1,006 |
| 85 | 1,004 | 1,004 |
| 86 | 1,002 | 1,002 |
| 87 | 1,001 | 1,001 |
| 88 | 1,001 | 1,001 |
| 89 | 1 | 1 |
| 90 | 1 | 1 |

Bron: De regel zoals <sup>[Neitzel & Smith](<https://professoroops.com/binnenin/onderzoek-simulatie/#neitzel>)</sup> hem geeft, en de begrensde versie ervan in het spel.

![In het spel een klodder ketchup waar met de hamer op is geslagen, met eromheen de druppels die hij wegwierp: sommige rond, sommige ovalen die van de klap af wijzen](<https://professoroops.com/_assets/entity_CZ9IT4MuiUp8pw0YIWqA.webp>)

**Schuine druppels laten langere vlekken achter, in het spel.** Een hamerslag op een klodder ketchup gooit druppels onder veel hoeken weg. Elke vlek wordt uitgerekt volgens de forensische regel, breedte gedeeld door lengte is de sinus van de inslaghoek, dus druppels die steil neerkwamen lieten ronde stipjes achter en lage lieten ovalen achter die wijzen in de richting waarin ze vlogen, van de klap af.

## Schimmel groeit volgens een formule, dus “kom over drie dagen terug” kost niets

Laat eten op het vel liggen, spring drie dagen vooruit, en pluizige schimmelkolonies hebben zich eroverheen verspreid. Echte schimmel groeit als vertakkende draden. De leerboekmanier om vertakkende vormen in een computer te laten groeien is diffusiebegrensde aggregatie <sup>[Witten 1981](<https://professoroops.com/binnenin/onderzoek-simulatie/#witten-1981>)</sup>: deeltjes zwerven willekeurig rond tot ze de groep raken en blijven plakken. Dat geeft prachtige, levensechte vertakkingen.

We wezen het om twee redenen af. Letterlijke willekeurige zwervers zijn traag, en een sprong in de tijd zou betekenen dat we elk uur van de drie dagen moeten simuleren. In plaats daarvan is de straal van elke kolonie een formule van haar leeftijd. “Kom drie dagen later terug” is één som per kolonie, geen drie dagen werk, en dat is precies waar onze onderzoeksnotitie om vroeg.

Andere patroonmakers werden genoteerd en ook niet gebouwd: Gray-Scott-reactiediffusie zoals de handleiding van Karl Sims die presenteert <sup>[Sims](<https://professoroops.com/binnenin/onderzoek-simulatie/#sims>)</sup>, en de transportnetwerken van slijmzwammen van Jones <sup>[Jones 2010](<https://professoroops.com/binnenin/onderzoek-simulatie/#jones-2010>)</sup>. Het artikel van Turing uit 1952 over patronen uit reactie en diffusie <sup>[Turing 1952](<https://professoroops.com/binnenin/onderzoek-simulatie/#turing-1952>)</sup> is de klassieker achter de eerste. \(Een opmerking in de vuurcode zegt “reaction-diffusion”, maar bedoelt warmte en brandstof; het vuur is een voortbewegend front, geen Turing-patroon.\)

[Onder de motorkap: de straal van een kolonie](<#hood-time>)

De straal van een kolonie

Onder de motorkap

### De straal van een kolonie

*r*\(leeftijd\) groeit als √leeftijd, tot een grootste maat

De eerste uren is er niets te zien. Elke kolonie trekt haar eigen groeisnelheid, en de groei vertraagt naarmate ze groter wordt. Kolonies worden gezaaid op etensresten, meer waar het vochtig is, en verspreiden zich alleen over cellen met iets te eten. Terwijl de app open is, loopt de schimmelklok in een eigen vast tempo, veel sneller dan de echte tijd maar afgeremd tijdens het spelen; een sprong in de tijd wordt niet afgeremd.

De kosten zijn O\(kolonies\) per berekening, hoe groot de sprong in de tijd ook is. Een groep zwervers heeft één willekeurige wandeling nodig voor elk deeltje erin, en elke wandeling loopt tot hij raakt.

Probeer het: willekeurige zwervers tegen de formule van het spel IllustratieDe eigen regel van het spel Twee kolonies op dezelfde klok, vier simulatie-uren per seconde. De willekeurige zwervers groeien door diffusiebegrensde aggregatie: zwervers dwalen rond tot ze de kolonie raken en blijven plakken. Het andere vak is de formule van het spel voor een gewone kolonie. Elk beeld krijgen de zwervers een vast budget aan stappen, zoals een apparaat dat zou doen. **Waar je op let:** druk op “Kom over 3 dagen terug”. De formule springt er meteen naartoe; de zwervers moeten stap voor stap inhalen, en de stappenteller laat de rekening zien. Verlaag het budget om een tragere tablet na te spelen.

![Twee schimmelkolonies die op dezelfde klok groeien: willekeurige zwervers in het ene vak, de formule van het spel in het andere](<https://professoroops.com/_assets/entity_xx3pWBFPUrbTvv2iAag8.png>)

- Willekeurige zwervers
- Het spel: straal uit leeftijd

Budget zwervers40k stappen/beeld

simulatietijd—

en—

straal uit formule—

zwervers kwamen tot—

stappen van zwervers tot nu toe—

![In het spel drie klodders ketchup die na een sprong van drie dagen begroeid zijn met schimmel: groene kolonies, plekken wit pluis en één kleine oranje kolonie](<https://professoroops.com/_assets/entity_RCLAear3cb5FN8GfO3Ef.webp>)

**Drie dagen later, in het spel.** De grootte van elke kolonie is een formule van haar leeftijd, dus de sprong kost één som per kolonie. Kolonies die eerder begonnen of sneller groeien, zijn groter: hier hebben groene en witte zich over hele klodders ketchup verspreid, terwijl een kleine oranje, later of trager, nog een stipje is.

Geen regel bepaalt de snelheid van het vuur, toch komt hij uit in dezelfde orde als bij echt papier

Eén gepubliceerde meting voor papier geeft 0,8 mm/s; het front van het spel loopt, gemeten, met 1,1 mm/s.

Gegevenstabel

Geen regel bepaalt de snelheid van het vuur, toch komt hij uit in dezelfde orde als bij echt papier

|  | snelheid van het front |
| --- | --- |
| Eén gepubliceerde meting, papier | 0,8 |
| Het spel, gemeten | 1,1 |

Bron: Gemeten in het spel: dezelfde grootteorde, niet geijkt. De gepubliceerde bron is mager; zie [Warmte en vuur](<https://professoroops.com/binnenin/warmte/>).

## Voor vuur, elektriciteit en zeep hielden we de klassieke wetten en wezen we de slimme artikelen af

### Vuur

Houd een lucifer bij papier en een rafelig front vreet zich naar buiten, met een zwartgeblakerde rand. We lazen ons in over brandend papier in de graphics: drie artikelen van Melek en Keyser, een ervan over buigende brandende lucifers en verfrommelend brandend papier <sup>[Melek 2005](<https://professoroops.com/binnenin/onderzoek-simulatie/#melek-2005>), [Melek 2006](<https://professoroops.com/binnenin/onderzoek-simulatie/#melek-2006>), [Melek 2007](<https://professoroops.com/binnenin/onderzoek-simulatie/#melek-2007>)</sup>, en Larboulette, Quesada en Dumas, die papier vezel voor vezel laten branden <sup>[Larboulette 2013](<https://professoroops.com/binnenin/onderzoek-simulatie/#larboulette-2013>)</sup>. Onze onderzoeksnotitie wees het opkrullende vel van massa’s en veren uit dat artikel op schrift af als overdreven. Een zuiver voorbeeld van een bron die werd geraadpleegd en afgewezen.

Het vuur in het spel is warmte die zich door het papier verspreidt, met brandstof die opbrandt. Papier vat vlam bij een vaste drempel, ongeveer 230 °C; het toeval zit in plaats daarvan in de brandstof en in brandsnelheden die aan het vezelveld vastzitten. Er is geen zuurstofveld: koolstofdioxide en alles wat er bovenop ligt, staan voor “geen lucht”. Water houdt een cel op het kookpunt tot hij droog is. Geen regel bepaalt de snelheid van het front, toch komt die uit op ongeveer 1,1 mm per seconde, dezelfde orde als één gepubliceerde meting voor papier. Hij is daar niet op geijkt.

Sterk werk over vuur waar we nog niet uit hebben geput: het klassieke verspreidingsmodel van Rothermel voor natuurbranden <sup>[Rothermel 1972](<https://professoroops.com/binnenin/onderzoek-simulatie/#rothermel-1972>)</sup>, op de verkeerde schaal voor papier maar nuttig als begrip; vlammen in de graphics <sup>[Nguyen 2002](<https://professoroops.com/binnenin/onderzoek-simulatie/#nguyen-2002>)</sup>; en twee natuurkundige artikelen over langzaam brandende papierfronten <sup>[Maunuksela 1997](<https://professoroops.com/binnenin/onderzoek-simulatie/#maunuksela-1997>), [Zik 1998](<https://professoroops.com/binnenin/onderzoek-simulatie/#zik-1998>)</sup>.

### Elektriciteit

Trek een koperdraad van een batterij naar een lampje en het lampje gaat branden. Het spel lost de spanning op in elke cel van het vel, met de echte geleiding van elke cel, tot de stroom in evenwicht is. Technici kennen de methode als successieve overrelaxatie <sup>[Young 1954](<https://professoroops.com/binnenin/onderzoek-simulatie/#young-1954>)</sup>. Juist het probleem van stroom die zich door een vlakke plaat verspreidt, was het onderwerp van een artikel dat Kirchhoff in 1845 als student schreef <sup>[Kirchhoff 1845](<https://professoroops.com/binnenin/onderzoek-simulatie/#kirchhoff-1845>)</sup>. We volgden geen van beide artikelen; dit zijn de klassieke namen voor wat de code doet. Het antwoord klopt tot op drie cijfers met de wet van Ohm: 0,273 A door koper en een lampje.

### Zeep op melk

Druppel afwasmiddel op melk met kleur erop en de kleuren schieten ervan weg, en stoppen dan. Dat is marangonistroming <sup>[Scriven 1960](<https://professoroops.com/binnenin/onderzoek-simulatie/#scriven-1960>)</sup>: zeep verlaagt de oppervlaktespanning en het oppervlak trekt weg naar waar die hoger is. In het spel neemt het vet van de melk de zeep op, zodat de uitbarsting vanzelf stopt. Een echte oplosbare oppervlakteactieve stof drijft een stroming van eindige grootte aan <sup>[Roché 2014](<https://professoroops.com/binnenin/onderzoek-simulatie/#roche-2014>)</sup>; de onze maakt ook een eindig plekje vrij en loopt geleidelijk uit, van dezelfde soort. Niemand heeft hem vergeleken met de schaalwetten uit dat artikel, en daardoor is hij een goede kandidaat voor een echte test.

[Onder de motorkap: drie oplossers, drie klassieke namen](<#hood-fire>)

Drie oplossers, drie klassieke namen

Onder de motorkap

### Drie oplossers, drie klassieke namen

- **Vuur**: warmte diffundeert door het papier, sneller waar de vezels dichter zijn; een cel vat vlam bij ongeveer 230 °C; de brandstof in elke cel varieert met een ruisveld, en de brandsnelheid volgt de vezel. Vastgelegd in automatische tests.
- **Elektriciteit**: ∇·\(σ∇V\) = 0, de stroomwet van Kirchhoff op de cellen van het papier, opgelost met overrelaxatie, heen en dan terug, tot het vermogen in het vel niet meer verandert. Dezelfde som geeft de stroom per volt. Elk materiaal heeft een eigen geleiding per vierkant, koper ver boven potloodgrafiet. Door een test gecontroleerd tegen de wet van Ohm.
- **Zeep**: de oppervlaktespanning daalt met zeep langs een kromme die verzadigt, op het oog gekozen en niet aan een gemeten isotherm aangepast. De oppervlaktesnelheid zit op een grover rooster, wordt met een korte vertraging en een snelheidsgrens naar de trek van de oppervlaktespanning getrokken en semi-Lagrangiaans meegevoerd, net als in de lucht. De lange krullende werveling, uit een paar eigen overrelaxatierondes, komt in de volgende update.

## Vallendzandspellen lieten zien hoe veel materialen elkaar kunnen ontmoeten zonder een regel voor elk paar

Sommige van de nuttigste bronnen waren helemaal geen artikelen. Vallendzandspellen werken al jaren aan de vraag hoe veel materialen elkaar kunnen ontmoeten zonder dat iemand elk paar uitschrijft.

Sandspiel <sup>[Bittker 2019](<https://professoroops.com/binnenin/onderzoek-simulatie/#bittker-2019>)</sup> stopt elke cel in 32 bits: een soort, twee registers en een klok. The Powder Toy <sup>[Powder Toy](<https://professoroops.com/binnenin/onderzoek-simulatie/#powdertoy>)</sup> houdt elk element bij als een plat record met eigenschappen; het water ervan naast zout heeft 1 kans op 50 om zout water te worden. Wij gingen een andere kant op: Professor Oops is geen cellulaire automaat van losse soorten. Elke cel draagt veel doorlopende lagen, zoals water, warmte, kleurstof en opgeloste stoffen, omdat een laag kleur of een langzaam opdrogende plas hoeveelheden nodig heeft, geen soorten.

Noita <sup>[Purho 2019](<https://professoroops.com/binnenin/onderzoek-simulatie/#purho-2019>)</sup> liet zien hoe een grote zandwereld snel blijft: teken en bereken alleen de rechthoeken opnieuw die veranderd zijn. Wij bouwden hetzelfde idee op onze eigen manier, met kleine vierkante tegels waarvan rustige maar om de paar rondes worden bijgewerkt. Niets in de code zegt dat het van Noita kwam, dus dat beweren we ook niet.

Het grootste idee kwam uit een lezing over The Legend of Zelda: Breath of the Wild <sup>[Dohta 2017](<https://professoroops.com/binnenin/onderzoek-simulatie/#dohta-2017>)</sup>, zoals onze notities het samenvatten: stuur wisselwerkingen via gedeelde elementen, zodat het aantal regels groeit als elementen maal materialen in plaats van materialen maal materialen. De opgeloste elementen van het spel en de reactietabel die door data wordt gestuurd, zijn zo gebouwd. Zo bruist azijn op zuiveringszout en maakt citroen rode kool roze: zuur, de base van zuiveringszout en de kleur van de rode kool zijn gedeelde elementen, dus elk materiaal dat ze draagt, doet mee. [Gebouwd voor verrassingen](<https://professoroops.com/binnenin/emergentie/>) vertelt dat verhaal.

[Onder de motorkap: de tegelklok](<#hood-games>)

De tegelklok

Onder de motorkap

### De tegelklok

De pagina is in kleine vierkante tegels gesneden. Elk systeem houdt per tegel een eigen klok bij en houdt bij hoeveel er daar bewoog; rustige tegels worden om de paar rondes bijgewerkt, stille helemaal niet tot iets ze wekt. De onderzoeksnotitie stelde grotere brokken voor na het lezen over de dirty rectangles van Noita; de gebouwde tegels zijn kleiner, en niets in de code of de geschiedenis ervan noemt Noita.

De gedeelde elementen en de reactietabel zijn data, geen code per paar. Anders dan bij de vallendzandspellen zijn deze velden doorlopende hoeveelheden. Niemand hier heeft de lezing over Breath of the Wild bekeken; het idee kwam via notities uit de tweede hand, dus we zeggen “vormde het ontwerp mee”, nooit “gaat verder dan”.

Alleen de tegels waar iets gebeurt, worden elke ronde bijgewerkt Illustratie**Donkerblauw:** druk, elke ronde. **Lichtblauw:** komt tot rust, om de paar rondes. **Papier:** stil, slaapt tot iets het wekt. Illustratie van de tegelklok van het spel: een plas die zich in de ene hoek verspreidt en een kaars die in een andere brandt, op een pagina die in tegels is gesneden.

![Een pagina gesneden in 16 bij 9 tegels; tegels rond een plas die zich verspreidt en een brandende kaars zijn druk, een ring eromheen komt tot rust, de rest is stil](<https://professoroops.com/_assets/entity_6O0dN4nQ1JcqEPTIJ57E.png>)

- plas
- kaars

## Elke techniek hier voedt een systeem waarmee je kunt spelen

Elke bron op deze pagina komt uit in een eigen hoofdstuk. Dit zijn de draden, met de test die elk ervan vasthoudt.

Gedeeld: natheid \+ kleurstof per cel

### Schilder een laag waterverf en laat hem drogen

De rand droogt donkerder op, 1,3 tot 2,5 keer het midden, vastgelegd in een test.

[Water in papier](<https://professoroops.com/binnenin/water/>)

Gedeeld: het windveld u, v

### Houd een föhn boven bloem

De bloem wordt van zijn hoopje geblazen en komt verder weg neer, en een test houdt de drukoplossing tot op de bit spiegelexact.

[Lucht die echt beweegt](<https://professoroops.com/binnenin/lucht/>)

Gedeeld: waterdiepte \+ stroming in buizen

### Trek een vinger door een plas

volgende update Het water loopt terug in het spoor, gemeten door een test.

[Dun, plakkerig en vettig](<https://professoroops.com/binnenin/vloeistoffen/>)

Gedeeld: geleiding per cel

### Trek een koperdraad van batterij naar lampje

De stroom komt tot rust door overrelaxatie en klopt tot op drie cijfers met de wet van Ohm, gecontroleerd door een test.

[Elektriciteit](<https://professoroops.com/binnenin/elektriciteit/>)

Gedeeld: water \+ warmte \+ vezel

### Maak het papier nat en steek het dan aan

Doorweekt papier vat geen vlam: zijn water houdt het op het kookpunt tot het droog is, vastgelegd in een test.

[Warmte en vuur](<https://professoroops.com/binnenin/warmte/>)

Gedeeld: veld van de oppervlaktespanning

### Druppel afwasmiddel op melk

Kleuren schieten weg en stoppen als het vet de zeep bindt, vastgelegd in een test.

[Dun, plakkerig en vettig](<https://professoroops.com/binnenin/vloeistoffen/>)

## 56 bronnen gelezen, twee methoden bij naam gevolgd, en de rest teruggebracht tot wat op een tablet past

56

Bronnen op deze pagina: 43 die het project gebruikte of overwoog, 13 waar we nog niet uit hebben geput.

2

Direct bij naam toegepast: stable fluids voor de wind, en de forensische regel voor vlekken.

4

Bronnen helemaal gelezen; de rest gecontroleerd op record en samenvatting tegen een registratie van buiten.

64 × 48

Luchtcellen op de computer, met de druk elke ronde opgelost met multigrid, tot op de bit spiegelexact.

25×

Langzamer dan echte golven, zodat het water in de buizen stabiel blijft bij 30 rondes per seconde \(volgende update\).

1.1 mm/s

De snelheid van het vuurfront op papier. Geen regel stelt die in; ze komt voort uit warmte en brandstof, in dezelfde orde als één gepubliceerde meting.

## Waar we vereenvoudigen, en waarom

Elke techniek hier werd met opzet teruggebracht. Dit is wat de werkelijkheid doet, wat het spel doet, en waarom dat de juiste ruil is voor een kind op een tablet.

**In het echt.** Lucht boven een tafel beweegt in drie dimensies, heeft viscositeit en laat zich nauwelijks samendrukken

**In het spel.** Een 2D-rooster van 64 × 48 luchtcellen; een deel van een afgeschermde drukcorrectie; een vaste demping en geen viscositeitsstap

**Waarom dat genoeg is.** Van boven gezien is een ventilator een bron en een vuur een put. Een volledig onsamendrukbare wind duwde terug tegen vlagen van de andere kant van de pagina en blies een vijfde tot een derde zwakker. Er wordt geen echte snelheid of druk beweerd.

**In het echt.** De druk wordt precies opgelost

**In het spel.** Volledige multigrid, binnen 12% van zijn eigen precieze afgeschermde antwoord, daar gehouden door een test

**Waarom dat genoeg is.** Een vlaag die een tiende te zwak is, ziet er hetzelfde uit. Een die naar rechts overhelt, valt op, dus de moeite ging naar symmetrie, niet naar cijfers.

**In het echt.** Een golf op 3 mm water loopt met 17 cm/s

**In het spel.** Ongeveer 7 mm/s: de duw van de buizen wordt onder een stabiliteitsgrens gehouden volgende update

**Waarom dat genoeg is.** Stabiel bij 30 rondes per seconde. Een kind ziet water terugklotsen in het spoor van een vinger; de snelheid van een rimpeling is niet iets waar het over oordeelt.

**In het echt.** Ketchup heeft een zwichtspanning, en zijn stroom hangt af van diepte en helling

**In het spel.** Stroming in verhouding tot hoe ver de stap in het oppervlak een zwichtdrempel per materiaal overschrijdt; de diepte doet niet mee

**Waarom dat genoeg is.** Ketchup blijft op een hoopje en verf loopt, in de juiste volgorde, vastgelegd in een test. Wat we kwijtraken: een dikke klodder die op dezelfde helling een dunne inhaalt.

**In het echt.** Waterverf stroomt als een dunne vloeistoflaag, met snellere verdamping aan de rand

**In het spel.** Eén lineaire uitwisseling, doorgelaten door vezelruis, overal even snel drogen, korrels die meerijden op een deel van de waterstroom

**Waarom dat genoeg is.** De rand, de bloem en het uitvloeien zijn er allemaal en worden getest. Wat we kwijtraken: stromingen binnen een natte laag.

**In het echt.** Verf neemt licht op en verstrooit het

**In het spel.** Absorbantie per rood, groen en blauw kanaal; het licht dat overblijft, neemt er exponentieel mee af

**Waarom dat genoeg is.** Lagen worden samen donkerder zoals echte waterverf. Wat we kwijtraken: lichte verf die donkere bedekt.

**In het echt.** Een spat vormt een kroon, vingers en satellieten die afhangen van het getal van Weber

**In het spel.** Breedte ÷ lengte van de vlek = sin van de inslaghoek, tot een begrensde uitrekking; staartjes met eenvoudige regels

**Waarom dat genoeg is.** De vlek laat zien waar een druppel vandaan kwam en hoe steil, zoals een forensische lezing dat doet.

**In het echt.** Schimmel groeit als vertakkende draden, gevoed door eten en vocht

**In het spel.** De straal van een kolonie is een formule van haar leeftijd, die na een vertraging groeit als de wortel eruit

**Waarom dat genoeg is.** “Kom over drie dagen terug” is één som per kolonie, op elk apparaat.

## Alle 56 bronnen, en wat we met elk deden

Gegroepeerd per systeem. Bij elke bron staat hoe die werd gebruikt. De meeste werden gecontroleerd op record en samenvatting; de vier die helemaal zijn gelezen, zijn gemarkeerd. Een bron die hier staat en die we niet hebben gebruikt, staat er als lacune, nooit als invloed.

### Lucht en wind

- Jos Stam, 1999. "Stable Fluids." SIGGRAPH '99, pp. 121–128.[doi:10.1145/311535.311548](<https://doi.org/10.1145/311535.311548>)Toegepast*Direct toegepast.* **Wat we deden:** de semi-Lagrangiaanse advectie en drukprojectie van de wind, in de code bij naam genoemd. Afwijkingen: geen viskeuze diffusie, maar een deel van een afgeschermde correctie.
- Jos Stam, 2003. "Real-Time Fluid Dynamics for Games." Game Developers Conference.[dgp.toronto.edu/public\_user/stam/reality/Research/pdf/GDC03.pdf](<https://www.dgp.toronto.edu/public_user/stam/reality/Research/pdf/GDC03.pdf>)Richtinggevend*Vormde het ontwerp mee · helemaal gelezen.* **Wat we deden:** in de notities aangeraden voor rook. De Gauss-Seidel-rondes van de eerste lucht leken op het recept ervan; ze zijn inmiddels vervangen.
- Mark J. Harris, 2004. "Fast Fluid Dynamics Simulation on the GPU." GPU Gems, chapter 38, NVIDIA.[developer.nvidia.com/gpugems/GPUGems/gpugems\_ch38.html](<https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch38.html>)Richtinggevend**Wat we deden:** de GPU-route niet genomen; de lucht draait op de CPU en in WebAssembly. Onze Jacobi-rondes zijn er voor de spiegelsymmetrie.
- PavelDoGreat. WebGL-Fluid-Simulation. GitHub, MIT licence.[github.com/PavelDoGreat/WebGL-Fluid-Simulation](<https://github.com/PavelDoGreat/WebGL-Fluid-Simulation>)Richtinggevend**Wat we deden:** een referentie-implementatie in de notities; niet gebruikt.
- Ronald Fedkiw, Jos Stam, Henrik Wann Jensen, 2001. "Visual Simulation of Smoke." SIGGRAPH 2001, pp. 15–22.[doi:10.1145/383259.383260](<https://doi.org/10.1145/383259.383260>)Later gevonden*Later gevonden · helemaal gelezen.* **Wat we deden:** de code noemt vorticity confinement en gebruikt een kracht van dezelfde vorm, afhankelijk van de snelheid. De repo citeert dit artikel nergens.
- J. Steinhoff, D. Underhill, 1994. "Modification of the Euler equations for 'vorticity confinement'." Physics of Fluids 6\(8\), 2738–2744.[doi:10.1063/1.868164](<https://doi.org/10.1063/1.868164>)Later gevonden**Wat we deden:** de oorsprong van de techniek hierboven.
- Achi Brandt, 1977. "Multi-Level Adaptive Solutions to Boundary-Value Problems." Mathematics of Computation 31\(138\), 333–390.[doi:10.1090/S0025-5718-1977-0431719-X](<https://doi.org/10.1090/S0025-5718-1977-0431719-X>)Later gevonden**Wat we deden:** een grondleggend artikel over multigrid; onze oplosser noemt multigrid en citeert niets.
- William L. Briggs, Van Emden Henson, Steve F. McCormick, 2000. A Multigrid Tutorial, 2nd ed. SIAM.[doi:10.1137/1.9780898719505](<https://doi.org/10.1137/1.9780898719505>)Later gevonden**Wat we deden:** de standaardinleiding in V-cycli en volledige multigrid; goed leesvoer voor wie onze oplosser controleert.
- A. McAdams, E. Sifakis, J. Teran, 2010. "A Parallel Multigrid Poisson Solver for Fluids Simulation on Large Grids." SCA 2010.[pages.cs.wisc.edu/~sifakis/project\_pages/mgpcg.html](<https://pages.cs.wisc.edu/~sifakis/project_pages/mgpcg.html>)*Nog niet gebruikt.* Multigrid voor vloeistoffen in de graphics: het naaste eerdere werk bij onze oplosser.
- Robert Bridson, 2016. Fluid Simulation for Computer Graphics, 2nd ed. A K Peters/CRC.*Nog niet gebruikt.* Het standaardwerk; het zou de eerste toets zijn van de keuzes voor de lucht, ook van snelheid in het midden van de cellen in plaats van op de wanden.
- Alexandre J. Chorin, 1968. "Numerical solution of the Navier-Stokes equations." Mathematics of Computation 22, 745–762.[doi:10.1090/S0025-5718-1968-0242392-2](<https://doi.org/10.1090/S0025-5718-1968-0242392-2>)*Nog niet gebruikt.* Een voorloper van de projectiestap.

### Water, smurrie en korrels

- James F. O'Brien, Jessica K. Hodgins, 1995. "Dynamic Simulation of Splashing Fluids." Computer Animation '95, pp. 198–205.[doi:10.1109/CA.1995.393532](<https://doi.org/10.1109/CA.1995.393532>)Later gevonden*Later gevonden · helemaal gelezen.* **Wat we deden:** de oorsprong van virtuele buizen, volgens latere bronnen. Onze regel heeft de vorm ervan, met vier buren in plaats van acht en een viskeuze rem in de volgende update.
- Xing Mei, Philippe Decaudin, Bao-Gang Hu, 2007. "Fast Hydraulic Erosion Simulation and Visualization on GPU." Pacific Graphics 2007, pp. 47–56.[doi:10.1109/PG.2007.15](<https://doi.org/10.1109/PG.2007.15>)Richtinggevend**Wat we deden:** de verwijzing in de notities naar virtuele buizen, voor dikke lagen. De buizen kwamen er in de volgende update bij naam in; niets wijst erop dat de formules uit dit artikel werden gebruikt.
- François Dagenais et al., 2018. "Extended virtual pipes for the stable and real-time simulation of small-scale shallow water." Computers & Graphics 76, 84–95.[doi:10.1016/j.cag.2018.08.005](<https://doi.org/10.1016/j.cag.2018.08.005>)Richtinggevend**Wat we deden:** dezelfde cel van 0,5 mm en impliciete viscositeit in de volgende update, al is onze term afgeleid uit Poiseuille. De uitgebreide buizen en meerlaagse hoogtekaarten ervan werden niet gebouwd.
- Michael Kass, Gavin Miller, 1990. "Rapid, Stable Fluid Dynamics for Computer Graphics." SIGGRAPH '90, pp. 49–57.[doi:10.1145/97879.97884](<https://doi.org/10.1145/97879.97884>)Later gevonden**Wat we deden:** de voorloper van water als hoogteveld.
- Salvatore P. Sutera, Richard Skalak, 1993. "The History of Poiseuille's Law." Annual Review of Fluid Mechanics 25, 1–20.[doi:10.1146/annurev.fl.25.010193.000245](<https://doi.org/10.1146/annurev.fl.25.010193.000245>)Later gevonden**Wat we deden:** de code noemt de 3ν/h² van Poiseuille en berekent die in de volgende update uit de echte ν van water; dit overzicht is een citeerbare geschiedenis van de wet.
- Ko Fei Liu, Chiang C. Mei, 1989. "Slow spreading of a sheet of Bingham fluid on an inclined plane." Journal of Fluid Mechanics 207, 505–529.[doi:10.1017/S0022112089002685](<https://doi.org/10.1017/S0022112089002685>)Richtinggevend**Wat we deden:** het idee van een drempel, ja; de formule voor de stroom, nee.
- Mark Carlson, Peter J. Mucha, R. Brooks Van Horn III, Greg Turk, 2002. "Melting and Flowing." SCA 2002, pp. 167–174.[doi:10.1145/545261.545289](<https://doi.org/10.1145/545261.545289>)Richtinggevend**Wat we deden:** niet de methode. Onze smurrie beweegt gewoon minder naarmate hij opstijft.
- Robert W. Sumner, James F. O'Brien, Jessica K. Hodgins, 1999. "Animating Sand, Mud, and Snow." Computer Graphics Forum 18\(1\), 17–26.[doi:10.1111/1467-8659.00299](<https://doi.org/10.1111/1467-8659.00299>)Richtinggevend**Wat we deden:** materiaal als hoogtekolommen opzij duwen en steile laten inzakken, zonder dat er iets verloren gaat. Geen van de parameters ervan wordt gebruikt.
- Per Bak, Chao Tang, Kurt Wiesenfeld, 1987. "Self-organized criticality: An explanation of the 1/f noise." Physical Review Letters 59, 381–384.[doi:10.1103/PhysRevLett.59.381](<https://doi.org/10.1103/PhysRevLett.59.381>)*Nog niet gebruikt.* Het zandhoopmodel: uit dezelfde familie drempelregels als het inzakken van onze korrels.

### Waterverf en papier

- Cassidy Curtis, Sean Anderson, Josh Seims, Kurt Fleischer, David Salesin, 1997. "Computer-Generated Watercolor." SIGGRAPH '97, pp. 421–430.[doi:10.1145/258734.258896](<https://doi.org/10.1145/258734.258896>)Richtinggevend*Vormde het ontwerp mee · helemaal gelezen.* **Wat we deden:** de belangrijkste afzonderlijke invloed op het papiermodel, om het gedrag. Niets van de methode: geen snelheidslaag, masker, vervaging of glaceren.
- Tom Van Laerhoven, Frank Van Reeth, 2005. "Real-time simulation of watery paint." Computer Animation and Virtual Worlds 16\(3–4\), 429–439.[doi:10.1002/cav.95](<https://doi.org/10.1002/cav.95>)Richtinggevend**Wat we deden:** in de notities; geen dynamica op de GPU en geen Kubelka-Munk gebouwd.
- Nelson S.-H. Chu, Chiew-Lan Tai, 2005. "MoXi: Real-Time Ink Dispersion in Absorbent Paper." ACM TOG 24\(3\), 504–511.[doi:10.1145/1073204.1073221](<https://doi.org/10.1145/1073204.1073221>)Richtinggevend**Wat we deden:** de vezelruis gehouden die de stroming doorlaat; lattice Boltzmann opzijgelegd als mogelijk speciaal penseel.
- Robert D. Deegan, Olgica Bakajin, Todd F. Dupont, Greg Huber, Sidney R. Nagel, Thomas A. Witten, 1997. "Capillary flow as the cause of ring stains from dried liquid drops." Nature 389, 827–829.[doi:10.1038/39827](<https://doi.org/10.1038/39827>)Later gevonden**Wat we deden:** de code zegt “coffee-ring effect”. Klopt alleen in het mechanisme: geen vastgepinde lijn, geen piek in verdamping aan de rand, geen test van de machtswet.
- David Small, 1991. "Simulating watercolor by modeling diffusion, pigment, and paper fibers." SPIE vol. 1460, pp. 140–146.[doi:10.1117/12.44417](<https://doi.org/10.1117/12.44417>)*Nog niet gebruikt.* Waterverf op een Connection Machine, wat Curtis et al. baanbrekend noemen.
- R. Lucas, 1918. "Ueber das Zeitgesetz des kapillaren Aufstiegs von Flüssigkeiten." Kolloid-Zeitschrift 23, 15–22.[doi:10.1007/BF01461107](<https://doi.org/10.1007/BF01461107>)*Nog niet gebruikt.* De √t-wet van capillaire opstijging.
- Edward W. Washburn, 1921. "The Dynamics of Capillary Flow." Physical Review 17, 273–283.[doi:10.1103/PhysRev.17.273](<https://doi.org/10.1103/PhysRev.17.273>)*Nog niet gebruikt.* Afstand van het front als √t. De nuttigste lacune: niemand heeft het front van het spel ertegen gemeten.
- L. A. Richards, 1931. "Capillary conduction of liquids through porous mediums." Physics 1, 318–333.[doi:10.1063/1.1745010](<https://doi.org/10.1063/1.1745010>)*Nog niet gebruikt.* Diffusiviteit die van de verzadiging afhangt: de formele versie van de D ∝ water² die we niet bouwden, en de oorzaak van scherpe natte fronten.

### Kleur

- P. Kubelka, F. Munk, 1931. "Ein Beitrag zur Optik der Farbanstriche." Zeitschrift für Technische Physik 12, 593–601.Richtinggevend*Vormde het ontwerp mee, niet gebouwd.* **Wat we deden:** de notities raadden K en S per pigment aan; de code heeft geen van beide, en geen verstrooiingsterm.
- Šárka Sochorová, Ondřej Jamriška, 2021. "Practical Pigment Mixing for Digital Painting." ACM TOG 40\(6\), article 234.[doi:10.1145/3478513.3480549](<https://doi.org/10.1145/3478513.3480549>)Richtinggevend*Vormde het ontwerp mee, niet gebouwd.* **Wat we deden:** Mixbox; uitgesloten door de niet-commerciële licentie.
- Ronald van Wijnen. spectral.js. GitHub, MIT licence.[github.com/rvanwijnen/spectral.js](<https://github.com/rvanwijnen/spectral.js>)Richtinggevend*Vormde het ontwerp mee, niet gebouwd.* **Wat we deden:** overwogen; niet in de app. \(De README beschrijft zeven primaire krommen, bemonsterd op 38 punten van 380 tot 750 nm, met Kubelka-Munk met één constante.\)
- D. F. Swinehart, 1962. "The Beer-Lambert Law." Journal of Chemical Education 39\(7\), 333.[doi:10.1021/ed039p333](<https://doi.org/10.1021/ed039p333>)Later gevonden**Wat we deden:** de kleur van het spel is wat de wet beschrijft: absorbantie telt op, licht is exp\(−absorbantie\), per kanaal. De code noemt het optische dichtheid.

### Zeep op melk

- L. E. Scriven, C. V. Sternling, 1960. "The Marangoni Effects." Nature 187, 186–188.[doi:10.1038/187186a0](<https://doi.org/10.1038/187186a0>)Later gevonden**Wat we deden:** de code noemt de stroming en citeert niets.
- Matthieu Roché et al., 2014. "Marangoni Flow of Soluble Amphiphiles." Physical Review Letters 112, 208302.[doi:10.1103/PhysRevLett.112.208302](<https://doi.org/10.1103/PhysRevLett.112.208302>)Later gevonden**Wat we deden:** ons vrijmaken is ook eindig en loopt geleidelijk uit, van dezelfde soort. Niet vergeleken met de schaalwetten ervan: een goede kandidaat voor een echte test.

### Druppelvlekken en spatten

- G. Paul Neitzel, Marc Smith. "The Fluid Dynamics of Droplet Impact on Inclined Surfaces with Application to Forensic Blood Spatter Analysis." Posted on crime-scene-investigator.net, 2018; no original date or venue given.[crime-scene-investigator.net/fluid-dynamics-of-droplet-impact-on-inclined-surfaces-with-application-to-forensic-blood-spatter-analysis.html](<https://www.crime-scene-investigator.net/fluid-dynamics-of-droplet-impact-on-inclined-surfaces-with-application-to-forensic-blood-spatter-analysis.html>)Toegepast*Direct toegepast.* **Wat we deden:** sin α = W/L voor elke druppelvlek, met een grens aan het uitrekken.
- Navid Z. Mehdizadeh, Sanjeev Chandra, Javad Mostaghimi, 2004. "Formation of fingers around the edges of a drop hitting a metal plate with high velocity." Journal of Fluid Mechanics 510, 353–373.[doi:10.1017/S0022112004009310](<https://doi.org/10.1017/S0022112004009310>)Richtinggevend**Wat we deden:** in de notities; geen getal van Weber in de code.
- G. Agbaglah, R. D. Deegan, 2014. "Growth and instability of the liquid rim in the crown splash regime." Journal of Fluid Mechanics 752, 485–496.[doi:10.1017/jfm.2014.240](<https://doi.org/10.1017/jfm.2014.240>)Richtinggevend**Wat we deden:** in de notities; niet als regel gebouwd.
- Nagula Venkata Anirudh, Sachidananda Behera, Kirti Chandra Sahu, 2026. "Unveiling crown-finger instability of a non-spherical drop impacting a liquid surface." arXiv 2601.19621, accepted in the Journal of Fluid Mechanics.[arxiv.org/abs/2601.19621](<https://arxiv.org/abs/2601.19621>)Richtinggevend**Wat we deden:** in de notities; niet als regel gebouwd.

### Groei en patroon

- Thomas A. Witten, Leonard Sander, 1981. "Diffusion-Limited Aggregation, a Kinetic Critical Phenomenon." Physical Review Letters 47, 1400–1403.[doi:10.1103/PhysRevLett.47.1400](<https://doi.org/10.1103/PhysRevLett.47.1400>)Richtinggevend*Vormde het ontwerp mee, afgewezen.* **Wat we deden:** zwervers te traag bevonden; de straal van schimmel is in plaats daarvan een formule van de leeftijd.
- Karl Sims. "Reaction-Diffusion Tutorial."[karlsims.com/rd.html](<https://www.karlsims.com/rd.html>)Richtinggevend*Vormde het ontwerp mee, niet gebouwd.* **Wat we deden:** Gray-Scott als idee genoteerd; niet in de simulatie.
- Jeff Jones, 2010. "Characteristics of pattern formation and evolution in approximations of Physarum transport networks." Artificial Life 16\(2\), 127–153.[doi:10.1162/artl.2010.16.2.16202](<https://doi.org/10.1162/artl.2010.16.2.16202>)Richtinggevend*Vormde het ontwerp mee, niet gebouwd.* **Wat we deden:** een extra idee in de notities; niet gebouwd.
- Alan M. Turing, 1952. "The Chemical Basis of Morphogenesis." Philosophical Transactions of the Royal Society B 237, 37–72.[doi:10.1098/rstb.1952.0012](<https://doi.org/10.1098/rstb.1952.0012>)*Nog niet gebruikt.* Het klassieke artikel over patronen uit reactie en diffusie.

### Vuur

- Zeki Melek, John Keyser, 2005. "Multi-representation interaction for physically based modeling." ACM Symposium on Solid and Physical Modeling, pp. 187–196.[doi:10.1145/1060244.1060265](<https://doi.org/10.1145/1060244.1060265>)Richtinggevend**Wat we deden:** geraadpleegd voor brandend papier; geen vervorming door branden gebouwd.
- Zeki Melek, John Keyser, 2006. "Bending burning matches and crumpling burning paper." SIGGRAPH 2006 Posters.[history.siggraph.org/?p=139521](<https://history.siggraph.org/?p=139521>)Richtinggevend**Wat we deden:** zoals hierboven.
- Zeki Melek, John Keyser, 2007. "Driving object deformations from internal physical processes." Symposium on Solid and Physical Modeling, pp. 51–59.[doi:10.1145/1236246.1236257](<https://doi.org/10.1145/1236246.1236257>)Richtinggevend**Wat we deden:** zoals hierboven.
- Caroline Larboulette, Pablo Quesada, Olivier Dumas, 2013. "Burning Paper: Simulation at the Fiber's Level." Motion in Games 2013, pp. 47–52.[doi:10.1145/2522628.2522906](<https://doi.org/10.1145/2522628.2522906>)Richtinggevend*Vormde het ontwerp mee, afgewezen.* **Wat we deden:** het opkrullen met massa’s en veren op schrift afgewezen als overdreven.
- Richard C. Rothermel, 1972. A mathematical model for predicting fire spread. USDA Forest Service research paper INT-115.[fs.usda.gov/rm/pubs\_int/int\_rp115.pdf](<https://www.fs.usda.gov/rm/pubs_int/int_rp115.pdf>)*Nog niet gebruikt.* Het klassieke verspreidingsmodel voor natuurbranden: vocht, wind, helling. De verkeerde brandstofschaal voor papier; nuttig als begrip.
- Duc Quang Nguyen, Ronald Fedkiw, Henrik Wann Jensen, 2002. "Physically Based Modeling and Animation of Fire." ACM TOG 21\(3\), 721–728.[doi:10.1145/566654.566643](<https://doi.org/10.1145/566654.566643>)*Nog niet gebruikt.* Vuur in de graphics: vlammen in plaats van fronten op papier.
- J. Maunuksela et al., 1997. "Kinetic Roughening in Slow Combustion of Paper." Physical Review Letters 79, 1515–1518.[doi:10.1103/PhysRevLett.79.1515](<https://doi.org/10.1103/PhysRevLett.79.1515>)*Nog niet gebruikt.* Een aanknopingspunt voor brandende fronten in papier; niet gelezen.
- O. Zik, Z. Olami, E. Moses, 1998. "Fingering Instability in Combustion." Physical Review Letters 81, 3868–3871.[doi:10.1103/PhysRevLett.81.3868](<https://doi.org/10.1103/PhysRevLett.81.3868>)*Nog niet gebruikt.* Een aanknopingspunt voor brandende fronten; niet gelezen.

### Elektriciteit

- Gustav Kirchhoff, 1845. "Ueber den Durchgang eines elektrischen Stromes durch eine Ebene, insbesondere durch eine kreisförmige." Annalen der Physik 140\(4\), 497–514.[doi:10.1002/andp.18451400402](<https://doi.org/10.1002/andp.18451400402>)Later gevonden**Wat we deden:** een historische zijsprong. Het gaat over wat het spel doet, stroom die zich over een vlak vel verspreidt; de repo noemt alleen de wetten van Kirchhoff.
- David M. Young, 1954. "Iterative methods for solving partial difference equations of elliptic type." Transactions of the AMS 76, 92–111.[doi:10.1090/S0002-9947-1954-0059635-7](<https://doi.org/10.1090/S0002-9947-1954-0059635-7>)Later gevonden**Wat we deden:** de stroomkring gebruikt overrelaxatie, heen en dan terug; geen bronvermelding in de repo.

### Zandbakspellen en lezingen

- Max Bittker, 2019. "Making Sandspiel."[maxbittker.com/making-sandspiel](<https://maxbittker.com/making-sandspiel>)Richtinggevend**Wat we deden:** gelezen voor de indeling van cellen; we kozen veel doorlopende velden per cel boven losse soorten.
- The Powder Toy, WATR element source.[github.com/The-Powder-Toy/The-Powder-Toy/blob/master/src/simulation/elements/WATR.cpp](<https://github.com/The-Powder-Toy/The-Powder-Toy/blob/master/src/simulation/elements/WATR.cpp>)Richtinggevend**Wat we deden:** materialen als platte records met eigenschappen.
- Petri Purho, 2019. "Exploring the Tech and Design of Noita." GDC 2019.[gdcvault.com/play/1025695/Exploring-the-Tech-and-Design](<https://gdcvault.com/play/1025695/Exploring-the-Tech-and-Design>)Richtinggevend**Wat we deden:** het idee om alleen bij te werken wat veranderd is, zoals beschreven in een [interview met Purho op 80.lv](<https://80.lv/articles/noita-a-game-based-on-falling-sand-simulation/>). Onze tegels zijn op onze eigen manier gebouwd; niets zegt dat ze van Noita kwamen.
- Takuhiro Dohta, Hidemaro Fujibayashi, Satoru Takizawa, 2017. "Change and Constant: Breaking Conventions with 'The Legend of Zelda: Breath of the Wild'." GDC 2017.[gdcvault.com/play/1024562/Change-and-Constant-Breaking-Conventions](<https://gdcvault.com/play/1024562/Change-and-Constant-Breaking-Conventions>)Richtinggevend**Wat we deden:** elementen × materialen, via notities uit de tweede hand: de opgeloste elementen en de reactietabel die door data wordt gestuurd.
