@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,194 @@
1
+ // ============================================================================
2
+ // derivative-of-ln-x.manic — inverse-function derivatives on a turning plane
3
+ // ----------------------------------------------------------------------------
4
+ // The curve is first read as y=e^x. A true 3-D camera turn exchanges the screen
5
+ // roles of world x/y, so the same relationship reads x=e^y. While the graph is
6
+ // hidden for the first plane turn, morph3 exchanges its coordinates; the same
7
+ // geometry can then remain visible through the return turn into y=ln(x).
8
+ // ============================================================================
9
+
10
+ title("Why the derivative of ln x is 1/x");
11
+ canvas("16:9");
12
+ template("plain");
13
+ // Landscape proof: the upper-right stays clear while the algebra owns the
14
+ // bottom and the vertical axis label owns the top-centre.
15
+ watermark(manicMark, (1135, 30), "Made With Manic");
16
+
17
+ // Orthographic overhead camera: the continuous pole-safe orbit frame keeps the
18
+ // whole turn smooth, and roll3 controls which world direction is screen-up.
19
+ camera3((0, 0.5, 12), (0, 0.5, 0), 8.5, orthographic);
20
+
21
+ // ---------------------------------------------------------------------------
22
+ // ONE WORLD PLANE · axes, grid, exponential, tangent and exact slope triangle
23
+ // ---------------------------------------------------------------------------
24
+
25
+ grid3(grid, (0, 0, 0), 4, 1);
26
+ color(grid, dim); opacity(grid, 0.30); tag(grid, world);
27
+
28
+ arrow3(xaxis, (-4.05, 0, 0), (4.05, 0, 0));
29
+ arrow3(yaxis, (0, -3.4, 0), (0, 4.05, 0));
30
+ color(xaxis, fg); color(yaxis, fg); thick(xaxis, 0.012); thick(yaxis, 0.012);
31
+ tag(xaxis, world); tag(yaxis, world);
32
+
33
+ for i in -4..5 {
34
+ if i != 0 {
35
+ line3(xtick{i}, (i, -0.07, 0), (i, 0.07, 0));
36
+ line3(ytick{i}, (-0.07, i, 0), (0.07, i, 0));
37
+ color(xtick{i}, dim); color(ytick{i}, dim);
38
+ tag(xtick{i}, world); tag(ytick{i}, world);
39
+ }
40
+ }
41
+
42
+ equation(xlab, (0,0), `x`, 31); pin3(xlab, (4.10, -0.18, 0)); tag(xlab, world);
43
+ equation(ylab, (0,0), `y`, 31); pin3(ylab, (-0.18, 4.10, 0)); tag(ylab, world);
44
+ hidden(world);
45
+
46
+ // Source curve γ(t)=(t,e^t), and its inverse parameterisation γ⁻¹(t)=(e^t,t).
47
+ curve3(curve, "t", "exp(t)", "0", (-3.6, 1.42));
48
+ curve3(curveTarget, "exp(t)", "t", "0", (-3.6, 1.42));
49
+ color(curve, lime); color(curveTarget, lime); thick(curve, 0.024); thick(curveTarget, 0.024);
50
+ untraced(curve); hidden(curveTarget); morph3(curve, curveTarget);
51
+
52
+ equation(expName, (0,0), `y=e^x`, 31); color(expName, lime); pin3(expName, (-1.45, 2.20, 0)); hidden(expName);
53
+ equation(swappedName, (0,0), `x=e^y`, 31); color(swappedName, lime); pin3(swappedName, (2.65, -1.20, 0)); hidden(swappedName);
54
+ equation(logName, (0,0), `y=\ln(x)`, 31); color(logName, lime); pin3(logName, (2.65, 0.90, 0)); hidden(logName);
55
+
56
+ // At t=0.6: P=(0.6,e^0.6), and e^0.6 ≈ 1.822. The tangent reaches y=0
57
+ // exactly one unit of run before P, so its slope triangle is rise/run = y/1.
58
+ curve3(tangent, "-0.65+2*t", "-0.455529+3.644238*t", "0", (0,1));
59
+ curve3(tangentTarget, "-0.455529+3.644238*t", "-0.65+2*t", "0", (0,1));
60
+ color(tangent, magenta); color(tangentTarget, magenta); thick(tangent, 0.018); thick(tangentTarget, 0.018);
61
+ untraced(tangent); hidden(tangentTarget); morph3(tangent, tangentTarget);
62
+
63
+ curve3(runSide, "-0.4+t", "0", "0", (0,1));
64
+ curve3(runTarget, "0", "-0.4+t", "0", (0,1));
65
+ color(runSide, gold); color(runTarget, gold); thick(runSide, 0.024); thick(runTarget, 0.024);
66
+ untraced(runSide); hidden(runTarget); morph3(runSide, runTarget);
67
+
68
+ curve3(riseSide, "0.6", "1.822119*t", "0", (0,1));
69
+ curve3(riseTarget, "1.822119*t", "0.6", "0", (0,1));
70
+ color(riseSide, cyan); color(riseTarget, cyan); thick(riseSide, 0.024); thick(riseTarget, 0.024);
71
+ untraced(riseSide); hidden(riseTarget); morph3(riseSide, riseTarget);
72
+
73
+ point3(contact, (0.6, 1.822119, 0), 0.075); color(contact, fg); hidden(contact);
74
+ point3(contactTarget, (1.822119, 0.6, 0), 0.075); color(contactTarget, fg); hidden(contactTarget);
75
+
76
+ equation(riseY, (0,0), `y`, 28); color(riseY, cyan); pin3(riseY, (0.82, 0.91, 0)); hidden(riseY);
77
+ equation(runOne, (0,0), `1`, 28); color(runOne, gold); pin3(runOne, (0.10, -0.22, 0)); hidden(runOne);
78
+ equation(targetX, (0,0), `x`, 28); color(targetX, cyan); pin3(targetX, (0.91, 0.82, 0)); hidden(targetX);
79
+ equation(targetOne, (0,0), `1`, 28); color(targetOne, gold); pin3(targetOne, (-0.22, 0.10, 0)); hidden(targetOne);
80
+
81
+ // The diagonal is the hinge / mirror relation during the plane turns.
82
+ for i in -9..10 {
83
+ line3(diag{i}, (i*0.42, i*0.42, 0.02), (i*0.42+0.24, i*0.42+0.24, 0.02));
84
+ color(diag{i}, magenta); thick(diag{i}, 0.018); untraced(diag{i}); tag(diag{i}, mirror);
85
+ }
86
+ equation(diagName, (0,0), `y=x`, 27); color(diagName, magenta); pin3(diagName, (2.55, 2.55, 0.02)); hidden(diagName);
87
+
88
+ // Screen-space algebra. Separate equations keep the camera/geometry generic.
89
+ equation(slopeExp, (cx, 655), `\textcolor{magenta}{\mathrm{slope}}=\textcolor{cyan}{e^x}`, 40); hidden(slopeExp);
90
+ equation(slopeY, (cx, 655), `\textcolor{magenta}{\mathrm{slope}}=\textcolor{cyan}{y}`, 40); hidden(slopeY);
91
+ equation(slopeFracY, (cx, 655), `\textcolor{magenta}{\mathrm{slope}}=\frac{\textcolor{cyan}{y}}{\textcolor{gold}{1}}=\frac{\textcolor{cyan}{\mathrm{rise}}}{\textcolor{gold}{\mathrm{run}}}`, 40); hidden(slopeFracY);
92
+ // Persistent algebra pieces. The unchanged prefix/equality never disappear:
93
+ // only the term being justified moves, fades, or arrives. This is the same
94
+ // object-continuity principle used by matching-transform systems, expressed
95
+ // with ordinary Manic entities rather than replacing a whole equation image.
96
+ equation(slopeWord, (500, 655), `\textcolor{magenta}{\mathrm{slope}}`, 40); hidden(slopeWord); tag(slopeWord, inverseAlgebra);
97
+ equation(mainEquals, (575, 655), `=`, 40); hidden(mainEquals); tag(mainEquals, inverseAlgebra);
98
+ equation(heightTerm, (630, 655), `\textcolor{cyan}{\mathrm{height}}`, 40); hidden(heightTerm); tag(heightTerm, inverseAlgebra);
99
+ equation(xTerm, (630, 655), `\textcolor{cyan}{x}`, 40); hidden(xTerm); tag(xTerm, inverseAlgebra);
100
+ equation(oneTerm, (630, 674), `\textcolor{gold}{1}`, 36); hidden(oneTerm); tag(oneTerm, inverseAlgebra);
101
+ line(termBar, (616, 657), (644, 657)); color(termBar, fg); stroke(termBar, 2); untraced(termBar); tag(termBar, inverseAlgebra);
102
+ equation(ratioEquals, (685, 655), `=`, 40); hidden(ratioEquals); tag(ratioEquals, inverseAlgebra);
103
+ equation(ratioTerm, (780, 655), `\frac{\textcolor{cyan}{\mathrm{rise}}}{\textcolor{gold}{\mathrm{run}}}`, 40); hidden(ratioTerm); tag(ratioTerm, inverseAlgebra);
104
+ equation(derivativeTerm, (475, 655), `\frac{d}{dx}\ln(x)`, 41); hidden(derivativeTerm); tag(derivativeTerm, inverseAlgebra);
105
+
106
+ // Split glyphs let generic `cycle` retain their identity through xy → yx.
107
+ equation(planeX, (550, 640), `x`, 54); hidden(planeX); tag(planeX, planeLabel);
108
+ equation(planeY, (575, 640), `y`, 54); hidden(planeY); tag(planeY, planeLabel);
109
+ equation(planeWord, (685, 640), `\mathrm{plane}`, 54); hidden(planeWord); tag(planeWord, planeLabel);
110
+
111
+ // ---------------------------------------------------------------------------
112
+ // TIMELINE · 75.49 seconds including manic's final one-second tail
113
+ // ---------------------------------------------------------------------------
114
+
115
+ show(world, 1.20);
116
+ draw(curve, 2.40);
117
+ show(expName, 0.60);
118
+ wait(2.50);
119
+
120
+ show(slopeExp, 0.70);
121
+ wait(2.20);
122
+ par { draw(riseSide, 1.20); show(riseY, 0.45); show(contact, 0.30); }
123
+ par { fade(slopeExp, 0.55); show(slopeY, 0.55); }
124
+ wait(2.00);
125
+
126
+ par { draw(tangent, 1.20); draw(runSide, 1.00); show(runOne, 0.40); }
127
+ par { fade(slopeY, 0.60); show(slopeFracY, 0.60); }
128
+ wait(7.90);
129
+
130
+ // First turn: remove the measurement clutter, reveal the mirror hinge, and
131
+ // move from the top of the plane to its underside. Below + -90° roll makes
132
+ // screen-horizontal follow world y and screen-vertical follow world x.
133
+ par {
134
+ fade(curve, 0.70); fade(expName, 0.70); fade(tangent, 0.70);
135
+ fade(runSide, 0.70); fade(riseSide, 0.70); fade(contact, 0.70);
136
+ fade(riseY, 0.70); fade(runOne, 0.70); fade(slopeFracY, 0.70);
137
+ }
138
+ par { draw(mirror, 0.70); show(diagName, 0.50); show(planeLabel, 0.50); }
139
+ par {
140
+ orbit3(-90, -90, 12, 7.00, smooth);
141
+ roll3(90, 7.00, smooth);
142
+ // The graph is hidden here, so exchange its coordinates before it returns.
143
+ to(curve, morph, 1, 7.00, smooth);
144
+ to(tangent, morph, 1, 7.00, smooth);
145
+ to(runSide, morph, 1, 7.00, smooth);
146
+ to(riseSide, morph, 1, 7.00, smooth);
147
+ seq { wait(2.80); cycle(planeX, planeY, 1.40, 70, smooth); }
148
+ }
149
+
150
+ // Same world geometry, now read with exchanged screen axes.
151
+ par {
152
+ show(curve, 0.70); show(tangent, 0.70); show(runSide, 0.70); show(riseSide, 0.70);
153
+ show(contactTarget, 0.50); show(swappedName, 0.55); show(targetX, 0.45); show(targetOne, 0.45);
154
+ fade(diagName, 0.45); erase(mirror, 0.70); fade(planeLabel, 0.45);
155
+ }
156
+ par { show(slopeWord, 0.65); show(mainEquals, 0.65); show(heightTerm, 0.65); }
157
+ wait(3.00);
158
+ par { fade(heightTerm, 0.60); show(xTerm, 0.60); }
159
+ wait(3.00);
160
+ par { show(ratioEquals, 0.60); show(ratioTerm, 0.60); }
161
+ wait(3.00);
162
+ // x becomes x/1 in place: x lifts, the denominator arrives, and the rest of
163
+ // the displayed identity remains untouched.
164
+ par { move(xTerm, (630, 640), 0.60, smooth); show(oneTerm, 0.60); draw(termBar, 0.60); }
165
+ wait(6.20);
166
+
167
+ // Second turn: return the camera overhead while keeping the transformed curve
168
+ // and triangle visible. The same objects land as an ordinary y=ln(x) graph.
169
+ par {
170
+ draw(mirror, 0.60); show(diagName, 0.45); show(planeLabel, 0.45);
171
+ fade(slopeWord, 0.60); fade(mainEquals, 0.60); fade(xTerm, 0.60);
172
+ fade(oneTerm, 0.60); erase(termBar, 0.60); fade(ratioEquals, 0.60); fade(ratioTerm, 0.60);
173
+ }
174
+ par {
175
+ orbit3(-90, 90, 12, 7.00, smooth);
176
+ roll3(0, 7.00, smooth);
177
+ fade(swappedName, 3.00); show(logName, 3.00);
178
+ // Prepare the next algebra state invisibly while the plane is turning.
179
+ move(ratioTerm, (630, 655), 1.20, smooth);
180
+ move(oneTerm, (630, 640), 1.20, smooth);
181
+ move(xTerm, (630, 674), 1.20, smooth);
182
+ seq { wait(2.80); cycle(planeX, planeY, 1.40, -70, smooth); }
183
+ }
184
+ par {
185
+ fade(planeLabel, 0.45); fade(diagName, 0.45); erase(mirror, 0.70);
186
+ show(slopeWord, 0.65); show(mainEquals, 0.65); show(ratioTerm, 0.65);
187
+ }
188
+ wait(2.20);
189
+ // Only the right-hand term changes: rise/run becomes 1/x.
190
+ par { fade(ratioTerm, 0.60); show(oneTerm, 0.60); show(xTerm, 0.60); draw(termBar, 0.60); }
191
+ wait(3.00);
192
+ // The proven reciprocal stays; only the name on the left becomes d/dx ln(x).
193
+ par { fade(slopeWord, 0.70); show(derivativeTerm, 0.70); pulse(curve, 0.70); }
194
+ wait(9.89);
@@ -0,0 +1,56 @@
1
+ // ============================================================================
2
+ // diagonalise.manic — A = P D P^-1 made visual (a template)
3
+ // ----------------------------------------------------------------------------
4
+ // The big idea of diagonalisation: every (real-diagonalisable) matrix has a
5
+ // basis — its EIGENVECTORS — in which it does nothing but STRETCH each axis.
6
+ // No rotation, no shear: just a diagonal scaling D = diag(lambda1, lambda2).
7
+ //
8
+ // `diagonalise(id, (cx,cy), unit, a,b,c,d, [color])` draws, for [[a,b],[c,d]]:
9
+ // * the (generally skewed) eigen-grid — the coordinate frame of the eigenbasis
10
+ // * the two eigen-axes dg.axis1 / dg.axis2
11
+ // * the unit eigen-cell dg.cell and its image under A dg.img
12
+ // * the eigenvector images as arrows dg.v1 / dg.v2 (+ labels dg.v1l / dg.v2l)
13
+ // Complex or repeated eigenvalues (no real 2-D eigenbasis) leave a note instead.
14
+ //
15
+ // TO ADAPT: change the four matrix numbers below. Try a non-symmetric matrix
16
+ // like (2,1,0,3) to see a SKEWED eigenbasis, or (0,-1,1,0) to see the
17
+ // "no real eigenbasis" note (a pure rotation).
18
+ // ============================================================================
19
+
20
+ title("Diagonalisation: a matrix in its own basis");
21
+ canvas("16:9");
22
+
23
+ let ox = cx - 40;
24
+ let oy = cy + 20;
25
+
26
+ text(hdr, (cx, 54), "A = P D P^-1 — in the eigenbasis, A is only a stretch");
27
+ size(hdr, 24); color(hdr, cyan); bold(hdr); display(hdr);
28
+
29
+ // the matrix [[2,1],[1,2]] — eigenvalues 3 (along (1,1)) and 1 (along (1,-1))
30
+ diagonalise(dg, (ox, oy), 60, 2, 1, 1, 2);
31
+
32
+ // the faint eigen-grid stays as static context; reveal the rest in beats:
33
+ untraced(dg.axis1); untraced(dg.axis2); // eigen-axes draw in
34
+ hidden(dg.cell); hidden(dg.img); // unit cell fades in; image fades to 0.4
35
+ untraced(dg.v1); untraced(dg.v2); // eigenvector arrows draw in
36
+ hidden(dg.v1l); hidden(dg.v2l); // lambda labels fade in
37
+
38
+ text(cap, (cx, h - 50), ""); size(cap, 22); color(cap, dim); display(cap);
39
+
40
+ // ---- timeline ----
41
+ say(cap, "every matrix has special directions — its eigenvectors", 0.5);
42
+ par { draw(dg.axis1, 0.7); draw(dg.axis2, 0.7); }
43
+ wait(1.2);
44
+
45
+ say(cap, "build the unit cell from those two directions", 0.5);
46
+ show(dg.cell, 0.6);
47
+ wait(1.4);
48
+
49
+ say(cap, "apply A: the cell only STRETCHES along each axis — never rotates", 0.5);
50
+ to(dg.img, opacity, 0.4, 0.8);
51
+ par { draw(dg.v1, 0.7); draw(dg.v2, 0.7); }
52
+ wait(1.2);
53
+
54
+ say(cap, "the stretch factors ARE the eigenvalues — the diagonal of D", 0.5);
55
+ show(dg.v1l, 0.4); show(dg.v2l, 0.4);
56
+ wait(1.6);
@@ -0,0 +1,29 @@
1
+ // Dijkstra — single-source shortest paths on a WEIGHTED graph. Give edges a
2
+ // weight with `a-b:w` (drawn as a midpoint label). `dijkstra(g, start)` reads the
3
+ // weights, then runs the classic loop: repeatedly settle the nearest unsettled
4
+ // node (magenta -> lime), relaxing its edges and lowering neighbours' distances.
5
+ // Each node shows its best-known distance (inf -> the final shortest distance),
6
+ // and the shortest-path-tree edges stay lit at the end.
7
+ //
8
+ // manic examples/dijkstra.manic
9
+
10
+ title("Dijkstra");
11
+ canvas("16:9");
12
+
13
+ text(head, (cx, 58), "shortest paths: settle the nearest node, relax its edges");
14
+ display(head); color(head, cyan); size(head, 25); hidden(head);
15
+ text(cap, (cx, 690), ""); color(cap, dim); size(cap, 24);
16
+
17
+ graph(g, "a b c d e f",
18
+ "a-b:2 a-c:5 b-c:1 b-d:4 c-e:3 d-e:1 d-f:2 e-f:6",
19
+ circular, (cx, 350), 210, 30);
20
+
21
+ show(head, 0.5);
22
+ say(cap, "each node shows its best distance: start 0, the rest inf");
23
+ wait(0.7);
24
+
25
+ section("Relax");
26
+ say(cap, "settle the nearest node, then relax every edge leaving it");
27
+ dijkstra(g, a);
28
+ say(cap, "settled distances are final; the lime edges form the shortest-path tree");
29
+ wait(1.4);
@@ -0,0 +1,211 @@
1
+ // ============================================================================
2
+ // dimensions-unfold.manic — how a point becomes a line, a plane, then a room
3
+ // ----------------------------------------------------------------------------
4
+ // The geometry never cuts to a replacement scene. One point grows two halves
5
+ // of a wire; that same wire sweeps across y while a grid resolves behind it;
6
+ // the completed sheet then lifts as one tagged roof while a transparent room
7
+ // appears below. The animation is the explanation.
8
+ // ============================================================================
9
+
10
+ title("How Space Learned to Grow — 1D to 3D");
11
+ canvas("9:16");
12
+ template("neon");
13
+ watermark(manicMark, (238, 108), "Made With Manic");
14
+
15
+ creator(me, "@anish2good name=Manic_3D tagline=Dimensions_in_motion yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=social safe=reels");
16
+ socials(me);
17
+
18
+ text(kicker, (540, 164), "FROM A POINT TO A WORLD");
19
+ size(kicker, 21); bold(kicker); color(kicker, cyan); hidden(kicker);
20
+ text(headline, (540, 228), "How space learned to grow");
21
+ size(headline, 42); bold(headline); color(headline, fg); hidden(headline);
22
+ text(phase, (540, 300), "PROLOGUE · THE FIRST POINT");
23
+ size(phase, 23); bold(phase); color(phase, gold); hidden(phase);
24
+
25
+ text(narration, (540, 1330), "In the beginning, there was only one location.");
26
+ size(narration, 27); bold(narration); color(narration, fg); wrap(narration, 860); hidden(narration);
27
+ text(principle, (540, 1390), "No direction. No distance. Just here.");
28
+ size(principle, 20); color(principle, dim); hidden(principle);
29
+ text(progress, (540, 1492), "POINT");
30
+ size(progress, 27); bold(progress); color(progress, cyan); hidden(progress);
31
+ text(takeaway, (540, 1554), "DIMENSIONS ARE MOTIONS THAT LEAVE SPACE BEHIND");
32
+ size(takeaway, 17); bold(takeaway); color(takeaway, gold); hidden(takeaway);
33
+
34
+ // ---------------------------------------------------------------------------
35
+ // 0D → 1D: one point extends left and right.
36
+ // ---------------------------------------------------------------------------
37
+
38
+ camera3((0, -11, 4.5), (0, -4, 0), 39);
39
+
40
+ point3(seed, (0,-4,0), 0.12); color(seed, gold); hidden(seed);
41
+ finish3(seed, "material=glass shading=smooth depth=0.40 shadow=0.25");
42
+
43
+ line3(leftThread, (0,-4,0), (-0.02,-4,0)); color(leftThread, cyan); thick(leftThread, 0.065); hidden(leftThread); tag(leftThread, wire); tag(leftThread, sheetSkin);
44
+ line3(rightThread, (0,-4,0), (0.02,-4,0)); color(rightThread, cyan); thick(rightThread, 0.065); hidden(rightThread); tag(rightThread, wire); tag(rightThread, sheetSkin);
45
+
46
+ point3(leftEnd, (-4,-4,0), 0.14); color(leftEnd, fg); hidden(leftEnd);
47
+ point3(rightEnd, (4,-4,0), 0.14); color(rightEnd, fg); hidden(rightEnd);
48
+ point3(leftLabelAnchor, (-3.25,-4,0.58), 0.01); hidden(leftLabelAnchor);
49
+ point3(rightLabelAnchor, (3.25,-4,0.58), 0.01); hidden(rightLabelAnchor);
50
+ text(leftLabel, (0,0), "BACKWARD"); size(leftLabel, 19); bold(leftLabel); color(leftLabel, dim); hidden(leftLabel); pin3(leftLabel, leftLabelAnchor);
51
+ text(rightLabel, (0,0), "FORWARD"); size(rightLabel, 19); bold(rightLabel); color(rightLabel, dim); hidden(rightLabel); pin3(rightLabel, rightLabelAnchor);
52
+
53
+ arrow3(leftChoice, (0,-4,0.18), (-3.5,-4,0.18)); color(leftChoice, magenta); thick(leftChoice, 0.035); untraced(leftChoice); hidden(leftChoice);
54
+ arrow3(rightChoice, (0,-4,0.18), (3.5,-4,0.18)); color(rightChoice, magenta); thick(rightChoice, 0.035); untraced(rightChoice); hidden(rightChoice);
55
+
56
+ // ---------------------------------------------------------------------------
57
+ // 2D: the wire sweeps from y=-4 to y=4 and leaves a sheet/grid behind.
58
+ // Every visible grid member joins sheetSkin so the whole plane can later rise.
59
+ // ---------------------------------------------------------------------------
60
+
61
+ line3(baseEdge, (-4,-4,0), (4,-4,0)); color(baseEdge, cyan); thick(baseEdge, 0.050); hidden(baseEdge); tag(baseEdge, sheetSkin);
62
+ cube3(sheet, (0,0,0), (8,8,0.08)); color(sheet, blue); hidden(sheet); tag(sheet, sheetSkin);
63
+ finish3(sheet, "material=glass shading=flat mesh=0.18 depth=0.24 shadow=0.10");
64
+
65
+ for i in 1..8 {
66
+ let p = -4+i;
67
+ line3(row{i}, (-4,p,0.05), (4,p,0.05));
68
+ color(row{i}, magenta); thick(row{i}, 0.022); untraced(row{i}); hidden(row{i}); tag(row{i}, sheetGrid); tag(row{i}, sheetSkin);
69
+ line3(col{i}, (p,-4,0.05), (p,4,0.05));
70
+ color(col{i}, cyan); thick(col{i}, 0.022); untraced(col{i}); hidden(col{i}); tag(col{i}, sheetGrid); tag(col{i}, sheetSkin);
71
+ }
72
+
73
+ // ---------------------------------------------------------------------------
74
+ // 3D: the complete sheet becomes the roof. Four pillars and a restrained glass
75
+ // volume make the hollow space below legible without a replacement cut.
76
+ // ---------------------------------------------------------------------------
77
+
78
+ cube3(room, (0,0,4), (8,8,8)); color(room, blue); hidden(room);
79
+ finish3(room, "material=glass shading=flat mesh=0.42 depth=0.34 shadow=0.16");
80
+
81
+ line3(pillar0, (-4,-4,0), (-4,-4,8)); color(pillar0, lime); thick(pillar0, 0.060); untraced(pillar0); hidden(pillar0); tag(pillar0, pillars);
82
+ line3(pillar1, (4,-4,0), (4,-4,8)); color(pillar1, lime); thick(pillar1, 0.060); untraced(pillar1); hidden(pillar1); tag(pillar1, pillars);
83
+ line3(pillar2, (-4,4,0), (-4,4,8)); color(pillar2, lime); thick(pillar2, 0.060); untraced(pillar2); hidden(pillar2); tag(pillar2, pillars);
84
+ line3(pillar3, (4,4,0), (4,4,8)); color(pillar3, lime); thick(pillar3, 0.060); untraced(pillar3); hidden(pillar3); tag(pillar3, pillars);
85
+
86
+ point3(nearCorner, (-4,-4,0), 0.18); color(nearCorner, gold); hidden(nearCorner);
87
+ point3(farCorner, (4,4,8), 0.18); color(farCorner, gold); hidden(farCorner);
88
+ text(nearLabel, (0,0), "NEAR · BOTTOM · LEFT"); size(nearLabel, 18); color(nearLabel, fg); hidden(nearLabel); pin3(nearLabel, nearCorner);
89
+ text(farLabel, (0,0), "FAR · TOP · RIGHT"); size(farLabel, 18); color(farLabel, fg); hidden(farLabel); pin3(farLabel, farCorner);
90
+
91
+ // ---------------------------------------------------------------------------
92
+ // ONE CONTINUOUS TIMELINE
93
+ // ---------------------------------------------------------------------------
94
+
95
+ step("the first point") {
96
+ seq {
97
+ par {
98
+ show(kicker, 0.35);
99
+ show(headline, 0.55);
100
+ show(phase, 0.40);
101
+ show(narration, 0.45);
102
+ show(principle, 0.45);
103
+ show(progress, 0.40);
104
+ show(seed, 0.45);
105
+ }
106
+ pulse(seed, 0.80);
107
+ wait(0.65);
108
+ }
109
+ }
110
+
111
+ step("the point extends") {
112
+ seq {
113
+ par {
114
+ say(phase, "1D · THE FIRST THREAD", 0.45, smooth);
115
+ say(narration, "The point stretches itself out and creates the first path.", 0.55, smooth);
116
+ say(principle, "Length appears — but the world is still trapped on one track.", 0.50, smooth);
117
+ say(progress, "POINT → LENGTH", 0.45, smooth);
118
+ show(leftThread, 0.15);
119
+ show(rightThread, 0.15);
120
+ grow3(leftThread, (-4,-4,0), 2.25, smooth);
121
+ grow3(rightThread, (4,-4,0), 2.25, smooth);
122
+ view3(wire, "front", 1.45, smooth, 1.70);
123
+ }
124
+ par {
125
+ fade(seed, 0.35);
126
+ show(leftEnd, 0.30); show(rightEnd, 0.30);
127
+ show(leftLabel, 0.35); show(rightLabel, 0.35);
128
+ show(leftChoice, 0.15); show(rightChoice, 0.15);
129
+ draw(leftChoice, 0.90, smooth); draw(rightChoice, 0.90, smooth);
130
+ }
131
+ wait(0.60);
132
+ }
133
+ }
134
+
135
+ step("left or right") {
136
+ seq {
137
+ say(narration, "Every journey has only two choices: backward or forward.", 0.50, smooth);
138
+ par { pulse(leftThread, 0.65); pulse(rightThread, 0.65); }
139
+ wait(0.80);
140
+ }
141
+ }
142
+
143
+ step("the sideways sweep") {
144
+ seq {
145
+ par {
146
+ fade(leftChoice, 0.35); fade(rightChoice, 0.35);
147
+ fade(leftLabel, 0.35); fade(rightLabel, 0.35);
148
+ say(phase, "2D · THE UNFOLDING SHEET", 0.45, smooth);
149
+ say(narration, "The wire shimmers, grabs its whole length, and moves sideways.", 0.55, smooth);
150
+ say(principle, "Its motion leaves a flat floor behind: width is born.", 0.50, smooth);
151
+ say(progress, "POINT → LENGTH → WIDTH", 0.45, smooth);
152
+ }
153
+ par {
154
+ show(baseEdge, 0.18);
155
+ shift3(wire, (0,8,0), 2.80, smooth);
156
+ to(sheet, opacity, 0.14, 2.80, smooth);
157
+ view3(sheet, "isometric", 2.10, smooth, 1.52);
158
+ stagger(0.075) { for i in 1..8 { show(row{i}, 0.12); show(col{i}, 0.12); } }
159
+ stagger(0.075) { for i in 1..8 { draw(row{i}, 0.70, smooth); draw(col{i}, 0.70, smooth); } }
160
+ }
161
+ wait(0.65);
162
+ }
163
+ }
164
+
165
+ step("the flat world") {
166
+ seq {
167
+ say(narration, "The old wire is now one edge of an entire plane.", 0.50, smooth);
168
+ say(principle, "Forward, backward, left, and right — still no above.", 0.45, smooth);
169
+ pulse(sheetGrid, 0.75);
170
+ wait(0.80);
171
+ }
172
+ }
173
+
174
+ step("the rising room") {
175
+ seq {
176
+ par {
177
+ say(phase, "3D · THE RISING ROOM", 0.45, smooth);
178
+ say(narration, "The complete sheet catches a breath and lifts straight upward.", 0.55, smooth);
179
+ say(principle, "The moving surface fills the hollow space below it.", 0.50, smooth);
180
+ say(progress, "POINT → LENGTH → WIDTH → HEIGHT", 0.50, smooth);
181
+ }
182
+ par {
183
+ shift3(sheetSkin, (0,0,8), 2.85, smooth);
184
+ to(room, opacity, 0.16, 2.85, smooth);
185
+ show(pillars, 0.15);
186
+ draw(pillars, 2.70, smooth);
187
+ view3(room, "isometric", 2.85, smooth, 1.52);
188
+ }
189
+ wait(0.65);
190
+ }
191
+ }
192
+
193
+ step("the space within") {
194
+ seq {
195
+ par {
196
+ show(nearCorner, 0.30); show(farCorner, 0.30);
197
+ show(nearLabel, 0.35); show(farLabel, 0.35);
198
+ show(takeaway, 0.45);
199
+ say(phase, "THE SPACE WITHIN", 0.45, smooth);
200
+ say(narration, "Depth rushes in. Near and far finally have meaning.", 0.55, smooth);
201
+ say(principle, "A dimension is an old world moving in a new perpendicular direction.", 0.55, smooth);
202
+ view3(room, "fit", 1.80, smooth, 1.62);
203
+ }
204
+ par {
205
+ pulse(sheetSkin, 0.85);
206
+ pulse(pillars, 0.85);
207
+ roll3(3, 1.80, smooth);
208
+ }
209
+ wait(2.20);
210
+ }
211
+ }
@@ -0,0 +1,172 @@
1
+ title("Disc Integration");
2
+ canvas(1000, 1000);
3
+ template("black");
4
+
5
+ // ================= HUD (2D always draws above the 3D world) =================
6
+ text(head, (cx, 60), "Disc Integration"); display(head); cursor(head);
7
+ text(t1, (cx, 122), "1. A region under a curve"); size(t1, 30); color(t1, gold); hidden(t1);
8
+ text(t2, (cx, 122), "2. Spin it - every strip sweeps a disc"); size(t2, 30); color(t2, cyan); hidden(t2);
9
+ text(t3, (cx, 122), "3. Stack the discs - integrate"); size(t3, 30); color(t3, magenta); hidden(t3);
10
+ text(cap, (cx, h - 42), ""); size(cap, 26);
11
+
12
+ // one living equation: it rewrites its way from the curve to the volume
13
+ equation(eqM, (cx, 190), `y=\sqrt{x}\quad(0\le x\le 4)`, 40); hidden(eqM);
14
+
15
+ // live volume readout
16
+ counter(vol, (w - 185, 300), 0, 2, "V = ", ""); hidden(vol);
17
+
18
+ // ================= act 1 cast: the flat 2D region =================
19
+ let gx = cx - 300;
20
+ let gy = 520;
21
+ let s2 = 140;
22
+
23
+ arrow(xax2, (gx - 30, gy), (gx + 4*s2 + 50, gy)); untraced(xax2); stroke(xax2, 3); tag(xax2, d2);
24
+ arrow(yax2, (gx, gy + 30), (gx, gy - 2.4*s2)); untraced(yax2); stroke(yax2, 3); tag(yax2, d2);
25
+ text(x0b, (gx, gy + 26), "0"); size(x0b, 22); color(x0b, dim); hidden(x0b); tag(x0b, d2);
26
+ text(x4b, (gx + 4*s2, gy + 26), "4"); size(x4b, 22); color(x4b, dim); hidden(x4b); tag(x4b, d2);
27
+
28
+ plot(rplot, (gx, gy), s2, s2, "sqrt(x)", (0, 4));
29
+ untraced(rplot); stroke(rplot, 4); gradient(rplot, blue, cyan, gold, 270); tag(rplot, d2);
30
+ dot(rider, (gx, gy), 7); color(rider, gold); glow(rider, 8); hidden(rider); tag(rider, d2);
31
+ area(ar2, rplot, 0, 0); color(ar2, cyan); opacity(ar2, 0.3); tag(ar2, d2);
32
+
33
+ // the one strip we will follow into 3D (x = 2.25 - remember it)
34
+ rect(strip, (gx + 2.25*s2, gy - sqrt(2.25)*s2/2), 66, sqrt(2.25)*s2);
35
+ color(strip, cyan); opacity(strip, 0.75); hidden(strip); tag(strip, d2);
36
+
37
+ // ================= act 2-3 cast: the 3D world (right-handed, Z-up) ==========
38
+ camera3((8.2, -9.5, 5.0), (0, 0, 1.9), 42);
39
+ axes3(ax3, (0, 0, 0), 4.6, 1); hidden(ax3);
40
+
41
+ // the spin axis, called out explicitly
42
+ line3(spinax, (0, 0, -0.3), (0, 0, 4.6)); thick(spinax, 0.015); color(spinax, dim); hidden(spinax);
43
+ text(zlab, (cx, cy), "spin axis"); size(zlab, 22); color(zlab, dim); hidden(zlab);
44
+ pin3(zlab, (0, 0, 4.55), (0, -16));
45
+
46
+ // the profile curve, stood upright: r = sqrt(z)
47
+ curve3(prof, "sqrt(t)", "0", "t", (0, 4)); untraced(prof); thick(prof, 0.04); color(prof, gold);
48
+
49
+ // ghost of the swept surface: bright wireframe revolve
50
+ revolve3(ghost, (0, 0, 0), "sqrt(t)", (0, 4), 64);
51
+ finish3(ghost, "wire=1"); color(ghost, teal); opacity(ghost, 0.4); untraced(ghost);
52
+
53
+ // 8 coarse discs (thin cylinders = many-sided prisms), declared low so they RISE
54
+ for i in 0..8 {
55
+ let zc = (i + 0.5)*0.5;
56
+ prism3(dc{i}, (0, 0, zc - 0.45), 48, sqrt(zc), 0.48);
57
+ color(dc{i}, cyan); opacity(dc{i}, 0.85); tag(dc{i}, coarse3);
58
+ }
59
+ hidden(coarse3);
60
+
61
+ // 20 fine discs
62
+ for i in 0..20 {
63
+ let zc = (i + 0.5)*0.2;
64
+ prism3(df{i}, (0, 0, zc - 0.3), 48, sqrt(zc), 0.19);
65
+ color(df{i}, cyan); opacity(df{i}, 0.9); tag(df{i}, fine3);
66
+ }
67
+ hidden(fine3);
68
+
69
+ // radius callout for the pulled-out disc (z = 2.25, r = 1.5, pulled to x + 3)
70
+ arrow3(rarr, (3.0, 0, 2.62), (4.5, 0, 2.62)); thick(rarr, 0.03); color(rarr, gold); untraced(rarr);
71
+ text(rlab, (cx, cy), `$r = \sqrt{z}$`); size(rlab, 26); color(rlab, gold); hidden(rlab);
72
+ pin3(rlab, (3.75, 0, 2.62), (0, -30));
73
+
74
+ // the exact solid, and the vase it will morph into ("any profile, same recipe")
75
+ revolve3(solid, (0, 0, 0), "sqrt(t)", (0, 4), 64);
76
+ finish3(solid, "shading=smooth depth=0.2 shadow=0.2"); color(solid, cyan); hidden(solid);
77
+ revolve3(vase, (0, 0, 0), "1.1+0.55*sin(1.7*t-0.9)", (0, 4), 64); hidden(vase);
78
+ morph3(solid, vase);
79
+
80
+ // ================= timeline =================
81
+
82
+ // ---- cold open
83
+ type(head, 1.1);
84
+
85
+ // ---- act 1: the flat region
86
+ cue(whoosh);
87
+ show(t1, 0.5);
88
+ par { draw(xax2, 0.6); draw(yax2, 0.6); show(x0b, 0.6); show(x4b, 0.6); }
89
+ show(rider, 0.2);
90
+ par { draw(rplot, 1.4); travel(rider, rplot, 1.4, smooth); }
91
+ fade(rider, 0.3);
92
+ show(eqM, 0.6);
93
+ say(cap, "Take the region under the curve...", 0.5);
94
+ to(ar2, x, 4, 1.6, smooth);
95
+ say(cap, "...and keep your eye on this one strip", 0.5);
96
+ show(strip, 0.4);
97
+ pulse(strip, 0.9);
98
+ wait(0.8);
99
+
100
+ // ---- the pivot: leave flatland
101
+ say(cap, "Now stand the region upright - and SPIN it around the axis", 0.5);
102
+ cue(whoosh);
103
+ fade(d2, 0.8);
104
+ show(t2, 0.5); fade(t1, 0.3);
105
+ par { show(ax3, 0.8); show(spinax, 0.8); show(zlab, 0.8); }
106
+ draw(prof, 1.2);
107
+ flash(spinax, magenta);
108
+
109
+ // THE MONEY SHOT: the profile curve physically sweeps 360 degrees
110
+ // around the axis while the wireframe surface traces on beneath it
111
+ par {
112
+ turn3(prof, (0, 0, 2), z, 360, 2.6, smooth);
113
+ draw(ghost, 2.6);
114
+ orbit3(-20, 18, 12.0, 2.6, smooth);
115
+ }
116
+ cue(tick);
117
+ rewrite(eqM, `dV \;=\; \pi\,\textcolor{cyan}{r^2}\,dz`, 0.9);
118
+ say(cap, "Every strip of area sweeps a thin DISC of volume", 0.5);
119
+
120
+ // ---- act 3: the disc stack rises
121
+ show(t3, 0.5); fade(t2, 0.3);
122
+ stagger(0.09) { for i in 0..8 { par { show(dc{i}, 0.3); shift3(dc{i}, (0, 0, 0.45), 0.4, out); } } }
123
+ wait(0.4);
124
+
125
+ // pull ONE disc out of the stack - the same strip from act 1
126
+ say(cap, "That same strip from before - now a cylinder: radius sqrt(z), thickness dz", 0.5);
127
+ cue(pop);
128
+ shift3(dc4, (3.0, 0, 0), 0.9, smooth);
129
+ par { draw(rarr, 0.5); show(rlab, 0.5); }
130
+ wait(1.2);
131
+ par { fade(rarr, 0.4); fade(rlab, 0.4); shift3(dc4, (-3.0, 0, 0), 0.9, smooth); }
132
+ cue(tick);
133
+ rewrite(eqM, `V \;\approx\; \sum_i \pi\,r(z_i)^2\,\Delta z`, 0.9);
134
+ wait(0.8);
135
+
136
+ // refine: thinner discs, camera drifts around the stack
137
+ say(cap, "Slice thinner - the stack hugs the surface", 0.5);
138
+ par {
139
+ fade(coarse3, 0.6);
140
+ stagger(0.04) { for i in 0..20 { show(df{i}, 0.22); } }
141
+ orbit3(35, 24, 11.0, 2.2, smooth);
142
+ }
143
+ cue(tick);
144
+ rewrite(eqM, `V \;=\; \pi\!\int_0^{4}(\sqrt{z}\,)^2\,dz \;=\; \pi\!\int_0^{4} z\,dz`, 0.9);
145
+ wait(0.8);
146
+
147
+ // the limit: discs dissolve into the exact smooth solid, the number climbs
148
+ say(cap, "In the limit: the exact solid of revolution", 0.5);
149
+ show(vol, 0.3);
150
+ par { fade(fine3, 1.2); fade(ghost, 1.2); show(solid, 1.4); to(vol, value, 25.13, 2.2); }
151
+ flash(vol, gold);
152
+ cue(tick);
153
+ rewrite(eqM, `V \;=\; \pi\cdot\tfrac{16}{2} \;=\; 8\pi \;\approx\; 25.13`, 0.9);
154
+ par { orbit3(90, 20, 10.5, 2.6, smooth); }
155
+ wait(0.6);
156
+
157
+ // ---- flourish: ANY profile, same recipe - the solid becomes a vase
158
+ say(cap, "Any profile, same recipe - just change r(z)", 0.5);
159
+ cue(whoosh);
160
+ par {
161
+ to(solid, morph, 1, 2.6, smooth);
162
+ fade(vol, 0.8);
163
+ rewrite(eqM, `V \;=\; \pi\int_a^b r(z)^2\,dz`, 1.2);
164
+ orbit3(160, 16, 10.5, 2.6, smooth);
165
+ }
166
+ cue(chime);
167
+ par {
168
+ breathe(eqM, 3, 0.05, 0, 6);
169
+ orbit3(200, 14, 11.0, 6, smooth);
170
+ }
171
+ say(cap, "Area swept in a circle - volume, one disc at a time", 0.6);
172
+ wait(2.0);
@@ -0,0 +1,9 @@
1
+ // double-incline.manic — two blocks on a wedge's two slopes, tied over a pulley
2
+ // at the apex. `doubleincline(id,[center],[angle1],[angle2],[m1],[m2],[unit])`;
3
+ // the right slope is rough. PRE-SIMULATED (RK4); `run(id)` plays it.
4
+ title("Double incline — connected blocks on two slopes");
5
+ canvas("16:9");
6
+ text(hdr, (cx, 42), "Two slopes, one rope over the apex — which way does it slide?"); size(hdr, 22); color(hdr, cyan); bold(hdr); display(hdr);
7
+ doubleincline(di, (cx, 520), 50, 30, 12, 70);
8
+ text(cap, (cx, h - 30), "M₂ (70 kg) on the gentle rough slope beats M₁ (12 kg) on the steep smooth one"); size(cap, 15); color(cap, dim); display(cap);
9
+ run(di, 5);