Professor Oops

Dun, plakkerig en vettig

Dun, plakkerig en vettig

Ketchup blijft staan, honing loopt uit en olie drijft, zonder code voor ook maar één vloeistof

Knijp ketchup uit en het houdt zijn ronde rups. Giet honing en het kruipt plat uit. Olie drijft op water, door eigeel geklopt wordt het mayonaise, en zeep op melk laat de kleuren alle kanten op vliegen. Niemand heeft voor een van deze dingen een speciaal effect geschreven. Elk plekje van de pagina bewaart wat er ligt, en elke vloeistof volgt dezelfde paar regels met haar eigen getallen.

Geschilderde illustratie van de schilder die een pot schudt, naast een pot met goudgele olie die op blauw water drijft, een pot romige mayonaise, een eidooier en mosterd

Hoe dun een saus is en hoe steil een helling ze kan houden, bepalen of ze blijft staan of uitloopt

Alles wat dik op de pagina ligt, van verf tot modder, wordt bewaard als een diepte in elk piepklein vakje, ongeveer een halve millimeter breed. Vele keren per seconde vergelijkt elk vakje zijn hoogte met zijn vier buren en geeft het een deel van zichzelf door naar beneden. Hoeveel het doorgeeft, komt uit twee getallen in de rij van het materiaal in één gedeelde tabel: hoe dun het is, en hoe steil een helling het kan houden voordat het bezwijkt. Dat tweede getal is zijn zwichtgrens.

Ketchup heeft een hoge zwichtgrens. Een trede van bijna een heel vakje hoog tussen buren blijft staan, dus ketchup houdt een rups van ongeveer 42° steil. Mosterd houdt 45°, modder 39°, tubeverf 37°. Honing heeft helemaal geen zwichtgrens. Het is alleen traag, en het blijft kruipen tot het te dun is om te stromen.

Vakje voor vakje een helling testen heeft een addertje. Elk vakje keek apart naar zijn vier kanten, dus langs een diagonaal kon een helling √2 keer zo steil zijn voordat er iets bewoog, en hoopjes kwamen tot rust als ruitjes. volgende update Pasta’s testen nu hoe steil de hele helling is, welke kant ze ook op valt, en hoopjes komen rond tot rust.

Dunne vloeistoffen krijgen nog één verandering. volgende update Melk, inkt, sap en drankjes houden hun vaart terwijl ze stromen, via vier buizen per vakje die onthouden wat welke kant op ging, afgeremd door de echte viscositeit van de vloeistof. Een hand die door melk wordt gesleept, laat een spoor achter dat in minder dan een halve seconde weer half vol is. In het uitgebrachte spel duurt dat 1,7 s, en melk sluit zich meer als stroop.

Ketchup blijft staan, honing loopt uit en olie drijft, zonder code voor ook maar één vloeistof

Voor technici

Ketchup blijft staan, honing loopt uit en olie drijft, zonder code voor ook maar één vloeistof

Elke cel (ongeveer 0,5 mm; 512 × 384 op een volledig vel, 288 × 216 op een telefoon) stapelt een waterfilm, een laag smurrie en een drijvende laag. Smurrie beweegt door expliciete hoogtediffusie met een dode zone voor de zwichtgrens, met 60 Hz, en elke constante wordt uit één gedeelde materiaaltabel gelezen. De lagen volgen uit een paar eigenschappen die elk materiaal heeft en een vergelijking van dichtheden. De code die vloeistoffen beweegt, bevat helemaal geen materiaal-id.

Onder de motorkap
Hoe dun een saus is en hoe steil een helling ze kan houden

Onder de motorkap

Hoe dun een saus is en hoe steil een helling ze kan houden

Elke cel houdt een diepte bij, een kleur bewaard als absorbantie maal hoogte (zodat smurrie mengt als verf en er niets wordt gemaakt of verloren), hoeveel ervan is gestold, en één materiaal. Het oppervlak dat elke cel vergelijkt, telt de eigen deuken en golving van het papier mee, dus de hobbels van het papier sturen elk stroompje.

De uitgebrachte regel is een hoogtediffusie met een dode zone: voorbij de zwichtgrens van het materiaal groeit de stroming met de extra helling, geschaald met hoe dun het is, en onder een dun laagje stroomt niets. Een stabiliteitsplafond zorgt dat de expliciete stap niet doorschiet. De beweeglijkheid daalt naarmate smurrie stolt en haar zwichtgrens stijgt, dus een drogende saus wordt stijver volgens dezelfde regel.

volgende update Pasta’s testen de grootte van de helling in plaats van elke kant apart. Recht langs één kant is dit de oude regel, en een goedkope vroege uitgang houdt cellen in rust bijna gratis. Een test houdt hoopjes gesmolten ijs, eiwit en slijm rond tot op een paar procent, waar een ruitje er √2 naast zou zitten. Vetten op het papier en de drijvende laag testen nog per kant.

volgende update Dunne vloeistoffen stromen door virtuele buizen met de echte g van water en een stroperige rem die de poiseuillestroming in een dunne film volgt. De duw heeft een plafond voor de stabiliteit, en bij een schone vloeistof wint het plafond, dus g bepaalt de snelheid niet: een echte golf op 3 mm water loopt met ongeveer 17 cm/s, die van het spel veel langzamer. Viscositeit remt ze wel af. Buizen als techniek zijn in lijn met O'Brien 1995; het idee van de zwichtgrens is mee gevormd door Liu 1989, een binghamachtige pasta in een hoogteveld.

Probeer het: laat hoopjes saus vallen De eigen regel van het spel

Ketchup links, honing rechts, aangedreven door de stromingsregel van het spel met hun eigen getallen uit de tabel. Kies een saus en tik op het papier om een hoopje te laten vallen, of druk op Laat een hoopje vallen. Waar je op let: ketchup stopt bijna meteen, honing nooit helemaal. Kies dan gesmolten ijs, laat het vallen en schakel de zwichttest om: per kant komt het als een ruitje tot rust, op helling komt het rond uit. De meter voor rondheid is de eigen maat van de test (1 is rond, 1,41 een ruitje).

