05 - Emergentné systémy
simple is complex
Sa vzťahujú na komplexné vzorce alebo správanie, ktoré vznikajú interakciou jednoduchších jednotlivých zložiek alebo prvkov. Tieto vzory sú často neočakávané a nie sú explicitne naprogramované, ale vznikajú skôr ako výsledok vzťahov a interakcií medzi komponentmi. Emergencia je základným konceptom vo vede, umení a tvorivom programovaní, pretože umožňuje vytvárať zložité, dynamické a často krásne vzory, ktoré možno nájsť v rôznych oblastiach.
Príklady emergentných systémov:
Dav ľudí idúci rušnou ulicou
Vtáky letiace v kŕdli alebo ryby plávajúce v húfoch vykazujú emergentné správanie, pri ktorom sa jednotlivé živočíchy riadia niekoľkými jednoduchými pravidlami, aby vytvorili koordinované skupinové vzory.
Vzory počasia: Systémy počasia, ako sú hurikány a tornáda, vznikajú na základe interakcií medzi gradientmi teploty, tlaku a vlhkosti.
Formovanie kryštálov
Prezentatácia
Príklady
Umenie
Bridget Riley's Op Art
Sol LeWitt
Array (pole)
Pridávanie a odstraňovanie objektov v poli – push()
a splice()
push()
a splice()
V JavaScripte používame polia na uloženie viacerých objektov (napr. ornament). Keď pohnete myšou, vytvoríme novú ozdobu a pridáme ju do poľa pomocou:
ornaments.push(ornament);
Príklad:
let numbers = [];
numbers.push(1); // [1]
numbers.push(2); // [1, 2]
Prechádzanie a aktualizácia objektov
for (let i = 0; i < ornaments.length; i++) {
let o = ornaments[i];
o.x += o.speedX;
o.y += o.speedY;
ellipse(o.x, o.y, o.size);
}
Odstránenie objektov pomocou splice()
splice()
Keď sa ozdoba dostane mimo obrazovky, odstránime ju z poľa:
ornaments.splice(i, 1);
splice(i, 1)
odstráni 1 objekt na indexei
.Ak ho neodstránime, pole sa bude neustále zväčšovať a spomalí program.
Prečo prechádzame odzadu?
Pri odstraňovaní prechádzame od konca, aby sme nepreskočili žiadne položky:
javascriptKopírovať kódfor (let i = ornaments.length - 1; i >= 0; i--) {
if (offScreen(ornaments[i])) {
ornaments.splice(i, 1);
}
}
Tento prístup umožní sketch bežať plynule tým, že pridávame nové objekty cez push()
a bezpečne ich odstraňujeme pomocou splice()
.
Sketche
Last updated