@maniclang/workbench 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (644) hide show
  1. package/CONTRIBUTING.md +40 -0
  2. package/README.md +155 -0
  3. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/dist/client/assets/abap-CRCWOmpq.js +1 -0
  63. package/dist/client/assets/apex-DnsZk_dE.js +1 -0
  64. package/dist/client/assets/azcli-1IWB1ccx.js +1 -0
  65. package/dist/client/assets/bat-DPkNLes8.js +1 -0
  66. package/dist/client/assets/bicep-Corcdgou.js +2 -0
  67. package/dist/client/assets/cameligo-CGrWLZr3.js +1 -0
  68. package/dist/client/assets/clojure-D9WOWImG.js +1 -0
  69. package/dist/client/assets/codicon-CgENjH2v.ttf +0 -0
  70. package/dist/client/assets/coffee-B7EJu28W.js +1 -0
  71. package/dist/client/assets/cpp-SEyurbux.js +1 -0
  72. package/dist/client/assets/csharp-BoL64M5l.js +1 -0
  73. package/dist/client/assets/csp-C46ZqvIl.js +1 -0
  74. package/dist/client/assets/css-DQU6DXDx.js +3 -0
  75. package/dist/client/assets/cssMode-CtRONlr8.js +4 -0
  76. package/dist/client/assets/cypher-D84EuPTj.js +1 -0
  77. package/dist/client/assets/dart-D8lhlL1r.js +1 -0
  78. package/dist/client/assets/dockerfile-DLk6rpji.js +1 -0
  79. package/dist/client/assets/ecl-BO6FnfXk.js +1 -0
  80. package/dist/client/assets/editor.worker-CZyr7Ur9.js +26 -0
  81. package/dist/client/assets/elixir-BRjLKONM.js +1 -0
  82. package/dist/client/assets/flow9-Cac8vKd7.js +1 -0
  83. package/dist/client/assets/freemarker2-BTSNJUl8.js +3 -0
  84. package/dist/client/assets/fsharp-fd1GTHhf.js +1 -0
  85. package/dist/client/assets/go-O9LJTZXk.js +1 -0
  86. package/dist/client/assets/graphql-LQdxqEYJ.js +1 -0
  87. package/dist/client/assets/handlebars-qkUBjVg6.js +1 -0
  88. package/dist/client/assets/hcl-DxDQ3s82.js +1 -0
  89. package/dist/client/assets/html-pguqE00h.js +1 -0
  90. package/dist/client/assets/htmlMode-BCCLuk2F.js +4 -0
  91. package/dist/client/assets/index-BFrMLHHu.css +1 -0
  92. package/dist/client/assets/index-CdBC-xgi.js +1250 -0
  93. package/dist/client/assets/ini-BvajGCUy.js +1 -0
  94. package/dist/client/assets/java-SYsfObOQ.js +1 -0
  95. package/dist/client/assets/javascript-ciDUXdez.js +1 -0
  96. package/dist/client/assets/jsonMode-BmkXC0tI.js +10 -0
  97. package/dist/client/assets/julia-DQXNmw_w.js +1 -0
  98. package/dist/client/assets/kotlin-qQ0MG-9I.js +1 -0
  99. package/dist/client/assets/less-GGFNNJHn.js +2 -0
  100. package/dist/client/assets/lexon-Canl7DCW.js +1 -0
  101. package/dist/client/assets/liquid-CwE4UIwf.js +1 -0
  102. package/dist/client/assets/lua-D28Ae8-K.js +1 -0
  103. package/dist/client/assets/m3-DPitgjJI.js +1 -0
  104. package/dist/client/assets/markdown-B811l8j2.js +1 -0
  105. package/dist/client/assets/mdx-K_9Emnjy.js +1 -0
  106. package/dist/client/assets/mips-CdjsipkG.js +1 -0
  107. package/dist/client/assets/msdax-CYqgjx_P.js +1 -0
  108. package/dist/client/assets/mysql-BHd6q0vd.js +1 -0
  109. package/dist/client/assets/objective-c-B1aVtJYH.js +1 -0
  110. package/dist/client/assets/pascal-BhNW15KB.js +1 -0
  111. package/dist/client/assets/pascaligo-5jv8CcQD.js +1 -0
  112. package/dist/client/assets/perl-DlYyT36c.js +1 -0
  113. package/dist/client/assets/pgsql-Dy0bjov7.js +1 -0
  114. package/dist/client/assets/php-120yhfDK.js +1 -0
  115. package/dist/client/assets/pla-CjnFlu4u.js +1 -0
  116. package/dist/client/assets/postiats-CQpG440k.js +1 -0
  117. package/dist/client/assets/powerquery-DdJtto1Z.js +1 -0
  118. package/dist/client/assets/powershell-Bu_VLpJB.js +1 -0
  119. package/dist/client/assets/protobuf-IBS6jZEB.js +2 -0
  120. package/dist/client/assets/pug-kFxLfcjb.js +1 -0
  121. package/dist/client/assets/python-BzIc0EVe.js +1 -0
  122. package/dist/client/assets/qsharp-q7JyzKFN.js +1 -0
  123. package/dist/client/assets/r-BIFz-_sK.js +1 -0
  124. package/dist/client/assets/razor-lXZl6dtu.js +1 -0
  125. package/dist/client/assets/redis-CHOsPHWR.js +1 -0
  126. package/dist/client/assets/redshift-CBifECDb.js +1 -0
  127. package/dist/client/assets/restructuredtext-CghPJEOS.js +1 -0
  128. package/dist/client/assets/ruby-CYWGW-b1.js +1 -0
  129. package/dist/client/assets/rust-DMDD0SHb.js +1 -0
  130. package/dist/client/assets/sb-BYAiYHFx.js +1 -0
  131. package/dist/client/assets/scala-Bqvq8jcR.js +1 -0
  132. package/dist/client/assets/scheme-Dhb-2j9p.js +1 -0
  133. package/dist/client/assets/scss-CTwUZ5N7.js +3 -0
  134. package/dist/client/assets/shell-CsDZo4DB.js +1 -0
  135. package/dist/client/assets/solidity-CME5AdoB.js +1 -0
  136. package/dist/client/assets/sophia-RYC1BQQz.js +1 -0
  137. package/dist/client/assets/sparql-KEyrF7De.js +1 -0
  138. package/dist/client/assets/sql-BdTr02Mf.js +1 -0
  139. package/dist/client/assets/st-C7iG7M4S.js +1 -0
  140. package/dist/client/assets/swift-D7IUmUK8.js +1 -0
  141. package/dist/client/assets/systemverilog-DgMryOEJ.js +1 -0
  142. package/dist/client/assets/tcl-PloMZuKG.js +1 -0
  143. package/dist/client/assets/tsMode-BAXmgo_t.js +11 -0
  144. package/dist/client/assets/twig-BfRIq3la.js +1 -0
  145. package/dist/client/assets/typescript-Cdf8nS1n.js +1 -0
  146. package/dist/client/assets/typespec-CzxlYoT_.js +1 -0
  147. package/dist/client/assets/vb-BwAE3J76.js +1 -0
  148. package/dist/client/assets/wgsl-B_1kOXbF.js +298 -0
  149. package/dist/client/assets/xml-DGyPgYnj.js +1 -0
  150. package/dist/client/assets/yaml-Dqv3HtbL.js +1 -0
  151. package/dist/client/index.html +14 -0
  152. package/dist/client/manic-logo.png +0 -0
  153. package/dist/client/wasm/manic_lang.d.ts +74 -0
  154. package/dist/client/wasm/manic_lang.js +302 -0
  155. package/dist/client/wasm/manic_lang_bg.wasm +0 -0
  156. package/dist/client/wasm/manic_lang_bg.wasm.d.ts +13 -0
  157. package/dist/server/agentProtocol.d.ts +131 -0
  158. package/dist/server/agentProtocol.js +21 -0
  159. package/dist/server/agentProtocol.js.map +1 -0
  160. package/dist/server/agentRuns.d.ts +46 -0
  161. package/dist/server/agentRuns.js +138 -0
  162. package/dist/server/agentRuns.js.map +1 -0
  163. package/dist/server/agentThreads.d.ts +20 -0
  164. package/dist/server/agentThreads.js +205 -0
  165. package/dist/server/agentThreads.js.map +1 -0
  166. package/dist/server/aiSecrets.d.ts +21 -0
  167. package/dist/server/aiSecrets.js +68 -0
  168. package/dist/server/aiSecrets.js.map +1 -0
  169. package/dist/server/app.d.ts +34 -0
  170. package/dist/server/app.js +804 -0
  171. package/dist/server/app.js.map +1 -0
  172. package/dist/server/assets.d.ts +34 -0
  173. package/dist/server/assets.js +659 -0
  174. package/dist/server/assets.js.map +1 -0
  175. package/dist/server/candidateFix.d.ts +28 -0
  176. package/dist/server/candidateFix.js +111 -0
  177. package/dist/server/candidateFix.js.map +1 -0
  178. package/dist/server/cli.d.ts +2 -0
  179. package/dist/server/cli.js +118 -0
  180. package/dist/server/cli.js.map +1 -0
  181. package/dist/server/diagnostics.d.ts +13 -0
  182. package/dist/server/diagnostics.js +73 -0
  183. package/dist/server/diagnostics.js.map +1 -0
  184. package/dist/server/engineCheck.d.ts +7 -0
  185. package/dist/server/engineCheck.js +60 -0
  186. package/dist/server/engineCheck.js.map +1 -0
  187. package/dist/server/engineInstall.d.ts +34 -0
  188. package/dist/server/engineInstall.js +228 -0
  189. package/dist/server/engineInstall.js.map +1 -0
  190. package/dist/server/enginePaths.d.ts +3 -0
  191. package/dist/server/enginePaths.js +76 -0
  192. package/dist/server/enginePaths.js.map +1 -0
  193. package/dist/server/folderPicker.d.ts +1 -0
  194. package/dist/server/folderPicker.js +54 -0
  195. package/dist/server/folderPicker.js.map +1 -0
  196. package/dist/server/manicAgent.d.ts +75 -0
  197. package/dist/server/manicAgent.js +476 -0
  198. package/dist/server/manicAgent.js.map +1 -0
  199. package/dist/server/manicEnv.d.ts +18 -0
  200. package/dist/server/manicEnv.js +64 -0
  201. package/dist/server/manicEnv.js.map +1 -0
  202. package/dist/server/promptStore.d.ts +11 -0
  203. package/dist/server/promptStore.js +85 -0
  204. package/dist/server/promptStore.js.map +1 -0
  205. package/dist/server/renderJobs.d.ts +54 -0
  206. package/dist/server/renderJobs.js +290 -0
  207. package/dist/server/renderJobs.js.map +1 -0
  208. package/dist/server/settings.d.ts +40 -0
  209. package/dist/server/settings.js +262 -0
  210. package/dist/server/settings.js.map +1 -0
  211. package/dist/server/smartDraw.d.ts +7 -0
  212. package/dist/server/smartDraw.js +88 -0
  213. package/dist/server/smartDraw.js.map +1 -0
  214. package/dist/server/workspace.d.ts +27 -0
  215. package/dist/server/workspace.js +172 -0
  216. package/dist/server/workspace.js.map +1 -0
  217. package/examples/.manic-output/40b6f3b9-7638-4c0e-bb4f-570d45d1b225/job.json +26 -0
  218. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/job.json +26 -0
  219. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/markers.json +13 -0
  220. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/out.mp4 +0 -0
  221. package/examples/.manic-workbench-threads/thread_3ce7448a13f64f9e887d1bc8106a97a8.json +45 -0
  222. package/examples/.manic-workbench-threads/thread_d494cda29249477591056234719e4a3a.json +21 -0
  223. package/examples/.manic-workbench-threads/thread_e98ebdc225184ea5b8ddda8b44541f63.json +29 -0
  224. package/examples/README.md +35 -0
  225. package/examples/a-story-1.manic +222 -0
  226. package/examples/a-story.manic +100 -0
  227. package/examples/achromat-cinematic.manic +105 -0
  228. package/examples/achromat.manic +32 -0
  229. package/examples/aes-decrypt.manic +359 -0
  230. package/examples/aes-encrypt.manic +359 -0
  231. package/examples/aes-round.manic +70 -0
  232. package/examples/aes-story.manic +622 -0
  233. package/examples/ai-story.manic +118 -0
  234. package/examples/analysis.manic +53 -0
  235. package/examples/archimedes_pi.manic +89 -0
  236. package/examples/area_under_curve.manic +131 -0
  237. package/examples/art-rakkan.manic +69 -0
  238. package/examples/aspheric-lens.manic +32 -0
  239. package/examples/astronomical-watch.manic +96 -0
  240. package/examples/asymptote-randomwalk3-reference.manic +58 -0
  241. package/examples/asymptote-tiling-reference.manic +65 -0
  242. package/examples/aws-clustered-web-services.manic +186 -0
  243. package/examples/aws-event-processing-clusters-poc.manic +97 -0
  244. package/examples/aws-three-tier-web-application.manic +134 -0
  245. package/examples/band.manic +43 -0
  246. package/examples/banner.manic +37 -0
  247. package/examples/bayes.manic +27 -0
  248. package/examples/bellcurve.manic +41 -0
  249. package/examples/bfs_dfs.manic +35 -0
  250. package/examples/block-tackle.manic +26 -0
  251. package/examples/bloom-scope.manic +172 -0
  252. package/examples/boolean.manic +46 -0
  253. package/examples/boxplot-wave.manic +93 -0
  254. package/examples/boxplot.manic +43 -0
  255. package/examples/brace.manic +46 -0
  256. package/examples/brachistochrone-annotated.manic +51 -0
  257. package/examples/brachistochrone.manic +27 -0
  258. package/examples/bubble_sort.manic +41 -0
  259. package/examples/bullet-block-annotated.manic +48 -0
  260. package/examples/bullet-block.manic +11 -0
  261. package/examples/bullet-impact.manic +65 -0
  262. package/examples/bungee.manic +9 -0
  263. package/examples/c4-internet-banking-components.manic +33 -0
  264. package/examples/c4-internet-banking-containers.manic +29 -0
  265. package/examples/c4-internet-banking.manic +26 -0
  266. package/examples/c4-story.manic +171 -0
  267. package/examples/c4-test.manic +52 -0
  268. package/examples/c4-zoom.manic +69 -0
  269. package/examples/calculus-demo.manic +129 -0
  270. package/examples/calculus-one.manic +288 -0
  271. package/examples/captions.manic +31 -0
  272. package/examples/car-suspension-annotated.manic +57 -0
  273. package/examples/car-suspension.manic +8 -0
  274. package/examples/cart-pendulum.manic +11 -0
  275. package/examples/charts-bar-line.manic +26 -0
  276. package/examples/charts-column-race.manic +19 -0
  277. package/examples/charts-gdp-race.manic +43 -0
  278. package/examples/charts-german-elections.manic +28 -0
  279. package/examples/charts-line-race.manic +21 -0
  280. package/examples/circle-in-three.manic +156 -0
  281. package/examples/circle-thirds-no-triangle.manic +161 -0
  282. package/examples/clip-window.manic +34 -0
  283. package/examples/cloud-feathers.manic +50 -0
  284. package/examples/cloud-jellyfish-v2.manic +87 -0
  285. package/examples/cloud-jellyfish.manic +48 -0
  286. package/examples/cloud-kaleidoscope.manic +48 -0
  287. package/examples/cloud-koi.manic +51 -0
  288. package/examples/cloud-lissajous.manic +23 -0
  289. package/examples/cloud-medusae.manic +46 -0
  290. package/examples/cloud-phoenix.manic +49 -0
  291. package/examples/cloud-plumes.manic +47 -0
  292. package/examples/cloud-pottery.manic +104 -0
  293. package/examples/cloud-shells.manic +50 -0
  294. package/examples/cloud-starfield.manic +23 -0
  295. package/examples/cloud-wave-lattice.manic +23 -0
  296. package/examples/cloud-word.manic +31 -0
  297. package/examples/cloud3-ripple.manic +53 -0
  298. package/examples/cloud3-sphere.manic +26 -0
  299. package/examples/clt.manic +35 -0
  300. package/examples/collide-blocks-annotated.manic +45 -0
  301. package/examples/collide-blocks.manic +11 -0
  302. package/examples/compare-pendulum.manic +11 -0
  303. package/examples/complex-flowchart.manic +196 -0
  304. package/examples/compound-pulley.manic +25 -0
  305. package/examples/conics.manic +46 -0
  306. package/examples/coordinates.manic +52 -0
  307. package/examples/correlation.manic +35 -0
  308. package/examples/covariance.manic +30 -0
  309. package/examples/creator-affine-fern-growth.manic +72 -0
  310. package/examples/creator-bowl-to-saddle.manic +86 -0
  311. package/examples/creator-branch-counting-tree3.manic +77 -0
  312. package/examples/creator-chaos-game-fern.manic +72 -0
  313. package/examples/creator-circle-inversion-chain.manic +61 -0
  314. package/examples/creator-convex-hull-depth.manic +59 -0
  315. package/examples/creator-coordinate-worlds.manic +182 -0
  316. package/examples/creator-ellipse-reflection-property.manic +59 -0
  317. package/examples/creator-free-kicks.manic +261 -0
  318. package/examples/creator-geometry-language-showcase.manic +259 -0
  319. package/examples/creator-geometry-morph-promo.manic +151 -0
  320. package/examples/creator-heightmap-world.manic +130 -0
  321. package/examples/creator-hilbert3-spatial-index.manic +203 -0
  322. package/examples/creator-how-rocket-launch-works.manic +192 -0
  323. package/examples/creator-implicit-surface-parameterized.manic +51 -0
  324. package/examples/creator-incenter-dissection.manic +56 -0
  325. package/examples/creator-lattice-paths.manic +118 -0
  326. package/examples/creator-line-inversion.manic +49 -0
  327. package/examples/creator-lsystem-fractal-curve.manic +121 -0
  328. package/examples/creator-mandelbrot-escape-test.manic +58 -0
  329. package/examples/creator-monty-hall.manic +104 -0
  330. package/examples/creator-noise-story.manic +123 -0
  331. package/examples/creator-one-tile-pattern-story.manic +169 -0
  332. package/examples/creator-pathfinding.manic +82 -0
  333. package/examples/creator-point-to-plane-distance.manic +167 -0
  334. package/examples/creator-race-quiz.manic +76 -0
  335. package/examples/creator-randomwalk3-diffusion.manic +72 -0
  336. package/examples/creator-reflected-ellipse.manic +48 -0
  337. package/examples/creator-rule90-sierpinski.manic +64 -0
  338. package/examples/creator-three-shadows-of-a-curve.manic +48 -0
  339. package/examples/creator-trigonometry-one-angle.manic +307 -0
  340. package/examples/creator-v2-latex-algebra.manic +29 -0
  341. package/examples/creator-v2-latex-calculus.manic +37 -0
  342. package/examples/creator-v2-latex-physics.manic +29 -0
  343. package/examples/creator-v2-olympiad-geometry.manic +92 -0
  344. package/examples/creator-v2-options-socials.manic +21 -0
  345. package/examples/creator-v2-timers.manic +25 -0
  346. package/examples/creator-v2-timing-square.manic +25 -0
  347. package/examples/creator-v2-timing.manic +34 -0
  348. package/examples/creator-v2.manic +36 -0
  349. package/examples/creator-why-rockets-use-stages.manic +198 -0
  350. package/examples/creator-wrap-real-line.manic +51 -0
  351. package/examples/cubic-graphs.manic +432 -0
  352. package/examples/curve-features.manic +41 -0
  353. package/examples/definedmotion-fourier-gallery.manic +171 -0
  354. package/examples/derivative-of-ln-x.manic +194 -0
  355. package/examples/diagonalise.manic +56 -0
  356. package/examples/dijkstra.manic +29 -0
  357. package/examples/dimensions-unfold.manic +211 -0
  358. package/examples/disc-integration.manic +172 -0
  359. package/examples/double-incline.manic +9 -0
  360. package/examples/double-integral3.manic +43 -0
  361. package/examples/double-pendulum.manic +35 -0
  362. package/examples/double-spring.manic +9 -0
  363. package/examples/drop-mass.manic +25 -0
  364. package/examples/eigen3.manic +34 -0
  365. package/examples/equal_cuts.manic +44 -0
  366. package/examples/equation.manic +16 -0
  367. package/examples/equilateral.manic +57 -0
  368. package/examples/euler_line.manic +51 -0
  369. package/examples/exponential-shells.manic +188 -0
  370. package/examples/extrude3.manic +37 -0
  371. package/examples/factorial-flowchart.manic +69 -0
  372. package/examples/fibonacci-sphere.manic +57 -0
  373. package/examples/flow-lorenz.manic +47 -0
  374. package/examples/fourier-series-live-wave.manic +114 -0
  375. package/examples/fourier-square-wave-live.manic +114 -0
  376. package/examples/fractal_tree.manic +39 -0
  377. package/examples/frame3-grid-policies.manic +48 -0
  378. package/examples/ftc.manic +54 -0
  379. package/examples/function_graph.manic +54 -0
  380. package/examples/galton-board-process.manic +150 -0
  381. package/examples/gcp-clustered-web-services.manic +186 -0
  382. package/examples/gcp-message-collecting.manic +139 -0
  383. package/examples/geo-pythagoras-short.manic +119 -0
  384. package/examples/glsl-boxgrid.manic +105 -0
  385. package/examples/glsl-parameter.manic +30 -0
  386. package/examples/glsl-raymarch.manic +59 -0
  387. package/examples/glsl-shapes.manic +122 -0
  388. package/examples/gradient-descent-field.manic +116 -0
  389. package/examples/gradient-fastest-descent-shorts.manic +153 -0
  390. package/examples/gradient-fastest-descent.manic +125 -0
  391. package/examples/gradient-pendulum-shorts.manic +117 -0
  392. package/examples/gradient.manic +74 -0
  393. package/examples/graph.manic +45 -0
  394. package/examples/graph_moving.manic +67 -0
  395. package/examples/grid-astar.manic +15 -0
  396. package/examples/grid-life-soup.manic +31 -0
  397. package/examples/grid-life-zoo.manic +46 -0
  398. package/examples/grid-life.manic +19 -0
  399. package/examples/grid-wfc.manic +13 -0
  400. package/examples/growing-fractal-tree3.manic +58 -0
  401. package/examples/gun-shot.manic +82 -0
  402. package/examples/hashmap.manic +38 -0
  403. package/examples/heightmap3-world.manic +64 -0
  404. package/examples/heightmap3.manic +23 -0
  405. package/examples/hilbert-curve3-space-filling.manic +117 -0
  406. package/examples/hill_run.manic +71 -0
  407. package/examples/histogram.manic +43 -0
  408. package/examples/hotdog-taco.manic +147 -0
  409. package/examples/hue_wave.manic +35 -0
  410. package/examples/hypothesis.manic +32 -0
  411. package/examples/image.manic +29 -0
  412. package/examples/incircle_tangents.manic +64 -0
  413. package/examples/incline-bumper.manic +11 -0
  414. package/examples/incline-pulley.manic +11 -0
  415. package/examples/incline-showcase.manic +55 -0
  416. package/examples/inline-math.manic +16 -0
  417. package/examples/inscribed-angle-short.manic +56 -0
  418. package/examples/integral-sqrt-tanx.manic +255 -0
  419. package/examples/integrals.manic +274 -0
  420. package/examples/inverse-derivatives.manic +94 -0
  421. package/examples/k8s-cluster-components.manic +82 -0
  422. package/examples/k8s-stateful-architecture.manic +134 -0
  423. package/examples/k8s-three-tier.manic +146 -0
  424. package/examples/kapitza.manic +11 -0
  425. package/examples/latex-disintegration.manic +123 -0
  426. package/examples/lens-paper.manic +36 -0
  427. package/examples/lens-prescription.manic +33 -0
  428. package/examples/lens-system.manic +34 -0
  429. package/examples/lens.manic +31 -0
  430. package/examples/limit-infinity.manic +30 -0
  431. package/examples/limit.manic +33 -0
  432. package/examples/linear-algebra-3d.manic +50 -0
  433. package/examples/linear-algebra.manic +115 -0
  434. package/examples/linear-map.manic +39 -0
  435. package/examples/linear-map3.manic +33 -0
  436. package/examples/linear-system.manic +99 -0
  437. package/examples/linear_transform.manic +43 -0
  438. package/examples/linked_list.manic +38 -0
  439. package/examples/lln.manic +31 -0
  440. package/examples/loop-cinematic.manic +41 -0
  441. package/examples/loop-track.manic +11 -0
  442. package/examples/lorenz-attractor.manic +55 -0
  443. package/examples/lorenz-shells.manic +43 -0
  444. package/examples/lost-in-patterns.manic +149 -0
  445. package/examples/lsystem-asymptote-curves.manic +81 -0
  446. package/examples/manic-ml-activation-focus.manic +133 -0
  447. package/examples/manic-ml-cnn-edge-story.manic +102 -0
  448. package/examples/manic-ml-forward-pass.manic +93 -0
  449. package/examples/manic-ml-learning-step.manic +116 -0
  450. package/examples/manic-ml-logits-sampling.manic +112 -0
  451. package/examples/manic-ml-scalar-to-tensor.manic +143 -0
  452. package/examples/manic-ml-token-embedding.manic +110 -0
  453. package/examples/manic-ml-transformer-attention.manic +102 -0
  454. package/examples/manic-ml-transformer-block.manic +116 -0
  455. package/examples/manic-promo.manic +64 -0
  456. package/examples/map-attractor.manic +45 -0
  457. package/examples/mask-lens.manic +33 -0
  458. package/examples/matrix.manic +37 -0
  459. package/examples/matrix3.manic +101 -0
  460. package/examples/matrix_addition.manic +66 -0
  461. package/examples/matrix_addition_plane.manic +91 -0
  462. package/examples/maxwell-boltzmann-effusion-v2.manic +142 -0
  463. package/examples/maxwell-boltzmann-process.manic +86 -0
  464. package/examples/microservices-platform.manic +140 -0
  465. package/examples/molecule.manic +8 -0
  466. package/examples/morph-icons.manic +29 -0
  467. package/examples/morph.manic +29 -0
  468. package/examples/morph3.manic +49 -0
  469. package/examples/motion-flow-foundation.manic +148 -0
  470. package/examples/motion-graphics-v2-story.manic +189 -0
  471. package/examples/motion-graphics-v2.manic +81 -0
  472. package/examples/motion-graphics.manic +81 -0
  473. package/examples/multivariable3.manic +26 -0
  474. package/examples/mystory.manic +9 -0
  475. package/examples/newton.manic +39 -0
  476. package/examples/newtons-cradle.manic +10 -0
  477. package/examples/nine_point.manic +59 -0
  478. package/examples/noise-terrain.manic +16 -0
  479. package/examples/off-axis.manic +32 -0
  480. package/examples/onprem-advanced-web-service-v2.manic +196 -0
  481. package/examples/onprem-advanced-web-service.manic +175 -0
  482. package/examples/orthocenter.manic +63 -0
  483. package/examples/param3.manic +43 -0
  484. package/examples/parameter-journeys.manic +154 -0
  485. package/examples/parameterized-field-advection.manic +57 -0
  486. package/examples/parameterized-generated-families3.manic +83 -0
  487. package/examples/particles-flow.manic +61 -0
  488. package/examples/pascal-triangle.manic +92 -0
  489. package/examples/pendulum-annotated.manic +72 -0
  490. package/examples/pendulum-damped.manic +35 -0
  491. package/examples/pendulum.manic +38 -0
  492. package/examples/perfect-reel.manic +43 -0
  493. package/examples/pie.manic +41 -0
  494. package/examples/pieday.manic +113 -0
  495. package/examples/piston.manic +7 -0
  496. package/examples/popkorn-field.manic +38 -0
  497. package/examples/prism-cinematic.manic +36 -0
  498. package/examples/prism.manic +32 -0
  499. package/examples/probability.manic +57 -0
  500. package/examples/process-branching-dispatch.manic +71 -0
  501. package/examples/process-stream-observe.manic +54 -0
  502. package/examples/projection.manic +57 -0
  503. package/examples/prompt-test-10.manic +257 -0
  504. package/examples/prompt-test-11.manic +168 -0
  505. package/examples/prompt-test-12.manic +177 -0
  506. package/examples/prompt-test-13.manic +228 -0
  507. package/examples/prompt-test-14.manic +319 -0
  508. package/examples/prompt-test-15.manic +325 -0
  509. package/examples/prompt-test-16.manic +252 -0
  510. package/examples/prompt-test-2.manic +239 -0
  511. package/examples/prompt-test-3.manic +336 -0
  512. package/examples/prompt-test-4.manic +195 -0
  513. package/examples/prompt-test-5.manic +223 -0
  514. package/examples/prompt-test-6.manic +222 -0
  515. package/examples/prompt-test-7.manic +156 -0
  516. package/examples/prompt-test-8.manic +266 -0
  517. package/examples/prompt-test-9.manic +171 -0
  518. package/examples/prompt-test.manic +158 -0
  519. package/examples/pulley-annotated.manic +54 -0
  520. package/examples/pulley-paper.manic +52 -0
  521. package/examples/pulley-scale.manic +23 -0
  522. package/examples/pulley.manic +24 -0
  523. package/examples/quadratic-formula-continuity.manic +110 -0
  524. package/examples/quiz-euler.manic +52 -0
  525. package/examples/quiz-geometry-2.manic +107 -0
  526. package/examples/quiz-geometry.manic +108 -0
  527. package/examples/quiz-skins.manic +22 -0
  528. package/examples/raft-cm.manic +24 -0
  529. package/examples/ramp.manic +25 -0
  530. package/examples/ray-fan.manic +27 -0
  531. package/examples/raymarch-alpha.manic +39 -0
  532. package/examples/raymarch-boxgrid.manic +47 -0
  533. package/examples/raymarch-docker-latency.manic +74 -0
  534. package/examples/raymarch-metaballs.manic +37 -0
  535. package/examples/raymarch-sculpture.manic +39 -0
  536. package/examples/raymarch-shapes3.manic +31 -0
  537. package/examples/reactive-integral.manic +172 -0
  538. package/examples/reactive-math-journey.manic +185 -0
  539. package/examples/reactive-math-notation.manic +150 -0
  540. package/examples/reactive-multiformat.manic +130 -0
  541. package/examples/reactive-world.manic +111 -0
  542. package/examples/refraction-paper.manic +40 -0
  543. package/examples/refraction.manic +32 -0
  544. package/examples/resonance.manic +10 -0
  545. package/examples/rewrite-exponential-cubic.manic +141 -0
  546. package/examples/rewrite-integration.manic +199 -0
  547. package/examples/riemann_rainbow.manic +61 -0
  548. package/examples/riemann_readout.manic +61 -0
  549. package/examples/robot-arm.manic +25 -0
  550. package/examples/rref.manic +48 -0
  551. package/examples/second-law-thermodynamics.manic +385 -0
  552. package/examples/series-parallel-springs.manic +8 -0
  553. package/examples/serverless-processing.manic +145 -0
  554. package/examples/shader-cellular.manic +35 -0
  555. package/examples/shader-fractal.manic +45 -0
  556. package/examples/shader-fx.manic +34 -0
  557. package/examples/shader-glitch-grid.manic +55 -0
  558. package/examples/shader-parameter.manic +25 -0
  559. package/examples/shader-patterns.manic +37 -0
  560. package/examples/shader-plasma.manic +43 -0
  561. package/examples/shader-shapes-dsl.manic +46 -0
  562. package/examples/shader-shapes.manic +37 -0
  563. package/examples/shader-warp.manic +22 -0
  564. package/examples/shapes-howto.manic +411 -0
  565. package/examples/sine_wave.manic +42 -0
  566. package/examples/skew.manic +40 -0
  567. package/examples/smoke.rs +57 -0
  568. package/examples/solids3.manic +22 -0
  569. package/examples/some-story.manic +299 -0
  570. package/examples/spinning-cylinder-flow.manic +87 -0
  571. package/examples/spline.manic +21 -0
  572. package/examples/spot-diagram.manic +32 -0
  573. package/examples/spring-annotated.manic +60 -0
  574. package/examples/spring-chain.manic +11 -0
  575. package/examples/spring-damped.manic +33 -0
  576. package/examples/spring-incline.manic +10 -0
  577. package/examples/spring-paper.manic +46 -0
  578. package/examples/spring-pendulum.manic +14 -0
  579. package/examples/spring.manic +33 -0
  580. package/examples/sqrt-tanx.manic +217 -0
  581. package/examples/ssl-handshake-sdf.manic +116 -0
  582. package/examples/stack_queue.manic +53 -0
  583. package/examples/statistics.manic +60 -0
  584. package/examples/story-addressable-asset-cues.manic +71 -0
  585. package/examples/story-dependent-chain-history.manic +56 -0
  586. package/examples/story-living-dependency-cloud.manic +50 -0
  587. package/examples/story-time-varying-field3.manic +57 -0
  588. package/examples/story.manic +4 -0
  589. package/examples/string-art-breath.manic +70 -0
  590. package/examples/string-wave.manic +10 -0
  591. package/examples/summary.manic +48 -0
  592. package/examples/svg-howto.manic +172 -0
  593. package/examples/svg-import.manic +18 -0
  594. package/examples/systems-architecture-poc.manic +92 -0
  595. package/examples/systems-arrow-patterns.manic +151 -0
  596. package/examples/systems-foundation.manic +71 -0
  597. package/examples/systems-rabbitmq-consumers.manic +118 -0
  598. package/examples/table.manic +39 -0
  599. package/examples/table_braces.manic +54 -0
  600. package/examples/tangent-length-short.manic +57 -0
  601. package/examples/tangent.manic +29 -0
  602. package/examples/tangents.manic +54 -0
  603. package/examples/taylor.manic +44 -0
  604. package/examples/terminal_boot.manic +40 -0
  605. package/examples/test.manic +61 -0
  606. package/examples/text-guide.manic +304 -0
  607. package/examples/textbook-coordinate-worlds.manic +129 -0
  608. package/examples/textbook-doubly-list.manic +33 -0
  609. package/examples/textbook-function-to-solid.manic +126 -0
  610. package/examples/textbook-geometry-dimension-reduction.manic +129 -0
  611. package/examples/textbook-incline-fbd.manic +43 -0
  612. package/examples/textbook-length-area-volume.manic +137 -0
  613. package/examples/textbook-matrix-inverses.manic +172 -0
  614. package/examples/textbook-pulley.manic +35 -0
  615. package/examples/textbook-statistical-dimensions.manic +151 -0
  616. package/examples/textbook-tension.manic +39 -0
  617. package/examples/textbook-watermelon-sections.manic +216 -0
  618. package/examples/thales-semicircle-short.manic +53 -0
  619. package/examples/three-d-v2-lab.manic +83 -0
  620. package/examples/three-d-v2-story.manic +106 -0
  621. package/examples/three-d-v2.manic +69 -0
  622. package/examples/three_d.manic +39 -0
  623. package/examples/timing-v2-scene.manic +47 -0
  624. package/examples/trajectory.manic +28 -0
  625. package/examples/transform_copy.manic +35 -0
  626. package/examples/transforms.manic +54 -0
  627. package/examples/trapped-light-dimensions.manic +226 -0
  628. package/examples/tree-of-leaves.manic +215 -0
  629. package/examples/triangle.manic +68 -0
  630. package/examples/two_person_walk.manic +296 -0
  631. package/examples/two_pointer.manic +32 -0
  632. package/examples/type-to-sdf.manic +139 -0
  633. package/examples/typewriter.manic +28 -0
  634. package/examples/vector_field.manic +32 -0
  635. package/examples/vertical-spring.manic +10 -0
  636. package/examples/volume3.manic +21 -0
  637. package/examples/volumes-solid-of-revolution.manic +111 -0
  638. package/examples/walk.manic +154 -0
  639. package/examples/wheel-duo.manic +91 -0
  640. package/examples/wheel-radial.manic +78 -0
  641. package/examples/wheel-square.manic +83 -0
  642. package/examples/wireframe-spheres.manic +37 -0
  643. package/examples/zeroth-law-thermodynamics.manic +269 -0
  644. package/package.json +59 -0