Hoopjes ketchup en honing op papier, die tot rust komen volgens de stromingsregel van het spel
Tik om te laten vallen
Zwichttest
×4
zwichtgrens van de saus
—
als helling
—
rondheid laatste hoopje
—
gesimuleerd
—
Een zigzag van ketchup die nog als verhoogde rups staat, naast een plas honing die plat is uitgelopen
In het spel. Dezelfde twee rijen van de tabel op een echte pagina: de ketchupzigzag staat nog, de honing is plat uitgelopen.
Hoe snel elk ding zich in het spel verspreidt (logschaal)Het hele bereik is smal, en honing is maar een paar keer zo traag als olie. In een keuken is honing duizenden keren dikker dan water. In de volgende update dragen dunne vloeistoffen ook impuls mee, dus deze snelheid is alleen hun sijpelen.

Een drankje verspreidt zich met 13,8 cellen² per seconde, melk 12, olie 10,8, ketchup 6, modder 4,2, verf 3,6, honing 1,5 en deeg 0,72.

Hoe snel elk ding zich in het spel verspreidt (logschaal)0,1110100drankjemelkolieketchupmodderverfhoningdeegcellen² per secondeHoe snel elk ding zich in het spel verspreidt (logschaal)0,1110100drankjeoliemodderhoningcellen² per seconde
Gegevenstabel
Hoe snel elk ding zich in het spel verspreidt (logschaal)
verspreidingssnelheid
drankje13,8
melk12
olie10,8
ketchup6
modder4,2
verf3,6
honing1,5
deeg0,72

Bron: Hoe dun iets is, uit de eigen materiaaltabel van het spel (verf is tubeverf), als verspreidingssnelheid.

Olie drijft omdat het licht is en water mijdt, en de code noemt olie nergens

Elk vakje kan drie dingen gestapeld bevatten: een film water, een laag smurrie, en een drijvende laag bovenop. Telkens als er iets neerkomt, beslist één functie waar het heen gaat door zijn rij drie vragen te stellen. Mijdt het water? Is het lichter dan water en dun? Is het eigenlijk wel zachte smurrie, en geen korrels of een klomp?

Twee zachte dingen blijven gescheiden als een ervan drijft en maar een van beide water mijdt. Dan ligt de lichtere bovenop. Olie op ketchup drijft. Honing die op olie wordt gegoten, gaat eronder, en de olie komt bovenop. Olie op gesmolten chocolade roert erdoor: vanwege de cacaoboter zet de rij van chocolade haar precies op de lijn waar iets als vettig telt. Gesmolten kaas zit net onder die lijn, dus volgens dezelfde regel drijft olie erop.

Zoek in de code die vloeistoffen beweegt naar de naam van een materiaal en je vindt er geen. De rijen van de tabel zijn wel met de hand ingetypt, en een paar zitten precies op een lijn omdat dat het juiste resultaat geeft: chocolade en marmerinkt zitten allebei precies op de lijn van water mijden. Dus de eerlijke bewering is dat de code nooit een materiaal noemt, en dat de tabel beslist.

Omdat de lagen echte toestand zijn, kan al het andere ze lezen. Keukenpapier dat op olieachtig water wordt gedept, neemt bij de eerste keer deppen de olie op en bij de tweede het water. Een dun laagje olie houdt een plas tegen bij het opdrogen: na 50 s is de kale plas gezakt tot minder dan 10%, die met olie is nog meer dan half vol.

Onder de motorkap
Olie drijft omdat het licht is en water mijdt

Onder de motorkap

Olie drijft omdat het licht is en water mijdt

Drie eigenschappen worden één keer uit elke rij van de tabel uitgerekend: is het vettig, is het zacht, drijft het. Twee zachte dingen blijven gescheiden als minstens een ervan drijft en ze verschillen in vettig zijn. Alles wat neerkomt, gaat door één laagfunctie, en volgens deze regels zijn bakolie, boter, was en marmerinkt de dingen die drijven. Dichtheid wordt alleen maar vergeleken: er is geen opwaartse kracht en geen volgorde tussen dingen die mengen.

Lezers kiezen een laag met twee regels. Een aanraking van boven treft eerst de bovenkant zodra de film dik genoeg is om te bedekken, en een emulsie bedekt niets. Verdamping wordt geschaald naar hoe open het water aan de lucht ligt, dus zelfs een waas olie sluit het af. Een test legt vast dat een laagje olie een plas tegenhoudt bij het opdrogen.

De drijvende laag heeft haar eigen stroming: dezelfde regel, afgeremd waar ze door wat eronder ligt is geklopt, en sneller en dunner uitvloeiend over een vloeistof dan op papier (een test controleert dat ze daar duidelijk meer oppervlak bedekt). Een pagina zonder olie slaat dat allemaal over, tegel voor tegel; een test controleert dat de renderer dan byte voor byte krijgt wat hij eerder kreeg.

Eén vakje, van opzij

Drijvende laag

olie · was · boter

Dik: bedekt. Een waas: sluit af. Keukenpapier, wind en een vlam treffen de bovenkant.

Smurrielaag

diepte · kleur · gestold

Eén materiaal.

Waterfilm

Kan olie bevatten. Diep: tilt haar op.

Papier

Deuk, golving.

Tot drie dingen stapelen in één vakje, elk met eigen velden: bovenop wat water mijdt en licht is, daaronder één smurrie met haar kleuren gemengd, en daaronder het eigen water van het papier. De notities zijn de regels die bepalen welke laag keukenpapier of de wind het eerst treft, en wanneer olie het water van de lucht afsluit. Het water en de smurrie gebruiken met opzet verschillende eenheden.

Wie drijft op wie? De eigen regel van het spel

