Monorepo for Aesthetic.Computer
aesthetic.computer
1\contentsline {section}{\numberline {1}Introduction}{5}{section.1}%
2\contentsline {section}{\numberline {2}The Processing Model (2001)}{7}{section.2}%
3\contentsline {subsection}{\numberline {2.1}Lifecycle: \texttt {setup()} and \texttt {draw()}}{7}{subsection.2.1}%
4\contentsline {subsection}{\numberline {2.2}Drawing primitives}{8}{subsection.2.2}%
5\contentsline {subsection}{\numberline {2.3}Global scope}{9}{subsection.2.3}%
6\contentsline {section}{\numberline {3}The p5.js Transition (2014)}{10}{section.3}%
7\contentsline {subsection}{\numberline {3.1}Lifecycle preservation}{10}{subsection.3.1}%
8\contentsline {subsection}{\numberline {3.2}Canvas creation}{11}{subsection.3.2}%
9\contentsline {subsection}{\numberline {3.3}Instance mode}{11}{subsection.3.3}%
10\contentsline {subsection}{\numberline {3.4}What changed, what didn't}{12}{subsection.3.4}%
11\contentsline {section}{\numberline {4}The AC Piece API (2021--)}{13}{section.4}%
12\contentsline {subsection}{\numberline {4.1}Five lifecycle functions}{13}{subsection.4.1}%
13\contentsline {subsection}{\numberline {4.2}API injection via destructuring}{15}{subsection.4.2}%
14\contentsline {subsection}{\numberline {4.3}Separation of simulation and rendering}{16}{subsection.4.3}%
15\contentsline {subsection}{\numberline {4.4}Unified event handling}{17}{subsection.4.4}%
16\contentsline {subsection}{\numberline {4.5}Drawing primitives: stateless by default}{19}{subsection.4.5}%
17\contentsline {subsection}{\numberline {4.6}No canvas configuration}{20}{subsection.4.6}%
18\contentsline {section}{\numberline {5}API Surface Comparison}{21}{section.5}%
19\contentsline {subsection}{\numberline {5.1}Naming philosophy}{21}{subsection.5.1}%
20\contentsline {subsection}{\numberline {5.2}Color model}{22}{subsection.5.2}%
21\contentsline {section}{\numberline {6}State Management}{24}{section.6}%
22\contentsline {subsection}{\numberline {6.1}Processing: global variables}{24}{subsection.6.1}%
23\contentsline {subsection}{\numberline {6.2}AC: module-level closures}{24}{subsection.6.2}%
24\contentsline {section}{\numberline {7}The Genealogy}{26}{section.7}%
25\contentsline {subsection}{\numberline {7.1}Design By Numbers (1999)}{26}{subsection.7.1}%
26\contentsline {subsection}{\numberline {7.2}Processing (2001)}{26}{subsection.7.2}%
27\contentsline {subsection}{\numberline {7.3}p5.js (2014)}{27}{subsection.7.3}%
28\contentsline {subsection}{\numberline {7.4}openFrameworks (2005)}{27}{subsection.7.4}%
29\contentsline {subsection}{\numberline {7.5}The instrument turn}{28}{subsection.7.5}%
30\contentsline {section}{\numberline {8}Worked Example: A Bouncing Ball}{29}{section.8}%
31\contentsline {subsection}{\numberline {8.1}Processing}{29}{subsection.8.1}%
32\contentsline {subsection}{\numberline {8.2}p5.js}{30}{subsection.8.2}%
33\contentsline {subsection}{\numberline {8.3}AC}{30}{subsection.8.3}%
34\contentsline {section}{\numberline {9}Design Rationale}{32}{section.9}%
35\contentsline {subsection}{\numberline {9.1}Why five functions?}{32}{subsection.9.1}%
36\contentsline {subsection}{\numberline {9.2}Why inject the API?}{32}{subsection.9.2}%
37\contentsline {subsection}{\numberline {9.3}Why 120Hz simulation?}{33}{subsection.9.3}%
38\contentsline {subsection}{\numberline {9.4}Why no canvas size?}{34}{subsection.9.4}%
39\contentsline {section}{\numberline {10}Extended Lifecycle}{35}{section.10}%
40\contentsline {section}{\numberline {11}Conclusion}{36}{section.11}%
41\contentsfinish