@@ -0,0 +1,122 @@
1
+ // glsl-shapes — Patricio Gonzalez Vivo's 2015 "shapes" Shadertoy, running in manic
2
+ // UNCHANGED via the raw glsl() V3 path (2-D SDF gallery: pentagon/sphere/triangle/
3
+ // octagon/hexagon/star/ellipse/rounded-rect, banded by an oscillating iso-line).
4
+ // Original: http://patriciogonzalezvivo.com · @patriciogv
5
+ canvas("16:9");
6
+ template("black");
7
+
8
+ glsl(scene, `
9
+ float osc(float d){
10
+ return floor(mod((d+iTime*2.600)/2.,1.)*2.);
11
+ }
12
+ float sphere(vec2 p, float r){
13
+ return length(p)-r;
14
+ }
15
+ float tri( in vec2 p, in float r ){
16
+ const float k = sqrt(3.0);
17
+ p.x = abs(p.x) - r;
18
+ p.y = p.y + r/k;
19
+ if( p.x+k*p.y>0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0;
20
+ p.x -= clamp( p.x, -2.0*r, 0.0 );
21
+ return -length(p)*sign(p.y);
22
+ }
23
+ float pent( in vec2 p, in float r ){
24
+ const vec3 k = vec3(0.809016994,0.587785252,0.726542528);
25
+ p.x = abs(p.x);
26
+ p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);
27
+ p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);
28
+ p -= vec2(clamp(p.x,-r*k.z,r*k.z),r);
29
+ return length(p)*sign(p.y);
30
+ }
31
+ float oct( in vec2 p, in float r ){
32
+ const vec3 k = vec3(-0.9238795325, 0.3826834323, 0.4142135623 );
33
+ p = abs(p);
34
+ p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);
35
+ p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);
36
+ p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);
37
+ return length(p)*sign(p.y);
38
+ }
39
+ float hex( in vec2 p, in float r ){
40
+ const vec4 k = vec4(-0.5,0.8660254038,0.5773502692,1.7320508076);
41
+ p = abs(p);
42
+ p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;
43
+ p -= 2.0*min(dot(k.yx,p),0.0)*k.yx;
44
+ p -= vec2(clamp(p.x,r*k.z,r*k.w),r);
45
+ return length(p)*sign(p.y);
46
+ }
47
+ float str(in vec2 p, in float r, in float rf){
48
+ const vec2 k1 = vec2(0.809016994375, -0.587785252292);
49
+ const vec2 k2 = vec2(-k1.x,k1.y);
50
+ p.x = abs(p.x);
51
+ p -= 2.0*max(dot(k1,p),0.0)*k1;
52
+ p -= 2.0*max(dot(k2,p),0.0)*k2;
53
+ p.x = abs(p.x);
54
+ p.y -= r;
55
+ vec2 ba = rf*vec2(-k1.y,k1.x) - vec2(0,1);
56
+ float h = clamp( dot(p,ba)/dot(ba,ba), 0.0, r );
57
+ return length(p-ba*h) * sign(p.y*ba.x-p.x*ba.y);
58
+ }
59
+ float elp( in vec2 p, in vec2 ab ){
60
+ p = abs(p); if( p.x > p.y ) {p=p.yx;ab=ab.yx;}
61
+ float l = ab.y*ab.y - ab.x*ab.x;
62
+ float m = ab.x*p.x/l; float m2 = m*m;
63
+ float n = ab.y*p.y/l; float n2 = n*n;
64
+ float c = (m2+n2-1.0)/3.0; float c3 = c*c*c;
65
+ float q = c3 + m2*n2*2.0;
66
+ float d = c3 + m2*n2;
67
+ float g = m + m*n2;
68
+ float co;
69
+ if( d<0.0 ){
70
+ float h = acos(q/c3)/3.0;
71
+ float s = cos(h);
72
+ float t = sin(h)*sqrt(3.0);
73
+ float rx = sqrt( -c*(s + t + 2.0) + m2 );
74
+ float ry = sqrt( -c*(s - t + 2.0) + m2 );
75
+ co = (ry+sign(l)*rx+abs(g)/(rx*ry)- m)/2.0;
76
+ } else {
77
+ float h = 2.0*m*n*sqrt( d );
78
+ float s = sign(q+h)*pow(abs(q+h), 1.0/3.0);
79
+ float u = sign(q-h)*pow(abs(q-h), 1.0/3.0);
80
+ float rx = -s - u - c*4.0 + 2.0*m2;
81
+ float ry = (s - u)*sqrt(3.0);
82
+ float rm = sqrt( rx*rx + ry*ry );
83
+ co = (ry/sqrt(rm-rx)+2.0*g/rm-m)/2.0;
84
+ }
85
+ vec2 r = ab * vec2(co, sqrt(1.0-co*co));
86
+ return length(r-p) * sign(p.y-r.y);
87
+ }
88
+ float rnd( in vec2 p, in float w, in float r ){
89
+ p = abs(p);
90
+ return length(p-min(p.x+p.y,w)*0.5) - r;
91
+ }
92
+
93
+ vec2 cent = vec2(0.480,0.480);
94
+ float line = 0.008;
95
+ float spac = 0.0;
96
+
97
+ void mainImage( out vec4 fragColor, in vec2 fragCoord ){
98
+ vec2 st = fragCoord/iResolution.xy * vec2( iResolution.x/iResolution.y, 1. );
99
+ vec3 col = vec3(1.0);
100
+
101
+ float d = pent(st-cent,0.076);
102
+ d = min(d,sphere(st-vec2(0.750,0.800),0.076));
103
+ d = min(d,tri(st-vec2(0.210,0.790),0.076));
104
+ d = min(d,oct(st-vec2(0.160,0.260),0.076));
105
+ d = min(d,hex(st-vec2(0.200,0.500),0.036));
106
+ d = min(d,str(st-vec2(0.790,0.510),0.108,0.640));
107
+ d = min(d,elp(st-vec2(0.630,0.170),vec2(0.280,0.100)));
108
+ d = min(d,rnd(st-vec2(0.480,0.790),0.284,0.032));
109
+
110
+ float band = osc(d*200.*0.288);
111
+ if(d > spac && d < spac+line){
112
+ col = vec3(1.);
113
+ } else if(d > 0.0){
114
+ col*= vec3(1.000,0.684,0.364)*(1.-band)+vec3(1.000,0.514,0.128)*band;
115
+ } else {
116
+ col*= vec3(0.431,0.436,1.000)*(1.-band)+vec3(0.270,0.190,1.000)*band;
117
+ }
118
+ fragColor = vec4(col,1.0);
119
+ }
120
+ `);
121
+
122
+ wait(8);
@@ -0,0 +1,116 @@
1
+ // GRADIENT DESCENT AS A LEARNING STORY
2
+ // Twelve guesses begin without the answer. Every arrow supplies one local
3
+ // correction, and the same authored field carries all of them to one minimum.
4
+
5
+ title("How a Wrong Guess Learns");
6
+ canvas("9:16");
7
+ template("blank");
8
+
9
+ watermark(mark,(w*0.16,h*0.045),"Made With Manic");
10
+ text(kicker,(cx,h*0.075),"GRADIENT DESCENT · LEARNING AS MOTION");
11
+ text(headline,(cx,h*0.125),"How does a wrong guess find the minimum?");
12
+ text(chapter,(cx,h*0.265),"1 · START ANYWHERE");
13
+ text(caption,(cx,h*0.78),"Twelve guesses begin with no map of the whole landscape.");
14
+ text(result,(cx,h*0.715),"12 STARTING POINTS → 1 SHARED MINIMUM");
15
+ text(cta,(cx,h*0.91),"MAKE LEARNING VISIBLE → 8gwifi.org/manic");
16
+
17
+ size(kicker,18); color(kicker,dim); bold(kicker); hidden(kicker);
18
+ size(headline,32); bold(headline); wrap(headline,w*0.84); hidden(headline);
19
+ size(chapter,19); color(chapter,cyan); bold(chapter); hidden(chapter);
20
+ size(caption,21); color(caption,dim); wrap(caption,w*0.84); hidden(caption);
21
+ size(result,19); color(result,lime); bold(result); hidden(result);
22
+ size(cta,21); color(cta,cyan); bold(cta); hidden(cta);
23
+
24
+ equation(lossRule,(cx,h*0.205),`L(x,y)=\frac{1}{2}x^2+y^2`);
25
+ size(lossRule,34); color(lossRule,fg); hidden(lossRule);
26
+
27
+ let fieldY = h*0.49;
28
+ rect(domain,(cx,fieldY),w*0.82,h*0.40);
29
+ outlined(domain); outline(domain,dim); stroke(domain,3);
30
+ hidden(domain);
31
+
32
+ // -grad L = (-x,-2y). The gentler vertical coefficient keeps the motion
33
+ // readable while preserving the elliptical convergence of the loss bowl.
34
+ vectorfield(descent,(cx,fieldY),w*0.37,h*0.175,"-x","-1.6*y",17);
35
+ untraced(descent);
36
+
37
+ circle(starts,(cx,fieldY),w*0.255);
38
+ outlined(starts); outline(starts,dim); dashed(starts,12,10);
39
+ hidden(starts);
40
+
41
+ particles(guesses,starts,12,8,73,"ring");
42
+ color(guesses,magenta); glow(guesses,0.78);
43
+ hidden(guesses);
44
+
45
+ circle(minimum,(cx,fieldY),14);
46
+ filled(minimum); color(minimum,lime); glow(minimum,1.0);
47
+ hidden(minimum);
48
+
49
+ circle(targetRing,(cx,fieldY),44);
50
+ outlined(targetRing); outline(targetRing,lime); stroke(targetRing,3);
51
+ hidden(targetRing);
52
+
53
+ text(minLabel,(cx,fieldY+74),"minimum");
54
+ size(minLabel,19); color(minLabel,lime); bold(minLabel); hidden(minLabel);
55
+
56
+ step("begin with imperfect guesses") {
57
+ par {
58
+ show(kicker,0.30);
59
+ show(headline,0.45);
60
+ show(lossRule,0.45);
61
+ show(chapter,0.35);
62
+ show(caption,0.40);
63
+ show(domain,0.45);
64
+ show(starts,0.45);
65
+ show(guesses,0.60);
66
+ }
67
+ }
68
+ wait(0.65);
69
+
70
+ step("reveal one local clue everywhere") {
71
+ par {
72
+ draw(descent,1.10);
73
+ fade(starts,0.45);
74
+ say(chapter,"2 · READ THE LOCAL SLOPE",0.35);
75
+ say(caption,"Every arrow gives one instruction: move opposite the local gradient.",0.42);
76
+ }
77
+ }
78
+ wait(0.55);
79
+
80
+ step("improve one small step at a time") {
81
+ par {
82
+ advect(guesses,descent,6.80,0.32);
83
+ seq {
84
+ say(chapter,"3 · FOLLOW THE CORRECTIONS",0.35);
85
+ say(caption,"Far away, the correction is large. Near the bottom, each adjustment becomes smaller.",0.42);
86
+ wait(3.05);
87
+ say(caption,"Different starting points take different journeys—but obey the same rule.",0.42);
88
+ }
89
+ }
90
+ }
91
+ wait(0.55);
92
+
93
+ step("discover the shared destination") {
94
+ par {
95
+ show(minimum,0.35);
96
+ show(targetRing,0.40);
97
+ show(minLabel,0.35);
98
+ show(result,0.45);
99
+ say(chapter,"4 · ARRIVE WITHOUT TELEPORTING",0.35);
100
+ say(caption,"Gradient descent is not a jump to the answer. It is repeated, measured improvement.",0.42);
101
+ seq {
102
+ pulse(targetRing,0.70);
103
+ pulse(guesses,0.70);
104
+ }
105
+ }
106
+ }
107
+ wait(0.75);
108
+
109
+ step("create with Manic") {
110
+ par {
111
+ pulse(minimum,0.75);
112
+ show(cta,0.45);
113
+ say(caption,"Describe the rule once. Manic keeps every guess, arrow, correction, and learning step connected.",0.45);
114
+ }
115
+ }
116
+ wait(1.45);
@@ -0,0 +1,153 @@
1
+ // ============================================================================
2
+ // gradient-fastest-descent-shorts.manic — Bernoulli's brachistochrone as a
3
+ // 9:16 cinematic short, told THROUGH gradients
4
+ // (companion: gradient-fastest-descent.manic, the 16:9 cut)
5
+ // ----------------------------------------------------------------------------
6
+ // THE PROBLEM (Bernoulli, 1696): which wire gets a bead from A to B fastest?
7
+ // THE GRADIENTS: every ramp is a vertical 3-stop speedometer
8
+ // (v = √(2gΔh) — depth IS speed); the winner's secret is a curvature gradient.
9
+ //
10
+ // Pattern mirrors creator-free-kicks.manic: hook → setup → race → secret →
11
+ // endcard. Every curve and bead is RK4, not drawn.
12
+ // ============================================================================
13
+
14
+ title("The Fastest Descent");
15
+ canvas("9:16");
16
+ template("shorts");
17
+
18
+ creator(me, "@anish2good name=Manic tagline=Turn_plain_text_into_amazing_math_videos yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=gold footer=signature cta=Try_it_free safe=reels");
19
+ watermark(mk, (w*0.955-100, h*0.045+24), "Made With Manic");
20
+
21
+ // ---- backdrop ----
22
+ circle(stage, (cx, h*0.42), w*0.55);
23
+ filled(stage);
24
+ gradient(stage, panel, void, radial);
25
+ opacity(stage, 0.55);
26
+
27
+ // ---- the race, sized for portrait: A upper-left, B lower-right ----
28
+ let rx = w*0.14;
29
+ let ry = h*0.30;
30
+ let ru = w*0.22;
31
+ brachistochrone(race, (rx, ry), ru);
32
+ untraced(race.straight); untraced(race.circle); untraced(race.parabola); untraced(race.cycloid);
33
+ hidden(race.bead_straight); hidden(race.bead_circle); hidden(race.bead_parabola); hidden(race.bead_cycloid);
34
+ hidden(race.markA); hidden(race.labelA); hidden(race.markB); hidden(race.labelB);
35
+ stroke(race.straight, 4); stroke(race.circle, 4); stroke(race.parabola, 4); stroke(race.cycloid, 6);
36
+ opacity(race.straight, 0.95); opacity(race.circle, 0.95); opacity(race.parabola, 0.95); opacity(race.cycloid, 1);
37
+
38
+ // depth IS speed — blue high (potential), gold low (kinetic)
39
+ gradient(race.straight, gold, cyan, blue, 270);
40
+ gradient(race.circle, gold, cyan, blue, 270);
41
+ gradient(race.parabola, gold, cyan, blue, 270);
42
+ gradient(race.cycloid, gold, cyan, blue, 270);
43
+
44
+ // ghost cycloid for the curvature reveal
45
+ brachistochrone(ghost, (rx, ry), ru);
46
+ hidden(ghost.straight); hidden(ghost.circle); hidden(ghost.parabola);
47
+ hidden(ghost.bead_straight); hidden(ghost.bead_circle); hidden(ghost.bead_parabola); hidden(ghost.bead_cycloid);
48
+ hidden(ghost.markA); hidden(ghost.labelA); hidden(ghost.markB); hidden(ghost.labelB);
49
+ hidden(ghost.cycloid); untraced(ghost.cycloid);
50
+ stroke(ghost.cycloid, 7);
51
+ gradient(ghost.cycloid, dim, magenta, "curvature");
52
+ glow(ghost.cycloid, 0.7);
53
+
54
+ // ---- typography ----
55
+ text(kicker, (cx, h*0.11), "shortest path — or fastest?");
56
+ size(kicker, 32); color(kicker, gold); bold(kicker); wrap(kicker, w*0.84);
57
+ untraced(kicker); cursor(kicker);
58
+
59
+ equation(law, (cx, h*0.62), `v=\sqrt{2g\,\Delta h}`, 38);
60
+ color(law, cyan); hidden(law);
61
+
62
+ text(cap, (cx, h*0.74), ""); size(cap, 28); color(cap, dim); wrap(cap, w*0.86);
63
+
64
+ socials(me);
65
+ endcard(me, "title=Try_Manic cta=8gwifi.org/manic");
66
+
67
+ // ============================== SCRIPT ==============================
68
+
69
+ // 1 — HOOK.
70
+ mark("hook");
71
+ type(kicker, 1.2);
72
+
73
+ // 2 — THE PROBLEM.
74
+ show(cap, 0.3);
75
+ say(cap, "Bernoulli, 1696 — a bead slides from A down to B. Gravity only.");
76
+ par {
77
+ show(race.markA, 0.35); show(race.labelA, 0.25);
78
+ show(race.markB, 0.35); show(race.labelB, 0.25);
79
+ }
80
+ pulse(race.markA); pulse(race.markB);
81
+ wait(0.4);
82
+
83
+ // 3 — FOUR WIRES, each a height→speed color bar.
84
+ say(cap, "four wires — colored by depth, and depth IS speed");
85
+ stagger(0.12) {
86
+ draw(race.straight, 0.65);
87
+ draw(race.circle, 0.65);
88
+ draw(race.parabola, 0.65);
89
+ draw(race.cycloid, 0.85);
90
+ }
91
+ show(law, 0.45);
92
+ wait(0.5);
93
+ say(cap, "blue = potential · gold = all of it cashed into speed");
94
+ wait(0.7);
95
+
96
+ // 4 — THE RACE.
97
+ say(cap, "release all four at once …");
98
+ par {
99
+ show(race.bead_straight, 0.2);
100
+ show(race.bead_circle, 0.2);
101
+ show(race.bead_parabola, 0.2);
102
+ show(race.bead_cycloid, 0.2);
103
+ }
104
+ run(race, 5.5);
105
+
106
+ // 5 — THE WINNER.
107
+ recolor(cap, gold);
108
+ say(cap, "the CYCLOID wins — the straight line isn't even close");
109
+ flash(race.cycloid, magenta);
110
+ glow(race.bead_cycloid, 1.9);
111
+ pulse(race.bead_cycloid);
112
+ wait(0.7);
113
+
114
+ // 6 — THE SECRET: curvature gradient.
115
+ recolor(cap, dim);
116
+ say(cap, "its secret, colored by curvature — it bends hardest at the start");
117
+ par {
118
+ fade(race.straight, 0.4);
119
+ fade(race.circle, 0.4);
120
+ fade(race.parabola, 0.4);
121
+ fade(race.cycloid, 0.4);
122
+ fade(race.bead_straight, 0.35);
123
+ fade(race.bead_circle, 0.35);
124
+ fade(race.bead_parabola, 0.35);
125
+ fade(race.bead_cycloid, 0.35);
126
+ fade(law, 0.35);
127
+ }
128
+ show(ghost.cycloid, 0.15);
129
+ draw(ghost.cycloid, 1.3);
130
+ wait(0.35);
131
+ say(cap, "a near-vertical dive buys gold-speed immediately");
132
+ flash(ghost.cycloid, magenta);
133
+ wait(0.8);
134
+
135
+ // 7 — POINT + ENDCARD.
136
+ recolor(cap, cyan);
137
+ say(cap, "every color is computed — depth is the speedometer, the bend is the strategy");
138
+ wait(0.9);
139
+
140
+ mark("endcard");
141
+ par {
142
+ fade(cap, 0.4);
143
+ fade(me.footer, 0.4);
144
+ fade(kicker, 0.4);
145
+ fade(ghost.cycloid, 0.4);
146
+ fade(race.cycloid, 0.4);
147
+ fade(race.bead_cycloid, 0.4);
148
+ fade(race.markA, 0.3); fade(race.markB, 0.3);
149
+ fade(race.labelA, 0.3); fade(race.labelB, 0.3);
150
+ fade(stage, 0.4);
151
+ }
152
+ show(me.endcard, 0.6);
153
+ wait(1.6);
@@ -0,0 +1,125 @@
1
+ // ============================================================================
2
+ // gradient-fastest-descent.manic — a 3B1B-style 16:9 story told THROUGH
3
+ // gradients (companion: gradient-fastest-descent-shorts.manic)
4
+ // ----------------------------------------------------------------------------
5
+ // THE PROBLEM (Bernoulli, 1696): a bead slides from A down to B under gravity.
6
+ // Which wire shape gets it there fastest? Newton, Leibniz and the Bernoullis
7
+ // all answered: the CYCLOID — not the straight line.
8
+ //
9
+ // THE GRADIENTS DO THE PHYSICS:
10
+ // · every ramp wears a 3-stop vertical gradient — for a frictionless bead
11
+ // v = √(2gΔh), so DEPTH IS SPEED and the color bar is a real speedometer
12
+ // · the winner's secret is revealed by a "curvature" gradient — the cycloid
13
+ // bends hardest at the very start, a near-vertical dive that buys speed
14
+ // immediately
15
+ // · a radial well sinks the stage behind the race
16
+ // Every curve, bead and color is computed (RK4 bead-on-wire), not drawn.
17
+ // ============================================================================
18
+
19
+ title("The Fastest Descent");
20
+ canvas("16:9");
21
+ template("blank");
22
+
23
+ // ---- backdrop: a radial gravity well behind the race ----
24
+ circle(stage, (cx, 380), 300);
25
+ filled(stage);
26
+ gradient(stage, panel, void, radial);
27
+ opacity(stage, 0.4);
28
+
29
+ // ---- the race: four wires from A to B, beads pre-integrated with RK4 ----
30
+ brachistochrone(race, (300, 170), 155);
31
+ untraced(race.straight); untraced(race.circle); untraced(race.parabola); untraced(race.cycloid);
32
+ hidden(race.bead_straight); hidden(race.bead_circle); hidden(race.bead_parabola); hidden(race.bead_cycloid);
33
+ hidden(race.markA); hidden(race.labelA); hidden(race.markB); hidden(race.labelB);
34
+ stroke(race.straight, 4); stroke(race.circle, 4); stroke(race.parabola, 4); stroke(race.cycloid, 5);
35
+ opacity(race.straight, 0.95); opacity(race.circle, 0.95); opacity(race.parabola, 0.95); opacity(race.cycloid, 1);
36
+
37
+ // depth IS speed: v = √(2gΔh), so a vertical 3-stop gradient over each wire's
38
+ // own bounds is its true speedometer — blue at the top (all potential),
39
+ // gold at the bottom (all kinetic). 270 puts the first stop at the bottom.
40
+ gradient(race.straight, gold, cyan, blue, 270);
41
+ gradient(race.circle, gold, cyan, blue, 270);
42
+ gradient(race.parabola, gold, cyan, blue, 270);
43
+ gradient(race.cycloid, gold, cyan, blue, 270);
44
+
45
+ // a second copy of the same sim: only its cycloid is used, re-dressed with a
46
+ // CURVATURE gradient for the reveal — same computed curve, different truth
47
+ brachistochrone(ghost, (300, 170), 155);
48
+ hidden(ghost.straight); hidden(ghost.circle); hidden(ghost.parabola);
49
+ hidden(ghost.bead_straight); hidden(ghost.bead_circle); hidden(ghost.bead_parabola); hidden(ghost.bead_cycloid);
50
+ hidden(ghost.markA); hidden(ghost.labelA); hidden(ghost.markB); hidden(ghost.labelB);
51
+ hidden(ghost.cycloid); untraced(ghost.cycloid);
52
+ stroke(ghost.cycloid, 6);
53
+ gradient(ghost.cycloid, dim, magenta, "curvature");
54
+ glow(ghost.cycloid, 0.6);
55
+
56
+ // ---- typography ----
57
+ caption(q, "shortest path — or fastest?", (cx, 56), 34, gold);
58
+ equation(law, (1020, 160), `v=\sqrt{2g\,\Delta h}`, 34);
59
+ color(law, cyan); hidden(law);
60
+ text(cap, (cx, h - 38), ""); size(cap, 20); color(cap, dim); display(cap);
61
+
62
+ // ============================== SCRIPT ==============================
63
+
64
+ // 1 — THE PROBLEM
65
+ say(cap, "Bernoulli, 1696 — a bead slides from A down to B under gravity alone", 0.4);
66
+ show(race.markA, 0.4); show(race.labelA, 0.3); pulse(race.markA);
67
+ show(race.markB, 0.4); show(race.labelB, 0.3); pulse(race.markB);
68
+ wait(0.3);
69
+ wordpop(q, 0.18);
70
+ wait(0.5);
71
+
72
+ // 2 — THE CANDIDATES, each wearing its speedometer
73
+ say(cap, "four wires — colored by depth, and depth IS speed", 0.4);
74
+ stagger(0.15) {
75
+ draw(race.straight, 0.7);
76
+ draw(race.circle, 0.7);
77
+ draw(race.parabola, 0.7);
78
+ draw(race.cycloid, 0.9);
79
+ }
80
+ wait(0.3);
81
+
82
+ show(law, 0.5);
83
+ say(cap, "blue = all potential energy · gold = all of it cashed into speed", 0.4);
84
+ wait(1.0);
85
+
86
+ // 3 — THE RACE (real RK4 bead-on-wire integrations)
87
+ say(cap, "release all four at once …", 0.4);
88
+ par {
89
+ show(race.bead_straight, 0.25);
90
+ show(race.bead_circle, 0.25);
91
+ show(race.bead_parabola, 0.25);
92
+ show(race.bead_cycloid, 0.25);
93
+ }
94
+ run(race, 6);
95
+
96
+ // 4 — THE WINNER
97
+ say(cap, "the CYCLOID wins — the straight line isn't even close", 0.4);
98
+ flash(race.cycloid, magenta);
99
+ glow(race.bead_cycloid, 1.9);
100
+ pulse(race.bead_cycloid);
101
+ wait(0.8);
102
+
103
+ // 5 — THE SECRET, told by a curvature gradient
104
+ say(cap, "its secret, colored by curvature: it bends hardest at the very start", 0.4);
105
+ par {
106
+ fade(race.straight, 0.5);
107
+ fade(race.circle, 0.5);
108
+ fade(race.parabola, 0.5);
109
+ fade(race.cycloid, 0.5);
110
+ fade(race.bead_straight, 0.4);
111
+ fade(race.bead_circle, 0.4);
112
+ fade(race.bead_parabola, 0.4);
113
+ fade(race.bead_cycloid, 0.4);
114
+ }
115
+ show(ghost.cycloid, 0.2);
116
+ draw(ghost.cycloid, 1.4);
117
+ wait(0.4);
118
+ say(cap, "a near-vertical dive buys gold-speed immediately — then spends it on distance", 0.4);
119
+ flash(ghost.cycloid, magenta);
120
+ wait(1.0);
121
+
122
+ // 6 — THE POINT
123
+ recolor(cap, cyan);
124
+ say(cap, "every color here is computed — depth is the speedometer, the bend is the strategy", 0.4);
125
+ wait(1.6);
@@ -0,0 +1,117 @@
1
+ // ============================================================================
2
+ // gradient-pendulum-shorts.manic — a 9:16 cinematic short told THROUGH a
3
+ // "speed" gradient. Sister piece to the brachistochrone pair
4
+ // (gradient-fastest-descent.manic / gradient-fastest-descent-shorts.manic).
5
+ // ----------------------------------------------------------------------------
6
+ // THE PROBLEM (Galileo, 1583): watching a chandelier swing in the Pisa
7
+ // cathedral, Galileo timed it with his own pulse. But WHERE along the arc is
8
+ // the bob fastest — and how would you ever see that?
9
+ //
10
+ // THE GRADIENT DOES THE PHYSICS: the swing arc is a pre-simulated RK4
11
+ // trajectory, uniformly sampled in time — so gradient(p.path, ..., "speed")
12
+ // colors it by its TRUE local speed. Gold floods the bottom (all kinetic),
13
+ // blue pools at the ends (the bob stands still for an instant). Nothing is
14
+ // keyframed; the color IS the simulation.
15
+ //
16
+ // Pattern mirrors creator-free-kicks.manic: hook → problem → reveal → law →
17
+ // prove on the painted arc → endcard.
18
+ // ============================================================================
19
+
20
+ title("Galileo's Chandelier");
21
+ canvas("9:16");
22
+ template("shorts");
23
+
24
+ creator(me, "@anish2good name=Manic tagline=Turn_plain_text_into_amazing_math_videos yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=gold footer=signature cta=Try_it_free safe=reels");
25
+ watermark(mk, (w*0.955-100, h*0.045+24), "Made With Manic");
26
+
27
+ // ---- backdrop: a radial pool of light under the chandelier ----
28
+ circle(halo, (cx, h*0.42), w*0.52);
29
+ filled(halo);
30
+ gradient(halo, panel, void, radial);
31
+ opacity(halo, 0.8);
32
+
33
+ // ---- the chandelier: a real RK4 pendulum, arc uniformly sampled in time ----
34
+ pendulum(p, (cx, h*0.26), 1, 55, w*0.36);
35
+ hidden(p.overlays);
36
+ untraced(p.path);
37
+ stroke(p.path, 7);
38
+ opacity(p.path, 0.95);
39
+ // the reveal: 3 stops by TRUE local speed — slowest first, fastest last
40
+ gradient(p.path, blue, cyan, gold, "speed");
41
+ color(p.bob, gold); glow(p.bob, 0.7);
42
+ stroke(p.rod, 3);
43
+
44
+ // ---- typography ----
45
+ text(kicker, (cx, h*0.11), "where is a pendulum FASTEST?");
46
+ size(kicker, 34); color(kicker, gold); bold(kicker); wrap(kicker, w*0.82);
47
+ untraced(kicker); cursor(kicker);
48
+
49
+ equation(law, (cx, h*0.64), `mgh \;=\; \tfrac{1}{2}mv^2`, 40);
50
+ color(law, cyan); hidden(law);
51
+
52
+ text(cap, (cx, h*0.76), ""); size(cap, 30); color(cap, dim); wrap(cap, w*0.84);
53
+
54
+ socials(me);
55
+ endcard(me, "title=Try_Manic cta=8gwifi.org/manic");
56
+
57
+ // ============================== SCRIPT ==============================
58
+
59
+ // 1 — HOOK.
60
+ mark("hook");
61
+ type(kicker, 1.2);
62
+
63
+ // 2 — GALILEO'S PROBLEM.
64
+ show(cap, 0.3);
65
+ say(cap, "1583 — Galileo times a swinging chandelier with his own pulse");
66
+ par {
67
+ show(p.pivot, 0.4);
68
+ show(p.rod, 0.4);
69
+ show(p.bob, 0.4);
70
+ }
71
+ pulse(p.bob);
72
+ wait(0.4);
73
+
74
+ // 3 — WATCH IT SWING. Your eye can't catch where it's quickest.
75
+ say(cap, "watch it — can you SEE where it moves fastest?");
76
+ swing(p, 4);
77
+ wait(0.3);
78
+
79
+ // 4 — THE REVEAL: paint the arc with its own speed.
80
+ say(cap, "freeze — and color the arc by its true speed");
81
+ draw(p.path, 1.8);
82
+ wait(0.5);
83
+ recolor(cap, gold);
84
+ say(cap, "gold floods the bottom — blue pools at the tips, where it stops for an instant");
85
+ flash(p.path, gold);
86
+ wait(0.8);
87
+
88
+ // 5 — WHY: energy. Height traded for speed, every swing, exactly.
89
+ recolor(cap, dim);
90
+ say(cap, "height falls, speed rises — energy just changes clothes");
91
+ show(law, 0.5);
92
+ wait(0.5);
93
+ rewrite(law, `v=\sqrt{2gh}`, 0.8, smooth);
94
+ say(cap, "at the lowest point ALL the height has become speed — that's the gold");
95
+ wait(0.8);
96
+
97
+ // 6 — PROVE IT: run the bob on its own painted speedometer.
98
+ recolor(cap, cyan);
99
+ say(cap, "the color is computed, not painted — a real RK4 swing on its own speedometer");
100
+ swing(p, 4);
101
+ wait(0.5);
102
+
103
+ // 7 — END CARD.
104
+ mark("endcard");
105
+ par {
106
+ fade(cap, 0.4);
107
+ fade(me.footer, 0.4);
108
+ fade(law, 0.4);
109
+ fade(kicker, 0.4);
110
+ fade(p.path, 0.4);
111
+ fade(p.rod, 0.4);
112
+ fade(p.bob, 0.4);
113
+ fade(p.pivot, 0.4);
114
+ fade(halo, 0.4);
115
+ }
116
+ show(me.endcard, 0.6);
117
+ wait(1.6);