Schuif om te kiezen wat je giet en waar het op neerkomt. Het antwoord komt uit dezelfde drie eigenschappen en dichtheidsvergelijking die het spel gebruikt, uit de rij van elk materiaal. Probeer: olie op gesmolten chocolade, en dan olie op gesmolten kaas.

Wat je giet, ligt bovenop, gaat eronder of mengt met waar het op neerkomt, volgens de laagregel van het spel
7
je giet
—
1
op
—
wat je giet
—
regel
—
gegoten: mijdt water
—
→
—
dichtheid
—
drijft
—
eronder: mijdt water
—
→
—
dichtheid
—
drijft
—
Een plas blauw water met een goudgele film bakolie eroverheen, het dikst naar de rand toe, met het blauw dat in het midden door het goud schemert, en droog papier eromheen
In het spel. Bakolie die op een plas blauw water wordt gegoten, verspreidt zich erover als een eigen goudgele film. Waar de film dun is, schemert het blauw erdoorheen; de olie ligt bovenop en mengt er niet in.

Klop olie door eigeel en het blijft mayonaise, klop het door azijn en het wordt weer helder

Giet olie op eigeel en laat het staan, en het blijft een laag erbovenop. Alleen bewerken mengt ze: een vinger die klopt, een klap, druppels die erin spatten. Dan worden de twee samen troebel, en wat er daarna gebeurt, hangt af van wat er in de kom zit.

Eigeel bevat een emulgator, en een beetje eigeel kan een paar keer zijn eigen hoeveelheid olie vasthouden. Geklopt wordt het romig en blijft het zo: een test controleert dat het twee minuten later nog romig is. Zodra er duidelijk meer olie dan eigeel is, helemaal geklopt, zit de olie zo dicht op elkaar dat het overeind blijft staan als mayonaise. Azijn heeft geen emulgator. Geklopt wordt het troebel, en in ongeveer twee minuten is het weer helder. Zeep telt ook als emulgator, en zeepsop dat over een vetvlek wordt gewerkt, tilt het vet uit het papier.

Er zijn geen druppeltjes in de simulatie. Elk vakje houdt één getal bij: het deel van zijn olie dat door wat eronder ligt is geklopt. De olie blijft als olie geteld en het water als water, dus er kan niets zoekraken als het weer uit elkaar gaat.

Onder de motorkap
Klop olie door eigeel en het blijft mayonaise

Onder de motorkap

Klop olie door eigeel en het blijft mayonaise

Per cel houdt één getal het deel van de drijvende olie bij dat door de laag eronder is geklopt. Alles wat de pagina bewerkt (een vinger, wind, een spat) laat een gegeven achter van hoe hard er werd geroerd, en het deel klimt naar wat het aanwezige water kan opnemen, sneller waar er een emulgator bij de hand is. Hoeveel emulgator er is, van het eigeel, de eigen rij van de olie of zeep, bepaalt hoeveel olie het kan vasthouden. Waar het niet alles kan vasthouden, zakt het deel in een vast tempo terug, sneller naarmate het verder tekortschiet.

Stijfheid komt uit het aandeel olie, φ = olie/(olie + water), in de stroming van de onderste laag: voorbij een bepaalde pakking loopt de emulsie steeds minder vrij, en helemaal gepakt blijft ze staan. Dat is hetzelfde vastlopen dat echte mayonaise stijf maakt, teruggebracht tot één helling.

Automatische tests leggen beide uitersten vast: geroerd eigeel en olie blijven twee minuten romig met bijna geen olieverlies, azijn en olie worden helder, olie die ongeklopt op eigeel blijft liggen, blijft een laag, een beetje olie in melk zakt nog in en veel olie blijft staan. Blijven staan wordt getest op melk met de emulsie door de test ingesteld; geen test klopt een eigeel en meet daarna of het blijft staan.

Probeer het: klop olie in een kom De eigen regel van het spel

De kom wordt bij het openen al geklopt. Sleep eroverheen om meer te kloppen, of druk op Kloppen, en kijk dan. Waar je op let: met eigeel blijft de room; met azijn of melk gaat het binnen een paar minuten terug naar strepen olie (zet het versnellen hoger). Voeg olie toe tot de meter zegt dat het blijft staan. De emulsieregel is die van het spel; hoe het zich over de kom verdeelt, is hier een eenvoudige vervaging.

Een kom met olie op eigeel die tot een emulsie wordt geklopt
In de kom
2,0
×1
olie erdoor geklopt
—
emulgator houdt vast
—
het
—
sinds het kloppen
—
Na het kloppen: wat gemengd blijftEen test controleert dat eigeel na twee minuten nog romig is en dat azijn helder wordt.

Eigeel blijft helemaal gemengd; met de helft van de emulgator die het nodig heeft, is na twee minuten nog 22% gemengd, en geklopte azijn is gezakt tot 5%.

Na het kloppen: wat gemengd blijft0,00,20,40,60,81,0050100150seconden nadat je stoptdeel dat nog gemengd ishier getestNa het kloppen: wat gemengd blijft0,00,20,40,60,81,0050100150seconden nadat je stoptdeel dat nog gemengd ishier getest
  • eigeel (houdt alles vast)
  • de helft van de emulgator die nodig is
  • azijn (geen)
