Úgy gondoltam, lenne értelme megtanulni a C# programozási nyelvet. A lenti, szigetes feladat egészen jó alanynak tűnt ahhoz, hogy elkezdjem, úgyhogy a következő szigetest már c#-ban írtam meg, és – Geot felvetése kapcsán – gravitációval. Kifejtés és képek alant:
A gravitációs számolás lényege: minden darabka vonzza a többit. A vonzás a távolság négyzetével arányos. Ha közel érünk egy másik kis szigethez, megállunk:

Végtelen távolság, egységsúlyokkal
Hát ez még nem pont az, amit szeretnénk, de a csoportképzés máris sokkal jobb. Oké, lépjünk tovább, min tudnánk javítani..
Csináljuk meg úgy, hogy csak egy bizonyos távolságon belül keresünk:

Szabályozott távolság, egységsúlyokkal
Határozottan alakul. Nem középre tart mindenki, hanem csoportokat képzünk. Tegyük ezt kicsit félre, és nézzük meg, mi történik akkor, ha az elemeknek súlya is van, akár negatív is..

Súlyozott, végtelen távolság
Ez sem rossz, megintcsak csoportok alakulnak ki, ami részben a taszító hatásnak köszönhető. A súlyeloszlás amúgy nem egyenletes, -2-től +3-ig véletlenszerűen alakul. Kombináljuk most az utolsó két módszert, és nézzük meg, mi történik, ha valamivel kisebb területen próbáljuk ki:

Szabályozott távolság, súlyozott
Mint látható, ebből a mintából minimális utómunkával már nagyszerű szigeteket lehet kialakítani. Tesztelgettem ezt a beállítást párszor, nagyon érdekes formák alakulnak ki..
Ezzel nagyjából el is jutottam oda, ahova akartam, szóval a következő lépésben valami újféle problémát fogok kitalálni, vagy ezt a térképet finomítom valamiképpen..

Ez nagyon látványos. Isten (vagy a természet) is valami hasonló algoritmussal alkothatta meg a nagy korallzátonyokat.
Forráskód elérhető?