Gegevenstabel
Na het kloppen: wat gemengd blijft
seconden nadat je stopteigeel (houdt alles vast)de helft van de emulgator die nodig isazijn (geen)
0111
310,96320,9277
610,92770,8607
910,89360,7985
1210,86070,7408
1510,8290,6873
1810,79850,6376
2110,76910,5916
2410,74080,5488
2710,71360,5092
3010,68730,4724
3310,6620,4382
3610,63760,4066
3910,61420,3772
4210,59160,3499
4510,56980,3247
4810,54880,3012
5110,52860,2794
5410,50920,2592
5710,49040,2405
6010,47240,2231
6310,4550,207
6610,43820,192
6910,42210,1782
7210,40660,1653
7510,39160,1534
7810,37720,1423
8110,36330,132
8410,34990,1225
8710,33710,1136
9010,32470,1054
9310,31270,0978
9610,30120,0907
9910,29010,0842
10210,27940,0781
10510,26910,0724
10810,25920,0672
11110,24970,0623
11410,24050,0578
11710,23170,0537
12010,22310,0498
12310,21490,0462
12610,2070,0429
12910,19940,0398
13210,1920,0369
13510,1850,0342
13810,17820,0317
14110,17160,0295
14410,16530,0273
14710,15920,0253
15010,15340,0235
15310,14770,0218
15610,14230,0202
15910,1370,0188
16210,1320,0174
16510,12710,0162
16810,12250,015
17110,11790,0139
17410,11360,0129
17710,10940,012
18010,10540,0111

Bron: De ontmengregel van het spel: een emulsie met te weinig emulgator zakt in een vast tempo terug, sneller naarmate ze verder tekortschiet.

Meer olie, stijvere emulsieMarkeringen: olie op melk 1 : 5 en 4 : 1, de twee gevallen die een test controleert (een vijfde zoveel olie als melk loopt; vier keer zoveel blijft staan).

Tot een aandeel olie van 0,35 loopt ze vrij; van 0,35 tot 0,6 wordt ze stijver, en boven 0,6 blijft ze staan.

Meer olie, stijvere emulsie0,00,20,40,60,81,00,00,20,40,60,81,0aandeel olie, φhoe vrij ze loopt1 : 54 : 1Meer olie, stijvere emulsie0,00,20,40,60,81,00,00,20,40,60,81,0aandeel olie, φhoe vrij ze loopt1 : 54 : 1
Gegevenstabel
Meer olie, stijvere emulsie
aandeel olie, φhoe vrij ze loopt
01
0,011
0,021
0,031
0,041
0,051
0,061
0,071
0,081
0,091
0,11
0,111
0,121
0,131
0,141
0,151
0,161
0,171
0,181
0,191
0,21
0,211
0,221
0,231
0,241
0,251
0,261
0,271
0,281
0,291
0,31
0,311
0,321
0,331
0,341
0,351
0,360,96
0,370,92
0,380,88
0,390,84
0,40,8
0,410,76
0,420,72
0,430,68
0,440,64
0,450,6
0,460,56
0,470,52
0,480,48
0,490,44
0,50,4
0,510,36
0,520,32
0,530,28
0,540,24
0,550,2
0,560,16
0,570,12
0,580,08
0,590,04
0,60
0,610
0,620
0,630
0,640
0,650
0,660
0,670
0,680
0,690
0,70
0,710
0,720
0,730
0,740
0,750
0,760
0,770
0,780
0,790
0,80
0,810
0,820
0,830
0,840
0,850
0,860
0,870
0,880
0,890
0,90
0,910
0,920
0,930
0,940
0,950
0,960
0,970
0,980
0,990
10

Bron: De stijfheidshelling van het spel: voorbij een bepaalde pakking van olie loopt de emulsie vast.

Zeep op melk trekt het oppervlak weg, en de show stopt als de zeep op is

Druppel kleurstof op melk, raak hem aan met zeep, en de kleuren schieten weg van de zeep. Dat is het Marangoni-effect Scriven 1960. Zeep verlaagt de spanning van het oppervlak, en het schone oppervlak eromheen, dat harder trekt, trekt het oppervlak naar zich toe en neemt de kleuren mee.

In het spel ligt zeep op het oppervlak als een hoeveelheid per vakje. Het oppervlak beweegt als een laag blokken van vier vakjes breed, elk getrokken naar waar de spanning hoger is. Het vet van de melk telt twee keer. Het laat het oppervlak harder antwoorden, dus melk trekt veel harder dan water. En het bindt de zeep en raakt daarbij op. De beweging zwakt vanzelf af naarmate de zeep opraakt en zich gelijkmatig verdeelt, zonder ergens een timer.

Hetzelfde bewegende oppervlak draagt mee wat erop rijdt. Zeep op een plas met peper erop laat de peper meteen vluchten. Zeep op natte waterverf duwt de verf tot een ring rond een licht gat.

In het uitgebrachte spel schieten de kleuren naar buiten en krullen ze een beetje aan de randen. volgende update Ze wervelen echt. Room is niet gelijkmatig door melk verdeeld, dus langs het front van de zeep trekt het ene stuk harder dan het volgende, en die twee schuiven langs elkaar. Dat verschil laat het oppervlak draaien, en het draaien gaat nog seconden door nadat de duw is afgezwakt.

Onder de motorkap
Zeep op melk trekt het oppervlak weg

Onder de motorkap

Zeep op melk trekt het oppervlak weg

De oppervlaktelaag draait in een lager tempo dan de vloeistoffen, alleen zolang er iets beweegt, en alleen in een vak rond de zeep. Hij is grover dan de pagina: elk blok beslaat een stukje van een paar vakjes.

Zeep verlaagt de spanning langs een verzadigende curve, dus een beetje zeep doet het meeste werk en meer zeep op een zeepachtig plekje voegt weinig toe. De trek van het oppervlak volgt de helling van de spanning, groeit met het vet van de melk, en negeert hellingen die te zwak zijn om mee te tellen. De snelheid van de laag schuift naar die trek, en wordt semi-Lagrangiaans door zichzelf meegenomen, zoals in de lucht Stam 1999, en blijft krullen door vorticity confinement, in lijn met Fedkiw 2001, onder een snelheidslimiet. Er is geen drukprojectie: de laag mag samendrukken en dunner worden. Zeep zakt langzaam uit het oppervlak weg en wordt gebonden door vrij vet, wat het vet verbruikt; dat is wat de show beëindigt.

volgende update Het wervelen: het vet varieert over de melk in een gladde ruis met een seed van het papier, veel meer dan in het uitgebrachte spel. De rotatie van de trek wekt vorticiteit op, die in seconden uitdooft; elke stap wordt er een stroomfunctie uit opgelost met een paar warm gestarte overrelaxatierondes, en het oppervlak beweegt langs de hoogtelijnen ervan. Een test controleert dat ongelijk vet het oppervlak laat draaien en gelijk vet nauwelijks.

Een automatische test legt de uitbarsting vast: ze opent snel in de eerste seconde, beweegt na meer dan tien seconden nog, maakt nooit een sprong, en komt uiteindelijk tot rust. De WebAssembly-tweeling houdt elke kleur en de melk gelijk tot op afronding. Het eindige, afzwakkende opklaren is van dezelfde soort als in Roché 2014; er is niets op gefit.

Probeer het: zeep op melk De eigen regel van het spel

Kort na het openen valt er een zeepdruppel in het midden. Tik om meer zeep toe te voegen, of schakel naar kleur en tik om druppels toe te voegen; de knoppen voegen ze ook toe. Waar je op let: de uitbarsting, en dan het langzame afzwakken terwijl vet de zeep bindt. Een tweede zeepdruppel op een zeepachtig plekje doet weinig; op schone melk veel. Schakel naar de melk van de volgende update voor het wervelen. De oppervlaktelaag volgt de regel van het spel; hier rijden zeep en kleuren erop mee met een eenvoudiger methode dan die van het spel, en beide houden elke druppel.

Kleurstof op melk die wegschiet van een druppel zeep
Tik voegt toe
Melk
snelst
—
zeep op het oppervlak
—
meeste vet verbruikt in een vakje
—
tijd
—
Melk met rode, blauwe, gele en groene kleurstof die wegschiet van een tikje zeep
In het spel. Vier druppels kleurstof op melk, een moment na een druppel afwasmiddel in het midden.
Een beetje zeep doet bijna allesDe zeepas is logaritmisch: −5 is 0,00001, 0 is 1. Een test controleert dat een druppel op een plekje dat al zeepachtig is weinig doet; op schone melk veel.

De spanning is bij 0,005 zeep al voor de helft weg; bij 0,05, waar een plekje al als zeepachtig telt, is ze gezakt tot 0,09.

Een beetje zeep doet bijna alles0,00,20,40,60,81,0−5−4−3−2−10zeep op het oppervlak, als macht van tienoppervlaktespanning σal zeepachtighalverwegeEen beetje zeep doet bijna alles0,00,20,40,60,81,0−5−4−3−2−10zeep op het oppervlak, als macht van tienoppervlaktespanning σal zeep…halverwege
Gegevenstabel
Een beetje zeep doet bijna alles
zeep op het oppervlak, als macht van tienoppervlaktespanning σ
−50,998
−4,93750,9977
−4,8750,9973
−4,81250,9969
−4,750,9965
−4,68750,9959
−4,6250,9953
−4,56250,9946
−4,50,9937
−4,43750,9927
−4,3750,9916
−4,31250,9904
−4,250,9889
−4,18750,9872
−4,1250,9852
−4,06250,983
−40,9804
−3,93750,9774
−3,8750,974
−3,81250,9701
−3,750,9657
−3,68750,9605
−3,6250,9547
−3,56250,9481
−3,50,9405
−3,43750,9319
−3,3750,9222
−3,31250,9113
−3,250,8989
−3,18750,8851
−3,1250,8696
−3,06250,8524
−30,8333
−2,93750,8124
−2,8750,7895
−2,81250,7645
−2,750,7377
−2,68750,7089
−2,6250,6783
−2,56250,6461
−2,50,6126
−2,43750,5779
−2,3750,5425
−2,31250,5066
−2,250,4707
−2,18750,435
−2,1250,4
−2,06250,366
−20,3333
−1,93750,3022
−1,8750,2727
−1,81250,2451
−1,750,2195
−1,68750,1958
−1,6250,1741
−1,56250,1544
−1,50,1365
−1,43750,1204
−1,3750,106
−1,31250,0931
−1,250,0817
−1,18750,0715
−1,1250,0625
−1,06250,0546
−10,0476
−0,93750,0415
−0,8750,0361
−0,81250,0314
−0,750,0273
−0,68750,0238
−0,6250,0206
−0,56250,0179
−0,50,0156
−0,43750,0135
−0,3750,0117
−0,31250,0102
−0,250,0088
−0,18750,0076
−0,1250,0066
−0,06250,0057
00,005

Bron: De spanningscurve van het spel: een gekozen verzadigende vorm, geen gefitte isotherm.

Vet laat het oppervlak harder trekkenHet spel heeft één melk: mager bestaat alleen in een test die de tabel verandert, waar ze duidelijk minder ver uitbarst.

Water trekt met 180, magere melk (in een test) met 250 en volle melk met 547 cellen per seconde per eenheid σ-helling.

Vet laat het oppervlak harder trekken0100200300400500600watermager (test)volle melktrek, cellen/s per σ-hellingVet laat het oppervlak harder trekken0200400600watermager (test)volle melktrek, cellen/s per σ-helling
Gegevenstabel
Vet laat het oppervlak harder trekken
trek
water180
mager (test)250
volle melk547

Bron: De trek van het spel bij gelijkmatig vet, uit de rij van melk in de materiaaltabel.

Een hand, een tandenstoker en een druppel inkt verplaatsen vloeistof zonder er iets van te maken of te verliezen

Sleep een handpalm door verf en de pasta hoopt zich voor hem op terwijl dun spul zich achter hem sluit. Een zachte handpalm veegt het papier niet schoon. Hij rijdt over een deel van de pasta en laat een dunnere laag achter, licht gestreept langs de haal. Dezelfde code dient een handpalm, een poot, een wiel, een bal en een raamwisser. Ze verschillen in voetafdruk, hardheid, hoe vlak hun oppervlak is en hoeveel ze slippen.

Sla met een hamer op oobleck en het spat niet; druk er langzaam in en je zakt erin weg. Hoe sneller een duw is voor zijn grootte, hoe meer de maïzena vastloopt.

Een tandenstoker werkt anders. Die sleept mee wat dicht bij hem is, en wat verder weg ligt, stroomt de andere kant op terug, zoals een stokje kleur door scheerschuim laat wervelen. De stroming is zo gebouwd dat wat een vakje in gaat, er ook weer uit komt. De kleur wordt tot aderen getrokken en er gaat niets verloren.

Marmerinkt laat dit het duidelijkst zien. Een nieuwe druppel op water spreidt zich meteen uit tot een dunne film en duwt elke eerdere ring precies zoveel naar buiten als nodig is om plaats voor zichzelf te maken. Druppel na druppel op één plek maakt ringen in ringen, elke kleur bewaard. Kam ze en je krijgt veren. Het resultaat hangt nauwelijks af van hoe je beweegt: in één lange haal kammen of in piepkleine bewegingen komt binnen 15% op dezelfde vorm uit.

Onder de motorkap
Een hand, een tandenstoker en een druppel inkt verplaatsen vloeistof

Onder de motorkap

Een hand, een tandenstoker en een druppel inkt verplaatsen vloeistof

Elke sleep wordt een rij kleine duwtjes langs de haal. Elk duwtje neemt een deel van wat onder de voetafdruk ligt, meer bij het midden en meer van zacht spul, en legt het een stukje verder neer, glad verdeeld over buurcellen zodat een schuine haal geen trapjes maakt. Een vlak oppervlak ploegt alleen wat zijn vorm houdt. Een zacht oppervlak rijdt over een deel van de film, afhankelijk van hoe hard het is en hoe goed het spul hecht, en laat lichte strepen langs de haal achter. Daarna zakt een pasta terug tot een helling die haar zwichtgrens kan houden. Oobleck loopt vast naar hoe snel de duw is voor zijn grootte, dus een hamer treft iets vasts en een langzame druk zakt erin weg. Een test controleert dat de film die achterblijft van het materiaal afhangt, dat de strepen langs de haal lopen, en dat er niets wordt gemaakt of verloren. Duwen in een hoogteveld zoals dit is mee gevormd door Sumner 1999.

Een punt verplaatst de vloeistof met een stroomfunctie langs zijn pad: hij sleept mee wat dichtbij is en stuurt verder weg een zachte terugstroming. De stroming door elk zijvlak is een verschil van de stroomfunctie op zijn hoeken, dus ze is per constructie divergentievrij, en niets kan zich ophopen of verdwijnen. Een marmerdruppel gebruikt de puntbron van het wiskundige marmeren: elk plekje van de film op straal r schuift naar √(r² + a), waarbij a de eigen oppervlakte van de druppel gedeeld door π is, dus de oude ringen maken precies de ruimte die de nieuwe druppel nodig heeft. Een test controleert dat de ringen concentrisch blijven met hun kleuren bewaard, en dat kammen de hoofdkleur van elk plekje houdt met heel weinig modder.

Probeer het: druppel en kam marmerinkt De eigen regel van het spel

Druppels landen in het midden, dan kamt een tandenstoker erdoorheen. Tik om inkt te druppelen, of schakel naar de tandenstoker en sleep; Inkt druppelen en Erdoorheen kammen doen hetzelfde vanaf het toetsenbord. Waar je op let: elke nieuwe druppel duwt de oude ringen naar buiten zonder ze te mengen, en kammen maakt veren. De meter vergelijkt de oppervlakte van de film met wat de druppels erin hebben gedaan: kammen verandert die nooit. De ringen zijn hier omtrekken die door de eigen formules van het spel worden verplaatst; het spel verplaatst de film cel voor cel.

Druppels marmerinkt die tot ringen worden geduwd en met een tandenstoker worden gekamd
Tik of sleep
10 cellen
druppels
—
oppervlakte film
—
door druppels erin
—
Een band blauwe tubeverf na één haal met de handpalm van links naar rechts: een verhoogde richel verf waar de hand stopte, en een vlakkere, licht gestreepte laag in het spoor erachter
In het spel. Eén haal met de handpalm door tubeverf, van links naar rechts: de pasta hoopt zich op tot een richel waar de hand stopte, en het spoor erachter houdt een dunnere laag, licht gestreept langs de haal.
Ringen blauwe, rode en gele marmerinkt op water, met een tandenstoker gekamd tot puntige veren
In het spel. Marmerinkt op één plek gedruppeld, blauw, rood en geel, twee keer achter elkaar, en dan drie keer met een tandenstoker erdoorheen gekamd.

Boter laat een doorschijnende vlek achter, zeepsop schuimt en modder barst als het droogt

Vet. Smelt boter op papier en het laat een doorschijnende vlek achter die langzaam uitloopt tot een rand en dan stopt. Water en een spons krijgen hem niet weg. Doe afwasmiddel bij het water en hij spoelt eruit zonder te schrobben. Nat papier neemt geen vet op, en vettig papier houdt het meeste water tegen, dus wat het eerst kwam, wint. Vet dat eruit wordt gespoeld, komt altijd naar boven als bakolie, wat er ook in ging: het papier houdt één getal bij voor vet, geen recept.

Schuim. Zeepsop dat wordt gewreven of gespat, schuimt op; stilstaand water op zeep blijft stil. Het schuim zelf is een stijve smurrie die nooit stroomt, en de belletjes erop zijn getekende voorwerpen met timers, tot een vast aantal. Ze zwellen op, knappen en laten het papier een beetje vochtig achter. Er wordt geen gas bijgehouden.

Modder. Modder is gewoon nog een rij in de tabel, net als ketchup: vrij stijf, houdt een helling bijna net zo goed als ketchup, en vormt een korst terwijl het droogt. Een klodder ervan komt met steentjes en takjes. Laat het zes uur liggen of bak het, en het barst in schollen van een paar millimeter. De barsten zijn een patroon dat aan het eind van het wachten wordt neergelegd. Er wordt geen spanning uitgerekend, en tijdens het spelen barst er niets.

volgende update Steentjes liggen als een eigen laag op modder en zakken weg als de modder eronder inzakt, en schuim knapt binnen een paar seconden, tenzij zeep het overeind houdt.

Onder de motorkap
Boter laat een doorschijnende vlek achter, zeepsop schuimt en modder barst

Onder de motorkap

Boter laat een doorschijnende vlek achter, zeepsop schuimt en modder barst

Vet: papier kan maar een beperkte hoeveelheid vet in zijn vezels houden. Vet gaat er alleen in zover er ruimte is en het papier niet nat is, en vettig papier neemt op zijn beurt water langzamer op. Om de zoveel tijd verspreidt het vet zich door diffusie tussen buren van wat boven een vastgehouden hoeveelheid zit, dus een vlek loopt uit tot een rand en stopt; als ze stilligt, kijkt de code er niet meer naar. Ze wordt doorschijnend getekend naar verhouding van hoe vol het papier is. Zeepsop dat eroverheen wordt gewerkt, haalt er elke keer wat uit. De oven draait dezelfde regel vele malen achter elkaar. Een automatische test legt vast hoe het eruit spoelt.

Schuim wordt een paar keer per seconde gemaakt, alleen waar zeep wordt bewerkt en er water is; harde wind telt als bewerken. Belletjes hebben een willekeurige grootte, en hun kans om te knappen groeit met hun leeftijd en is groter bij kleine, dus de kleine gaan eerst.

Modder: een voronoipatroon wordt één keer toegepast na een wachttijd van zes uur of meer, of de oven; dunne naden barsten, randen krullen op en de schollen worden lichter. Korstvorming verliest alleen water, dus de kleur per eenheid blijft en wordt dieper; een velletje houdt een lichte aanraking, en een handpalm breekt het waar een vingertop dat niet doet.

Probeer het: een vetvlek, een berg schuim, een moddertaartje De eigen regel van het spel

Kies er een en tik op het papier, of druk op Voeg er een toe. Waar je op let: de botervlek loopt snel uit, dan langzamer, en stopt bij een rand (de meter zegt wanneer hij in rust is). De kleine belletjes gaan eerst en de berg wordt in een minuut dunner. De modder droogt zes uur in een paar seconden en barst dan in één keer in schollen. Elk draait op de getallen van het spel: de vetvlek op zijn eigen verspreidingsregel, de belletjes op hun eigen knapkans, de barsten op de schollengrootte en naadbreedte van modder. De tekening is eenvoudiger dan die van het spel.

Een vlek boter die zich in papier verspreidt, een berg schuim die knapt, of modder die droogt en barst, volgens de regels van het spel
Tik voegt toe
vlek breed
—
vet
—
belletjes
—
geknapt
—
in het spel
—
drogen
—
schollen
—

Het grootste deel van de pagina ligt stil, dus de tablet werkt alleen waar iets beweegt

Een volle pagina heeft ongeveer 200.000 vakjes, en de meeste bewegen op een gegeven moment niet. De pagina is in kleine tegels gesneden die slapen als er niets in verandert, wakker worden als er iets neerkomt, en de tijd inhalen die ze sliepen als ze aan de beurt zijn. Op een pagina zonder olie wordt het werk van de drijvende laag overgeslagen. Het oppervlak van zeep op melk draait alleen zolang er iets beweegt, en alleen rond de zeep.

De drukste lussen draaien ook als WebAssembly, met de hand geschreven en vakje voor vakje vergeleken met de gewone code, de meeste tot op de laatste bit. Het technische hoofdstuk vertelt dat verhaal.

Onder de motorkap
Het grootste deel van de pagina ligt stil, dus de tablet werkt alleen waar iets beweegt

Onder de motorkap

Het grootste deel van de pagina ligt stil, dus de tablet werkt alleen waar iets beweegt

Tegels zijn wakker, kruipend of tot rust gekomen. Kruipende tegels worden minder vaak doorgerekend, tot rust gekomen tegels alleen af en toe bekeken, en lege bijna nooit, binnen een tegelbudget per beeld dat kleiner wordt met het detailniveau. Traag plaatselijk werk (intrekken, vlekken, drogen) haalt met een gesloten formule in als een tegel aan de beurt is; een test houdt de vlek van ketchup bij het laagste detail dicht bij wat vol detail geeft.

WebAssembly-tweelingen van de lussen voor smurrie, de drijvende laag, Marangoni en duwen, met de hand geschreven in AssemblyScript en werkend in het eigen geheugen van de simulatie. Smurrie, duwen en Marangoni zijn bit voor bit gelijk aan hun JavaScript, elk vastgelegd in een eigen test; de drijvende laag komt overeen tot op afronding. Gemeten toen elk erin kwam: duwen 2,6–2,9× sneller dan JS met olie op de pagina; de drijvende laag 2,2–2,4× minder tijd, in totaal 30–35% minder per tik; Marangoni op melk met 12 druppels en 2 van zeep, van 2,8–3,0 ms per tik naar 1,5–1,7 ms bij 432 × 324. Van deze vier gebruikt in het uitgebrachte spel alleen de drijvende laag SIMD. Sprongen in de tijd draaien dezelfde stromingsrondes in plakjes, met hetzelfde tegelbudget op elk apparaat, dus een trage tablet krijgt dezelfde pagina.

3
dingen kunnen in één vakje stapelen: een waterfilm, een laag smurrie en een drijvende laag.
0
materiaalnamen in de vijf bestanden die vloeistoffen bewegen. De tabel beslist.
512 × 384
vakjes op een volle pagina, elk ongeveer een halve millimeter, de meeste slapend tot er iets bij hen in de buurt beweegt.
2 min
voordat geklopte azijn en olie weer helder zijn. Geklopt eigeel blijft romig.
4
vloeistoflussen met een met de hand geschreven WebAssembly-tweeling; drie ervan bit voor bit gelijk aan de gewone code.
2.6–2.9×
sneller duwen door vettige smurrie met de WebAssembly-tweeling dan in gewoon JavaScript.

Vuur, wind en de hond treffen dezelfde olie en melk, omdat ze allemaal dezelfde lagen lezen

Het vuur, de wind en de hond lezen en schrijven dezelfde velden als de vloeistoffen, en de effecten hieronder komen daaruit voort. Elk is vastgelegd in een test.

Gedeeld: drijvende laag op water · contact met lucht

Giet een beetje olie op een van twee plassen en wacht

De kale plas droogt op; die met olie is er nog.

Water in papier

Gedeeld: water onder de drijvende laag · warmte

Druppel water op brandende olie

Het flitst tot stoom en gooit de brandende olie omhoog. Op hete olie sputtert het alleen; op koude olie glijdt het eronder.

Warmte en vuur

Gedeeld: wind · de bovenste laag

Blaas met een föhn over olie die op een saus ligt

Het laagje olie waait mee; de saus eronder beweegt nauwelijks, vastgehouden door haar zwichtgrens.

Lucht die echt beweegt

Gedeeld: de bovenste laag · wat pootjes meedragen

Laat de hond door olieachtig water lopen

Hij laat vettige pootafdrukken achter waar hij daarna ook gaat.

Dieren met een eigen wil

Gedeeld: zuurelement in smurrie

Strijk citroensap door melk

Met genoeg ervan schift de melk in wrongel en wei.

Scheikunde en pH

Gedeeld: oppervlakteactieve stof · de film van nat papier

Raak natte waterverf aan met zeep

Het oppervlak trekt weg en duwt de verf tot een ring rond een licht gat.

Hoe kleuren mengen

Ketchup blijft staan en honing loopt op een tablet, omdat het spel spatten en klotsen opgeeft

Een kind op een tablet heeft ketchup nodig die blijft staan en honing die uitloopt, zestig keer per seconde, op 200.000 vakjes. Elke kortere weg hieronder houdt een gedrag dat een kind kan zien, en geeft iets op wat op die schaal niemand zou merken.

In het echt. Vloeistoffen zijn driedimensionaal en dragen impuls mee.

In het spel. Een hoogteveld: één diepte, één kleur, één materiaal per laag per vakje. Pasta’s hebben helemaal geen snelheid.

Waarom dat genoeg is. Het draait op een telefoon. Verloren: overhangen, vouwen en klotsen; ketchup spat nooit terug.

In het echt. Een pasta met een zwichtspanning blijft staan waar haar gewicht op de helling onder haar zwichtgrens blijft, dus een dikkere laag houdt een flauwere helling.

In het spel. Een hellingsdrempel per materiaal, zonder diepte erin. Alleen de aparte glijregel op een gekantelde pagina kijkt naar diepte.

Waarom dat genoeg is. Eén getal geeft de rups. Hoopjes komen tot rust als kegels met rechte zijkanten, niet als koepels, en de drempel is geen spanning: hij heeft geen eenheden.

In het echt. Viscositeiten lopen tussen water en honing duizenden keren uiteen.

In het spel. Hoe dun iets is, beslaat een smal bereik. Honing is maar een paar keer zo traag als olie.

Waarom dat genoeg is. Een expliciete stap is alleen stabiel onder een grens, en alles wat veel trager is, lijkt vast te zitten. Snelheid is hier een gevoel, geen meting.

In het echt. Dunne films stromen met de derde macht van de diepte.

In het spel. De stroming van pasta groeit met de helling voorbij de zwichtgrens, los van de diepte; onder een dun laagje stroomt niets.

Waarom dat genoeg is. Stabiel en goedkoop. Een dikke plas en een dunne film kruipen in hetzelfde tempo tot de film dun genoeg is om te stoppen.

In het echt. Vloeistoffen sorteren zich op dichtheid tot torens.

In het spel. Twee lagen en een waterfilm. Dichtheid wordt alleen vergeleken voor dingen die niet mengen.

Waarom dat genoeg is. Een paar extra getallen per vakje, en er is geen werk aan op een pagina zonder olie. Geen dichtheidstoren: honing in melk mengt gewoon.

In het echt. Twee vloeistoffen op één plek mengen hun eigenschappen.

In het spel. Kleuren middelen naar hoeveelheid; het materiaal is de winnaar die alles krijgt, de grootste stroom die binnenkomt.

Waarom dat genoeg is. Eén materiaal per vakje. Een mengsel van honing en ketchup gedraagt zich vakje voor vakje als het een of het ander.

In het echt. Een emulsie bestaat uit druppeltjes van veel groottes.

In het spel. Eén aandeel per vakje, een stijfheidshelling naarmate de olie dichter wordt gepakt, en een vast tempo van ontmengen.

Waarom dat genoeg is. Olie blijft per constructie behouden. De druppelgrootte is weg; het tempo en de helling zijn afgesteld om goed te lezen.

In het echt. Zeep verlaagt de spanning langs een gemeten curve, en het oppervlak sleept de vloeistof eronder mee.

In het spel. σ daalt langs één verzadigende curve, dezelfde voor water en melk; een grove laag schuift naar de trek toe, zonder projectie.

Waarom dat genoeg is. Alleen de helling van σ drijft de stroming aan, en de vorm klopt in soort. De sterkte van de trek is afgesteld, en de diepte van de melk speelt geen rol.

In het echt. Schuim wordt grover doordat gas tussen belletjes verhuist; modder barst door spanning terwijl het krimpt.

In het spel. Belletjes zijn cirkels met timers; barsten zijn een voronoipatroon dat aan het eind van een lange wachttijd wordt neergelegd.

Waarom dat genoeg is. Allebei zien ze er goed uit voor bijna niets. Geen van beide verandert tijdens het spelen zoals het echte ding zou doen.