@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.
- package/CONTRIBUTING.md +40 -0
- package/README.md +155 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/abap-CRCWOmpq.js +1 -0
- package/dist/client/assets/apex-DnsZk_dE.js +1 -0
- package/dist/client/assets/azcli-1IWB1ccx.js +1 -0
- package/dist/client/assets/bat-DPkNLes8.js +1 -0
- package/dist/client/assets/bicep-Corcdgou.js +2 -0
- package/dist/client/assets/cameligo-CGrWLZr3.js +1 -0
- package/dist/client/assets/clojure-D9WOWImG.js +1 -0
- package/dist/client/assets/codicon-CgENjH2v.ttf +0 -0
- package/dist/client/assets/coffee-B7EJu28W.js +1 -0
- package/dist/client/assets/cpp-SEyurbux.js +1 -0
- package/dist/client/assets/csharp-BoL64M5l.js +1 -0
- package/dist/client/assets/csp-C46ZqvIl.js +1 -0
- package/dist/client/assets/css-DQU6DXDx.js +3 -0
- package/dist/client/assets/cssMode-CtRONlr8.js +4 -0
- package/dist/client/assets/cypher-D84EuPTj.js +1 -0
- package/dist/client/assets/dart-D8lhlL1r.js +1 -0
- package/dist/client/assets/dockerfile-DLk6rpji.js +1 -0
- package/dist/client/assets/ecl-BO6FnfXk.js +1 -0
- package/dist/client/assets/editor.worker-CZyr7Ur9.js +26 -0
- package/dist/client/assets/elixir-BRjLKONM.js +1 -0
- package/dist/client/assets/flow9-Cac8vKd7.js +1 -0
- package/dist/client/assets/freemarker2-BTSNJUl8.js +3 -0
- package/dist/client/assets/fsharp-fd1GTHhf.js +1 -0
- package/dist/client/assets/go-O9LJTZXk.js +1 -0
- package/dist/client/assets/graphql-LQdxqEYJ.js +1 -0
- package/dist/client/assets/handlebars-qkUBjVg6.js +1 -0
- package/dist/client/assets/hcl-DxDQ3s82.js +1 -0
- package/dist/client/assets/html-pguqE00h.js +1 -0
- package/dist/client/assets/htmlMode-BCCLuk2F.js +4 -0
- package/dist/client/assets/index-BFrMLHHu.css +1 -0
- package/dist/client/assets/index-CdBC-xgi.js +1250 -0
- package/dist/client/assets/ini-BvajGCUy.js +1 -0
- package/dist/client/assets/java-SYsfObOQ.js +1 -0
- package/dist/client/assets/javascript-ciDUXdez.js +1 -0
- package/dist/client/assets/jsonMode-BmkXC0tI.js +10 -0
- package/dist/client/assets/julia-DQXNmw_w.js +1 -0
- package/dist/client/assets/kotlin-qQ0MG-9I.js +1 -0
- package/dist/client/assets/less-GGFNNJHn.js +2 -0
- package/dist/client/assets/lexon-Canl7DCW.js +1 -0
- package/dist/client/assets/liquid-CwE4UIwf.js +1 -0
- package/dist/client/assets/lua-D28Ae8-K.js +1 -0
- package/dist/client/assets/m3-DPitgjJI.js +1 -0
- package/dist/client/assets/markdown-B811l8j2.js +1 -0
- package/dist/client/assets/mdx-K_9Emnjy.js +1 -0
- package/dist/client/assets/mips-CdjsipkG.js +1 -0
- package/dist/client/assets/msdax-CYqgjx_P.js +1 -0
- package/dist/client/assets/mysql-BHd6q0vd.js +1 -0
- package/dist/client/assets/objective-c-B1aVtJYH.js +1 -0
- package/dist/client/assets/pascal-BhNW15KB.js +1 -0
- package/dist/client/assets/pascaligo-5jv8CcQD.js +1 -0
- package/dist/client/assets/perl-DlYyT36c.js +1 -0
- package/dist/client/assets/pgsql-Dy0bjov7.js +1 -0
- package/dist/client/assets/php-120yhfDK.js +1 -0
- package/dist/client/assets/pla-CjnFlu4u.js +1 -0
- package/dist/client/assets/postiats-CQpG440k.js +1 -0
- package/dist/client/assets/powerquery-DdJtto1Z.js +1 -0
- package/dist/client/assets/powershell-Bu_VLpJB.js +1 -0
- package/dist/client/assets/protobuf-IBS6jZEB.js +2 -0
- package/dist/client/assets/pug-kFxLfcjb.js +1 -0
- package/dist/client/assets/python-BzIc0EVe.js +1 -0
- package/dist/client/assets/qsharp-q7JyzKFN.js +1 -0
- package/dist/client/assets/r-BIFz-_sK.js +1 -0
- package/dist/client/assets/razor-lXZl6dtu.js +1 -0
- package/dist/client/assets/redis-CHOsPHWR.js +1 -0
- package/dist/client/assets/redshift-CBifECDb.js +1 -0
- package/dist/client/assets/restructuredtext-CghPJEOS.js +1 -0
- package/dist/client/assets/ruby-CYWGW-b1.js +1 -0
- package/dist/client/assets/rust-DMDD0SHb.js +1 -0
- package/dist/client/assets/sb-BYAiYHFx.js +1 -0
- package/dist/client/assets/scala-Bqvq8jcR.js +1 -0
- package/dist/client/assets/scheme-Dhb-2j9p.js +1 -0
- package/dist/client/assets/scss-CTwUZ5N7.js +3 -0
- package/dist/client/assets/shell-CsDZo4DB.js +1 -0
- package/dist/client/assets/solidity-CME5AdoB.js +1 -0
- package/dist/client/assets/sophia-RYC1BQQz.js +1 -0
- package/dist/client/assets/sparql-KEyrF7De.js +1 -0
- package/dist/client/assets/sql-BdTr02Mf.js +1 -0
- package/dist/client/assets/st-C7iG7M4S.js +1 -0
- package/dist/client/assets/swift-D7IUmUK8.js +1 -0
- package/dist/client/assets/systemverilog-DgMryOEJ.js +1 -0
- package/dist/client/assets/tcl-PloMZuKG.js +1 -0
- package/dist/client/assets/tsMode-BAXmgo_t.js +11 -0
- package/dist/client/assets/twig-BfRIq3la.js +1 -0
- package/dist/client/assets/typescript-Cdf8nS1n.js +1 -0
- package/dist/client/assets/typespec-CzxlYoT_.js +1 -0
- package/dist/client/assets/vb-BwAE3J76.js +1 -0
- package/dist/client/assets/wgsl-B_1kOXbF.js +298 -0
- package/dist/client/assets/xml-DGyPgYnj.js +1 -0
- package/dist/client/assets/yaml-Dqv3HtbL.js +1 -0
- package/dist/client/index.html +14 -0
- package/dist/client/manic-logo.png +0 -0
- package/dist/client/wasm/manic_lang.d.ts +74 -0
- package/dist/client/wasm/manic_lang.js +302 -0
- package/dist/client/wasm/manic_lang_bg.wasm +0 -0
- package/dist/client/wasm/manic_lang_bg.wasm.d.ts +13 -0
- package/dist/server/agentProtocol.d.ts +131 -0
- package/dist/server/agentProtocol.js +21 -0
- package/dist/server/agentProtocol.js.map +1 -0
- package/dist/server/agentRuns.d.ts +46 -0
- package/dist/server/agentRuns.js +138 -0
- package/dist/server/agentRuns.js.map +1 -0
- package/dist/server/agentThreads.d.ts +20 -0
- package/dist/server/agentThreads.js +205 -0
- package/dist/server/agentThreads.js.map +1 -0
- package/dist/server/aiSecrets.d.ts +21 -0
- package/dist/server/aiSecrets.js +68 -0
- package/dist/server/aiSecrets.js.map +1 -0
- package/dist/server/app.d.ts +34 -0
- package/dist/server/app.js +804 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/assets.d.ts +34 -0
- package/dist/server/assets.js +659 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/candidateFix.d.ts +28 -0
- package/dist/server/candidateFix.js +111 -0
- package/dist/server/candidateFix.js.map +1 -0
- package/dist/server/cli.d.ts +2 -0
- package/dist/server/cli.js +118 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/diagnostics.d.ts +13 -0
- package/dist/server/diagnostics.js +73 -0
- package/dist/server/diagnostics.js.map +1 -0
- package/dist/server/engineCheck.d.ts +7 -0
- package/dist/server/engineCheck.js +60 -0
- package/dist/server/engineCheck.js.map +1 -0
- package/dist/server/engineInstall.d.ts +34 -0
- package/dist/server/engineInstall.js +228 -0
- package/dist/server/engineInstall.js.map +1 -0
- package/dist/server/enginePaths.d.ts +3 -0
- package/dist/server/enginePaths.js +76 -0
- package/dist/server/enginePaths.js.map +1 -0
- package/dist/server/folderPicker.d.ts +1 -0
- package/dist/server/folderPicker.js +54 -0
- package/dist/server/folderPicker.js.map +1 -0
- package/dist/server/manicAgent.d.ts +75 -0
- package/dist/server/manicAgent.js +476 -0
- package/dist/server/manicAgent.js.map +1 -0
- package/dist/server/manicEnv.d.ts +18 -0
- package/dist/server/manicEnv.js +64 -0
- package/dist/server/manicEnv.js.map +1 -0
- package/dist/server/promptStore.d.ts +11 -0
- package/dist/server/promptStore.js +85 -0
- package/dist/server/promptStore.js.map +1 -0
- package/dist/server/renderJobs.d.ts +54 -0
- package/dist/server/renderJobs.js +290 -0
- package/dist/server/renderJobs.js.map +1 -0
- package/dist/server/settings.d.ts +40 -0
- package/dist/server/settings.js +262 -0
- package/dist/server/settings.js.map +1 -0
- package/dist/server/smartDraw.d.ts +7 -0
- package/dist/server/smartDraw.js +88 -0
- package/dist/server/smartDraw.js.map +1 -0
- package/dist/server/workspace.d.ts +27 -0
- package/dist/server/workspace.js +172 -0
- package/dist/server/workspace.js.map +1 -0
- package/examples/.manic-output/40b6f3b9-7638-4c0e-bb4f-570d45d1b225/job.json +26 -0
- package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/job.json +26 -0
- package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/markers.json +13 -0
- package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/out.mp4 +0 -0
- package/examples/.manic-workbench-threads/thread_3ce7448a13f64f9e887d1bc8106a97a8.json +45 -0
- package/examples/.manic-workbench-threads/thread_d494cda29249477591056234719e4a3a.json +21 -0
- package/examples/.manic-workbench-threads/thread_e98ebdc225184ea5b8ddda8b44541f63.json +29 -0
- package/examples/README.md +35 -0
- package/examples/a-story-1.manic +222 -0
- package/examples/a-story.manic +100 -0
- package/examples/achromat-cinematic.manic +105 -0
- package/examples/achromat.manic +32 -0
- package/examples/aes-decrypt.manic +359 -0
- package/examples/aes-encrypt.manic +359 -0
- package/examples/aes-round.manic +70 -0
- package/examples/aes-story.manic +622 -0
- package/examples/ai-story.manic +118 -0
- package/examples/analysis.manic +53 -0
- package/examples/archimedes_pi.manic +89 -0
- package/examples/area_under_curve.manic +131 -0
- package/examples/art-rakkan.manic +69 -0
- package/examples/aspheric-lens.manic +32 -0
- package/examples/astronomical-watch.manic +96 -0
- package/examples/asymptote-randomwalk3-reference.manic +58 -0
- package/examples/asymptote-tiling-reference.manic +65 -0
- package/examples/aws-clustered-web-services.manic +186 -0
- package/examples/aws-event-processing-clusters-poc.manic +97 -0
- package/examples/aws-three-tier-web-application.manic +134 -0
- package/examples/band.manic +43 -0
- package/examples/banner.manic +37 -0
- package/examples/bayes.manic +27 -0
- package/examples/bellcurve.manic +41 -0
- package/examples/bfs_dfs.manic +35 -0
- package/examples/block-tackle.manic +26 -0
- package/examples/bloom-scope.manic +172 -0
- package/examples/boolean.manic +46 -0
- package/examples/boxplot-wave.manic +93 -0
- package/examples/boxplot.manic +43 -0
- package/examples/brace.manic +46 -0
- package/examples/brachistochrone-annotated.manic +51 -0
- package/examples/brachistochrone.manic +27 -0
- package/examples/bubble_sort.manic +41 -0
- package/examples/bullet-block-annotated.manic +48 -0
- package/examples/bullet-block.manic +11 -0
- package/examples/bullet-impact.manic +65 -0
- package/examples/bungee.manic +9 -0
- package/examples/c4-internet-banking-components.manic +33 -0
- package/examples/c4-internet-banking-containers.manic +29 -0
- package/examples/c4-internet-banking.manic +26 -0
- package/examples/c4-story.manic +171 -0
- package/examples/c4-test.manic +52 -0
- package/examples/c4-zoom.manic +69 -0
- package/examples/calculus-demo.manic +129 -0
- package/examples/calculus-one.manic +288 -0
- package/examples/captions.manic +31 -0
- package/examples/car-suspension-annotated.manic +57 -0
- package/examples/car-suspension.manic +8 -0
- package/examples/cart-pendulum.manic +11 -0
- package/examples/charts-bar-line.manic +26 -0
- package/examples/charts-column-race.manic +19 -0
- package/examples/charts-gdp-race.manic +43 -0
- package/examples/charts-german-elections.manic +28 -0
- package/examples/charts-line-race.manic +21 -0
- package/examples/circle-in-three.manic +156 -0
- package/examples/circle-thirds-no-triangle.manic +161 -0
- package/examples/clip-window.manic +34 -0
- package/examples/cloud-feathers.manic +50 -0
- package/examples/cloud-jellyfish-v2.manic +87 -0
- package/examples/cloud-jellyfish.manic +48 -0
- package/examples/cloud-kaleidoscope.manic +48 -0
- package/examples/cloud-koi.manic +51 -0
- package/examples/cloud-lissajous.manic +23 -0
- package/examples/cloud-medusae.manic +46 -0
- package/examples/cloud-phoenix.manic +49 -0
- package/examples/cloud-plumes.manic +47 -0
- package/examples/cloud-pottery.manic +104 -0
- package/examples/cloud-shells.manic +50 -0
- package/examples/cloud-starfield.manic +23 -0
- package/examples/cloud-wave-lattice.manic +23 -0
- package/examples/cloud-word.manic +31 -0
- package/examples/cloud3-ripple.manic +53 -0
- package/examples/cloud3-sphere.manic +26 -0
- package/examples/clt.manic +35 -0
- package/examples/collide-blocks-annotated.manic +45 -0
- package/examples/collide-blocks.manic +11 -0
- package/examples/compare-pendulum.manic +11 -0
- package/examples/complex-flowchart.manic +196 -0
- package/examples/compound-pulley.manic +25 -0
- package/examples/conics.manic +46 -0
- package/examples/coordinates.manic +52 -0
- package/examples/correlation.manic +35 -0
- package/examples/covariance.manic +30 -0
- package/examples/creator-affine-fern-growth.manic +72 -0
- package/examples/creator-bowl-to-saddle.manic +86 -0
- package/examples/creator-branch-counting-tree3.manic +77 -0
- package/examples/creator-chaos-game-fern.manic +72 -0
- package/examples/creator-circle-inversion-chain.manic +61 -0
- package/examples/creator-convex-hull-depth.manic +59 -0
- package/examples/creator-coordinate-worlds.manic +182 -0
- package/examples/creator-ellipse-reflection-property.manic +59 -0
- package/examples/creator-free-kicks.manic +261 -0
- package/examples/creator-geometry-language-showcase.manic +259 -0
- package/examples/creator-geometry-morph-promo.manic +151 -0
- package/examples/creator-heightmap-world.manic +130 -0
- package/examples/creator-hilbert3-spatial-index.manic +203 -0
- package/examples/creator-how-rocket-launch-works.manic +192 -0
- package/examples/creator-implicit-surface-parameterized.manic +51 -0
- package/examples/creator-incenter-dissection.manic +56 -0
- package/examples/creator-lattice-paths.manic +118 -0
- package/examples/creator-line-inversion.manic +49 -0
- package/examples/creator-lsystem-fractal-curve.manic +121 -0
- package/examples/creator-mandelbrot-escape-test.manic +58 -0
- package/examples/creator-monty-hall.manic +104 -0
- package/examples/creator-noise-story.manic +123 -0
- package/examples/creator-one-tile-pattern-story.manic +169 -0
- package/examples/creator-pathfinding.manic +82 -0
- package/examples/creator-point-to-plane-distance.manic +167 -0
- package/examples/creator-race-quiz.manic +76 -0
- package/examples/creator-randomwalk3-diffusion.manic +72 -0
- package/examples/creator-reflected-ellipse.manic +48 -0
- package/examples/creator-rule90-sierpinski.manic +64 -0
- package/examples/creator-three-shadows-of-a-curve.manic +48 -0
- package/examples/creator-trigonometry-one-angle.manic +307 -0
- package/examples/creator-v2-latex-algebra.manic +29 -0
- package/examples/creator-v2-latex-calculus.manic +37 -0
- package/examples/creator-v2-latex-physics.manic +29 -0
- package/examples/creator-v2-olympiad-geometry.manic +92 -0
- package/examples/creator-v2-options-socials.manic +21 -0
- package/examples/creator-v2-timers.manic +25 -0
- package/examples/creator-v2-timing-square.manic +25 -0
- package/examples/creator-v2-timing.manic +34 -0
- package/examples/creator-v2.manic +36 -0
- package/examples/creator-why-rockets-use-stages.manic +198 -0
- package/examples/creator-wrap-real-line.manic +51 -0
- package/examples/cubic-graphs.manic +432 -0
- package/examples/curve-features.manic +41 -0
- package/examples/definedmotion-fourier-gallery.manic +171 -0
- package/examples/derivative-of-ln-x.manic +194 -0
- package/examples/diagonalise.manic +56 -0
- package/examples/dijkstra.manic +29 -0
- package/examples/dimensions-unfold.manic +211 -0
- package/examples/disc-integration.manic +172 -0
- package/examples/double-incline.manic +9 -0
- package/examples/double-integral3.manic +43 -0
- package/examples/double-pendulum.manic +35 -0
- package/examples/double-spring.manic +9 -0
- package/examples/drop-mass.manic +25 -0
- package/examples/eigen3.manic +34 -0
- package/examples/equal_cuts.manic +44 -0
- package/examples/equation.manic +16 -0
- package/examples/equilateral.manic +57 -0
- package/examples/euler_line.manic +51 -0
- package/examples/exponential-shells.manic +188 -0
- package/examples/extrude3.manic +37 -0
- package/examples/factorial-flowchart.manic +69 -0
- package/examples/fibonacci-sphere.manic +57 -0
- package/examples/flow-lorenz.manic +47 -0
- package/examples/fourier-series-live-wave.manic +114 -0
- package/examples/fourier-square-wave-live.manic +114 -0
- package/examples/fractal_tree.manic +39 -0
- package/examples/frame3-grid-policies.manic +48 -0
- package/examples/ftc.manic +54 -0
- package/examples/function_graph.manic +54 -0
- package/examples/galton-board-process.manic +150 -0
- package/examples/gcp-clustered-web-services.manic +186 -0
- package/examples/gcp-message-collecting.manic +139 -0
- package/examples/geo-pythagoras-short.manic +119 -0
- package/examples/glsl-boxgrid.manic +105 -0
- package/examples/glsl-parameter.manic +30 -0
- package/examples/glsl-raymarch.manic +59 -0
- package/examples/glsl-shapes.manic +122 -0
- package/examples/gradient-descent-field.manic +116 -0
- package/examples/gradient-fastest-descent-shorts.manic +153 -0
- package/examples/gradient-fastest-descent.manic +125 -0
- package/examples/gradient-pendulum-shorts.manic +117 -0
- package/examples/gradient.manic +74 -0
- package/examples/graph.manic +45 -0
- package/examples/graph_moving.manic +67 -0
- package/examples/grid-astar.manic +15 -0
- package/examples/grid-life-soup.manic +31 -0
- package/examples/grid-life-zoo.manic +46 -0
- package/examples/grid-life.manic +19 -0
- package/examples/grid-wfc.manic +13 -0
- package/examples/growing-fractal-tree3.manic +58 -0
- package/examples/gun-shot.manic +82 -0
- package/examples/hashmap.manic +38 -0
- package/examples/heightmap3-world.manic +64 -0
- package/examples/heightmap3.manic +23 -0
- package/examples/hilbert-curve3-space-filling.manic +117 -0
- package/examples/hill_run.manic +71 -0
- package/examples/histogram.manic +43 -0
- package/examples/hotdog-taco.manic +147 -0
- package/examples/hue_wave.manic +35 -0
- package/examples/hypothesis.manic +32 -0
- package/examples/image.manic +29 -0
- package/examples/incircle_tangents.manic +64 -0
- package/examples/incline-bumper.manic +11 -0
- package/examples/incline-pulley.manic +11 -0
- package/examples/incline-showcase.manic +55 -0
- package/examples/inline-math.manic +16 -0
- package/examples/inscribed-angle-short.manic +56 -0
- package/examples/integral-sqrt-tanx.manic +255 -0
- package/examples/integrals.manic +274 -0
- package/examples/inverse-derivatives.manic +94 -0
- package/examples/k8s-cluster-components.manic +82 -0
- package/examples/k8s-stateful-architecture.manic +134 -0
- package/examples/k8s-three-tier.manic +146 -0
- package/examples/kapitza.manic +11 -0
- package/examples/latex-disintegration.manic +123 -0
- package/examples/lens-paper.manic +36 -0
- package/examples/lens-prescription.manic +33 -0
- package/examples/lens-system.manic +34 -0
- package/examples/lens.manic +31 -0
- package/examples/limit-infinity.manic +30 -0
- package/examples/limit.manic +33 -0
- package/examples/linear-algebra-3d.manic +50 -0
- package/examples/linear-algebra.manic +115 -0
- package/examples/linear-map.manic +39 -0
- package/examples/linear-map3.manic +33 -0
- package/examples/linear-system.manic +99 -0
- package/examples/linear_transform.manic +43 -0
- package/examples/linked_list.manic +38 -0
- package/examples/lln.manic +31 -0
- package/examples/loop-cinematic.manic +41 -0
- package/examples/loop-track.manic +11 -0
- package/examples/lorenz-attractor.manic +55 -0
- package/examples/lorenz-shells.manic +43 -0
- package/examples/lost-in-patterns.manic +149 -0
- package/examples/lsystem-asymptote-curves.manic +81 -0
- package/examples/manic-ml-activation-focus.manic +133 -0
- package/examples/manic-ml-cnn-edge-story.manic +102 -0
- package/examples/manic-ml-forward-pass.manic +93 -0
- package/examples/manic-ml-learning-step.manic +116 -0
- package/examples/manic-ml-logits-sampling.manic +112 -0
- package/examples/manic-ml-scalar-to-tensor.manic +143 -0
- package/examples/manic-ml-token-embedding.manic +110 -0
- package/examples/manic-ml-transformer-attention.manic +102 -0
- package/examples/manic-ml-transformer-block.manic +116 -0
- package/examples/manic-promo.manic +64 -0
- package/examples/map-attractor.manic +45 -0
- package/examples/mask-lens.manic +33 -0
- package/examples/matrix.manic +37 -0
- package/examples/matrix3.manic +101 -0
- package/examples/matrix_addition.manic +66 -0
- package/examples/matrix_addition_plane.manic +91 -0
- package/examples/maxwell-boltzmann-effusion-v2.manic +142 -0
- package/examples/maxwell-boltzmann-process.manic +86 -0
- package/examples/microservices-platform.manic +140 -0
- package/examples/molecule.manic +8 -0
- package/examples/morph-icons.manic +29 -0
- package/examples/morph.manic +29 -0
- package/examples/morph3.manic +49 -0
- package/examples/motion-flow-foundation.manic +148 -0
- package/examples/motion-graphics-v2-story.manic +189 -0
- package/examples/motion-graphics-v2.manic +81 -0
- package/examples/motion-graphics.manic +81 -0
- package/examples/multivariable3.manic +26 -0
- package/examples/mystory.manic +9 -0
- package/examples/newton.manic +39 -0
- package/examples/newtons-cradle.manic +10 -0
- package/examples/nine_point.manic +59 -0
- package/examples/noise-terrain.manic +16 -0
- package/examples/off-axis.manic +32 -0
- package/examples/onprem-advanced-web-service-v2.manic +196 -0
- package/examples/onprem-advanced-web-service.manic +175 -0
- package/examples/orthocenter.manic +63 -0
- package/examples/param3.manic +43 -0
- package/examples/parameter-journeys.manic +154 -0
- package/examples/parameterized-field-advection.manic +57 -0
- package/examples/parameterized-generated-families3.manic +83 -0
- package/examples/particles-flow.manic +61 -0
- package/examples/pascal-triangle.manic +92 -0
- package/examples/pendulum-annotated.manic +72 -0
- package/examples/pendulum-damped.manic +35 -0
- package/examples/pendulum.manic +38 -0
- package/examples/perfect-reel.manic +43 -0
- package/examples/pie.manic +41 -0
- package/examples/pieday.manic +113 -0
- package/examples/piston.manic +7 -0
- package/examples/popkorn-field.manic +38 -0
- package/examples/prism-cinematic.manic +36 -0
- package/examples/prism.manic +32 -0
- package/examples/probability.manic +57 -0
- package/examples/process-branching-dispatch.manic +71 -0
- package/examples/process-stream-observe.manic +54 -0
- package/examples/projection.manic +57 -0
- package/examples/prompt-test-10.manic +257 -0
- package/examples/prompt-test-11.manic +168 -0
- package/examples/prompt-test-12.manic +177 -0
- package/examples/prompt-test-13.manic +228 -0
- package/examples/prompt-test-14.manic +319 -0
- package/examples/prompt-test-15.manic +325 -0
- package/examples/prompt-test-16.manic +252 -0
- package/examples/prompt-test-2.manic +239 -0
- package/examples/prompt-test-3.manic +336 -0
- package/examples/prompt-test-4.manic +195 -0
- package/examples/prompt-test-5.manic +223 -0
- package/examples/prompt-test-6.manic +222 -0
- package/examples/prompt-test-7.manic +156 -0
- package/examples/prompt-test-8.manic +266 -0
- package/examples/prompt-test-9.manic +171 -0
- package/examples/prompt-test.manic +158 -0
- package/examples/pulley-annotated.manic +54 -0
- package/examples/pulley-paper.manic +52 -0
- package/examples/pulley-scale.manic +23 -0
- package/examples/pulley.manic +24 -0
- package/examples/quadratic-formula-continuity.manic +110 -0
- package/examples/quiz-euler.manic +52 -0
- package/examples/quiz-geometry-2.manic +107 -0
- package/examples/quiz-geometry.manic +108 -0
- package/examples/quiz-skins.manic +22 -0
- package/examples/raft-cm.manic +24 -0
- package/examples/ramp.manic +25 -0
- package/examples/ray-fan.manic +27 -0
- package/examples/raymarch-alpha.manic +39 -0
- package/examples/raymarch-boxgrid.manic +47 -0
- package/examples/raymarch-docker-latency.manic +74 -0
- package/examples/raymarch-metaballs.manic +37 -0
- package/examples/raymarch-sculpture.manic +39 -0
- package/examples/raymarch-shapes3.manic +31 -0
- package/examples/reactive-integral.manic +172 -0
- package/examples/reactive-math-journey.manic +185 -0
- package/examples/reactive-math-notation.manic +150 -0
- package/examples/reactive-multiformat.manic +130 -0
- package/examples/reactive-world.manic +111 -0
- package/examples/refraction-paper.manic +40 -0
- package/examples/refraction.manic +32 -0
- package/examples/resonance.manic +10 -0
- package/examples/rewrite-exponential-cubic.manic +141 -0
- package/examples/rewrite-integration.manic +199 -0
- package/examples/riemann_rainbow.manic +61 -0
- package/examples/riemann_readout.manic +61 -0
- package/examples/robot-arm.manic +25 -0
- package/examples/rref.manic +48 -0
- package/examples/second-law-thermodynamics.manic +385 -0
- package/examples/series-parallel-springs.manic +8 -0
- package/examples/serverless-processing.manic +145 -0
- package/examples/shader-cellular.manic +35 -0
- package/examples/shader-fractal.manic +45 -0
- package/examples/shader-fx.manic +34 -0
- package/examples/shader-glitch-grid.manic +55 -0
- package/examples/shader-parameter.manic +25 -0
- package/examples/shader-patterns.manic +37 -0
- package/examples/shader-plasma.manic +43 -0
- package/examples/shader-shapes-dsl.manic +46 -0
- package/examples/shader-shapes.manic +37 -0
- package/examples/shader-warp.manic +22 -0
- package/examples/shapes-howto.manic +411 -0
- package/examples/sine_wave.manic +42 -0
- package/examples/skew.manic +40 -0
- package/examples/smoke.rs +57 -0
- package/examples/solids3.manic +22 -0
- package/examples/some-story.manic +299 -0
- package/examples/spinning-cylinder-flow.manic +87 -0
- package/examples/spline.manic +21 -0
- package/examples/spot-diagram.manic +32 -0
- package/examples/spring-annotated.manic +60 -0
- package/examples/spring-chain.manic +11 -0
- package/examples/spring-damped.manic +33 -0
- package/examples/spring-incline.manic +10 -0
- package/examples/spring-paper.manic +46 -0
- package/examples/spring-pendulum.manic +14 -0
- package/examples/spring.manic +33 -0
- package/examples/sqrt-tanx.manic +217 -0
- package/examples/ssl-handshake-sdf.manic +116 -0
- package/examples/stack_queue.manic +53 -0
- package/examples/statistics.manic +60 -0
- package/examples/story-addressable-asset-cues.manic +71 -0
- package/examples/story-dependent-chain-history.manic +56 -0
- package/examples/story-living-dependency-cloud.manic +50 -0
- package/examples/story-time-varying-field3.manic +57 -0
- package/examples/story.manic +4 -0
- package/examples/string-art-breath.manic +70 -0
- package/examples/string-wave.manic +10 -0
- package/examples/summary.manic +48 -0
- package/examples/svg-howto.manic +172 -0
- package/examples/svg-import.manic +18 -0
- package/examples/systems-architecture-poc.manic +92 -0
- package/examples/systems-arrow-patterns.manic +151 -0
- package/examples/systems-foundation.manic +71 -0
- package/examples/systems-rabbitmq-consumers.manic +118 -0
- package/examples/table.manic +39 -0
- package/examples/table_braces.manic +54 -0
- package/examples/tangent-length-short.manic +57 -0
- package/examples/tangent.manic +29 -0
- package/examples/tangents.manic +54 -0
- package/examples/taylor.manic +44 -0
- package/examples/terminal_boot.manic +40 -0
- package/examples/test.manic +61 -0
- package/examples/text-guide.manic +304 -0
- package/examples/textbook-coordinate-worlds.manic +129 -0
- package/examples/textbook-doubly-list.manic +33 -0
- package/examples/textbook-function-to-solid.manic +126 -0
- package/examples/textbook-geometry-dimension-reduction.manic +129 -0
- package/examples/textbook-incline-fbd.manic +43 -0
- package/examples/textbook-length-area-volume.manic +137 -0
- package/examples/textbook-matrix-inverses.manic +172 -0
- package/examples/textbook-pulley.manic +35 -0
- package/examples/textbook-statistical-dimensions.manic +151 -0
- package/examples/textbook-tension.manic +39 -0
- package/examples/textbook-watermelon-sections.manic +216 -0
- package/examples/thales-semicircle-short.manic +53 -0
- package/examples/three-d-v2-lab.manic +83 -0
- package/examples/three-d-v2-story.manic +106 -0
- package/examples/three-d-v2.manic +69 -0
- package/examples/three_d.manic +39 -0
- package/examples/timing-v2-scene.manic +47 -0
- package/examples/trajectory.manic +28 -0
- package/examples/transform_copy.manic +35 -0
- package/examples/transforms.manic +54 -0
- package/examples/trapped-light-dimensions.manic +226 -0
- package/examples/tree-of-leaves.manic +215 -0
- package/examples/triangle.manic +68 -0
- package/examples/two_person_walk.manic +296 -0
- package/examples/two_pointer.manic +32 -0
- package/examples/type-to-sdf.manic +139 -0
- package/examples/typewriter.manic +28 -0
- package/examples/vector_field.manic +32 -0
- package/examples/vertical-spring.manic +10 -0
- package/examples/volume3.manic +21 -0
- package/examples/volumes-solid-of-revolution.manic +111 -0
- package/examples/walk.manic +154 -0
- package/examples/wheel-duo.manic +91 -0
- package/examples/wheel-radial.manic +78 -0
- package/examples/wheel-square.manic +83 -0
- package/examples/wireframe-spheres.manic +37 -0
- package/examples/zeroth-law-thermodynamics.manic +269 -0
- package/package.json +59 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// cloud-medusae — another @yuruyurau art-tweet in ONE `cloud`: 30,000 points in
|
|
2
|
+
// interleaved layers (`mod(i,5)`, `mod(i,4)`, `mod(i,2)`) swirl into a ring of
|
|
3
|
+
// tailed medusae that pulse over time. A polar plot (radius `q`, angle `c`).
|
|
4
|
+
// Two JS bitwise-isms translated: `**4` → `^4`, and `~(i&1)*80` (bitwise NOT of
|
|
5
|
+
// i&1) → `(1+mod(i,2))*80` — an 80/160 offset per parity. Hue'd + bloomed, 9:16.
|
|
6
|
+
//
|
|
7
|
+
// Original idea by @yuruyurau (https://x.com/yuruyurau). Our own annotated take —
|
|
8
|
+
// pure in (i, t), so it scrubs and records; the p5 original can't.
|
|
9
|
+
//
|
|
10
|
+
// manic examples/cloud-medusae.manic
|
|
11
|
+
title("A ring of medusae from one formula");
|
|
12
|
+
canvas("9:16");
|
|
13
|
+
template("black");
|
|
14
|
+
|
|
15
|
+
cloud(medusae, 30000, #ffffff, 0.55) {
|
|
16
|
+
let s = i/799;
|
|
17
|
+
let k = 5*cos(i/48);
|
|
18
|
+
let e = 5*cos(s/9);
|
|
19
|
+
let d = (hypot(k, e)/(6 + mod(i,4)))^4 + 4;
|
|
20
|
+
let q = k*(3 + e/2*sin(d*8 + k/9 - t)) - 3*sin(k*d/3) + (1 + mod(i,2))*80;
|
|
21
|
+
let c = d - t/9 + mod(i,5);
|
|
22
|
+
let px = q*sin(c);
|
|
23
|
+
let py = q*cos(c - mod(i,2) + mod(i,5)*3 + 7);
|
|
24
|
+
let grow = tanh(t*0.5 + 0.12);
|
|
25
|
+
let x = 540 + px * 1.7 * grow;
|
|
26
|
+
let y = 960 + py * 1.7 * grow;
|
|
27
|
+
let hue = mod(mod(i,5)*72 + i*0.01 + t*14, 360);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ---- textbook annotations ----
|
|
31
|
+
caption(head, "A ring of medusae from one formula", (540, 138), 32);
|
|
32
|
+
caption(sub, "30,000 points, no simulation", (540, 204), 22);
|
|
33
|
+
hidden(head);
|
|
34
|
+
hidden(sub);
|
|
35
|
+
equation(eq, (540, 1706), `p = (q\sin c,\;\; q\cos c')`, 32);
|
|
36
|
+
caption(lab, "a polar plot in interleaved layers (mod i,n)", (540, 1786), 20);
|
|
37
|
+
hidden(eq);
|
|
38
|
+
hidden(lab);
|
|
39
|
+
|
|
40
|
+
show(head);
|
|
41
|
+
wait(1.4);
|
|
42
|
+
show(sub);
|
|
43
|
+
wait(2.6);
|
|
44
|
+
show(eq);
|
|
45
|
+
show(lab);
|
|
46
|
+
wait(25);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// cloud-phoenix — another @yuruyurau art-tweet, reimagined in ONE `cloud`. 10,000
|
|
2
|
+
// points flow into a living, wing-like form and morph over time. The original
|
|
3
|
+
// packs a conditional into the amplitude ((y<9?9:5)); manic formulas have no
|
|
4
|
+
// ternary, so it's written with sign(): amp = 7 + 2*sign(9 - s). Coloured per
|
|
5
|
+
// point and bloomed from the centre on a 9:16 Short — every point a pure function
|
|
6
|
+
// of (i, t), so it scrubs and records (the p5 original can't).
|
|
7
|
+
//
|
|
8
|
+
// Original idea by @yuruyurau (https://x.com/yuruyurau) — a prolific poster of
|
|
9
|
+
// these tiny p5.js/dwitter art formulas. This is our own hue'd, annotated take.
|
|
10
|
+
//
|
|
11
|
+
// manic examples/cloud-phoenix.manic
|
|
12
|
+
title("One formula becomes a phoenix");
|
|
13
|
+
canvas("9:16");
|
|
14
|
+
template("black");
|
|
15
|
+
|
|
16
|
+
cloud(bird, 10000, #ffffff, 0.72) {
|
|
17
|
+
let s = i / 353; // the reference's "y" parameter
|
|
18
|
+
let amp = 7 + 2*sign(9 - s); // (y<9?9:5), written with sign()
|
|
19
|
+
let k = (amp + cos(s*31 - t)) * cos(i/44);
|
|
20
|
+
let e = s/9 - 14;
|
|
21
|
+
let d = hypot(k, e) / 1.6;
|
|
22
|
+
let c = d - t/2;
|
|
23
|
+
// raw coords (centred at 0), then bloom + scale onto the 1080x1920 frame
|
|
24
|
+
let px = (d*9 + k*k)*cos(c);
|
|
25
|
+
let py = (55 + d*9)*sin(c/3) + 4*sin(k*2) + s/29*k*(e + 3*sin(e*4 - d*4 + t*3));
|
|
26
|
+
let grow = tanh(t * 0.5 + 0.12);
|
|
27
|
+
let x = 540 + px * 2.6 * grow;
|
|
28
|
+
let y = 960 + (py - 120) * 2.6 * grow; // -120 recentres the form's DC offset
|
|
29
|
+
let r = 1.4;
|
|
30
|
+
let hue = mod(s * 13 + t * 16, 360); // a rainbow flowing along the form
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ---- textbook annotations ----
|
|
34
|
+
caption(head, "One formula becomes a phoenix", (540, 132), 38);
|
|
35
|
+
caption(sub, "10,000 points, no simulation", (540, 200), 24);
|
|
36
|
+
hidden(head);
|
|
37
|
+
hidden(sub);
|
|
38
|
+
equation(eq, (540, 1706), `p_i = f(i,\; t)`, 46);
|
|
39
|
+
caption(lab, "each point placed by its index i and time t", (540, 1786), 22);
|
|
40
|
+
hidden(eq);
|
|
41
|
+
hidden(lab);
|
|
42
|
+
|
|
43
|
+
show(head);
|
|
44
|
+
wait(1.4);
|
|
45
|
+
show(sub);
|
|
46
|
+
wait(2.6);
|
|
47
|
+
show(eq);
|
|
48
|
+
show(lab);
|
|
49
|
+
wait(27);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// cloud-plumes — another @yuruyurau art-tweet in ONE `cloud`: 30,000 points in
|
|
2
|
+
// two mirrored layers (`mod(i,2)`) drift into flowing frond/plume forms and morph
|
|
3
|
+
// over time. A polar plot — radius `q`, angle `c` — coloured per point and
|
|
4
|
+
// bloomed from the centre on a 9:16 Short. `mag(k,e)^2` becomes `k*k+e*e`, and
|
|
5
|
+
// the canvas `w` (=400) is folded into the constant `i/1200`.
|
|
6
|
+
//
|
|
7
|
+
// Original idea by @yuruyurau (https://x.com/yuruyurau) — a prolific poster of
|
|
8
|
+
// tiny p5.js/dwitter art formulas. Our own hue'd, annotated take. Pure in (i, t),
|
|
9
|
+
// so it scrubs and records; the p5 original can't.
|
|
10
|
+
//
|
|
11
|
+
// manic examples/cloud-plumes.manic
|
|
12
|
+
title("Two fronds from one formula");
|
|
13
|
+
canvas("9:16");
|
|
14
|
+
template("black");
|
|
15
|
+
|
|
16
|
+
cloud(fronds, 30000, #ffffff, 0.6) {
|
|
17
|
+
let m = mod(i, 2) * 3; // two layers: 0, 3
|
|
18
|
+
let k = 14*cos(i/39);
|
|
19
|
+
let e = i/1200 - 13;
|
|
20
|
+
let d = (k*k + e*e)/59 + 1;
|
|
21
|
+
let q = 89 - sin(k)*d + k*(8/d + sin(d*3 + e/9 - t));
|
|
22
|
+
let c = d*0.45 - sin(t - d)/8 - t/8 + m;
|
|
23
|
+
let px = q*sin(c);
|
|
24
|
+
let py = (q + 40 + 30*sin(c*2 + m))*cos(c);
|
|
25
|
+
let grow = tanh(t*0.5 + 0.12);
|
|
26
|
+
let x = 540 + px * 2.0 * grow;
|
|
27
|
+
let y = 960 + py * 2.0 * grow;
|
|
28
|
+
let hue = mod(m*70 + i*0.03 + t*15, 360);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// ---- textbook annotations ----
|
|
32
|
+
caption(head, "Two fronds from one formula", (540, 138), 36);
|
|
33
|
+
caption(sub, "30,000 points, no simulation", (540, 206), 22);
|
|
34
|
+
hidden(head);
|
|
35
|
+
hidden(sub);
|
|
36
|
+
equation(eq, (540, 1706), `p = (q\sin c,\;\; (q{+}\Delta)\cos c)`, 30);
|
|
37
|
+
caption(lab, "a polar plot: radius q, angle c, per point", (540, 1786), 20);
|
|
38
|
+
hidden(eq);
|
|
39
|
+
hidden(lab);
|
|
40
|
+
|
|
41
|
+
show(head);
|
|
42
|
+
wait(1.4);
|
|
43
|
+
show(sub);
|
|
44
|
+
wait(2.6);
|
|
45
|
+
show(eq);
|
|
46
|
+
show(lab);
|
|
47
|
+
wait(25);
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// cloud-pottery — the OpenProcessing weekly "Pottery" creative-coding challenge
|
|
2
|
+
// (https://openprocessing.org/curation/78544) reimagined in ONE manic `cloud`. The p5
|
|
3
|
+
// original stacks random easing curves into pot silhouettes and stipples them with
|
|
4
|
+
// thousands of dots across three graphics layers, plus recursive sticks + flowers.
|
|
5
|
+
// manic can't recurse in a flat `f(i,t)` cloud — so the sticks/flowers/layers are left
|
|
6
|
+
// to the original — but the SIGNATURE look (dotted ellipse-ring vases, each a unique
|
|
7
|
+
// wavy profile, shaded front-bright) is one closed-form formula per point. Pure in
|
|
8
|
+
// (i,t): the pots grow in bottom-up and record exactly, where the p5 sketch draws once.
|
|
9
|
+
//
|
|
10
|
+
// manic examples/cloud-pottery.manic
|
|
11
|
+
title("Pottery — a p5 sketch, reimagined as one cloud");
|
|
12
|
+
canvas("16:9");
|
|
13
|
+
template("black");
|
|
14
|
+
|
|
15
|
+
cloud(pots, 40320, #c47a3d, 0.95) {
|
|
16
|
+
// decode the flat index i into (pot, ring, angle-around-the-ellipse)
|
|
17
|
+
let per = 5760; // 90 rings * 64 dots
|
|
18
|
+
let pot = floor(i / per);
|
|
19
|
+
let rem = i - pot * per;
|
|
20
|
+
let ring = floor(rem / 64);
|
|
21
|
+
let k = rem - ring * 64;
|
|
22
|
+
let yl = ring / 89; // 0 = base, 1 = rim
|
|
23
|
+
let a = k / 64 * tau;
|
|
24
|
+
|
|
25
|
+
// 7 pots across a 1280-wide frame (margin 86)
|
|
26
|
+
let span = 1108;
|
|
27
|
+
let potX = 86 + (pot + 0.5) * (span / 7);
|
|
28
|
+
let potW = (span / 7) * 0.4; // half-width
|
|
29
|
+
let baseY = 545;
|
|
30
|
+
let potH = potW * (1.0 + 1.8 * rand2(pot, 1.7));
|
|
31
|
+
|
|
32
|
+
// a wavy vase silhouette, unique per pot (a couple of seeded sine harmonics)
|
|
33
|
+
let seed = rand2(pot, 3.7);
|
|
34
|
+
let prof = 0.55 + 0.28 * sin(yl * pi + seed * tau) + 0.12 * sin(yl * tau + seed * 9.0);
|
|
35
|
+
let R = potW * prof;
|
|
36
|
+
|
|
37
|
+
// ellipse ring, 0.22 vertical squash for perspective, a little per-dot jitter
|
|
38
|
+
let x = potX + R * sin(a) + 1.4 * rand2(i, 2.1);
|
|
39
|
+
let y = baseY - yl * potH + R * 0.22 * (-cos(a)) + 1.4 * rand2(i, 5.3);
|
|
40
|
+
|
|
41
|
+
// grow bottom-up: only rings below the rising build-line have appeared
|
|
42
|
+
let build = tanh(t * 0.55) * 1.14;
|
|
43
|
+
let vis = 1 - smoothstep(build, build + 0.10, yl);
|
|
44
|
+
|
|
45
|
+
let r = 0.9 + 1.1 * rand2(i, 7.0); // fine stipple
|
|
46
|
+
// terracotta while it grows; AFTER the pots are formed the glaze shifts, cycling
|
|
47
|
+
// through the "colour sets" the p5 original picks at random — same scene, live.
|
|
48
|
+
let cyc = (t - 4.0) * step(4.0, t); // 0 until t=4, then climbs
|
|
49
|
+
let hue = mod(26 + cyc * 34.0 + 16 * rand2(pot, 4.0), 360);
|
|
50
|
+
let alpha = (0.38 + 0.55 * (0.5 - 0.5 * cos(a))) * vis; // near-side brighter; fades in
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// flowering sprigs on SOME vessels (the original branches recursively; a flat cloud
|
|
54
|
+
// can't, so this is a hash-selected subset with a curved stem + a dotted flower head)
|
|
55
|
+
cloud(sprigs, 12000, #ffdd88, 0.92) {
|
|
56
|
+
let per = 2000;
|
|
57
|
+
let pot = floor(i / per);
|
|
58
|
+
let rem = i - pot * per;
|
|
59
|
+
let has = step(0.55, rand2(pot, 9.1)); // ~45% of pots get a sprig
|
|
60
|
+
|
|
61
|
+
// recompute the pot geometry so the sprig sits on the rim
|
|
62
|
+
let span = 1108;
|
|
63
|
+
let potX = 86 + (pot + 0.5) * (span / 7);
|
|
64
|
+
let potW = (span / 7) * 0.4;
|
|
65
|
+
let baseY = 545;
|
|
66
|
+
let potH = potW * (1.0 + 1.8 * rand2(pot, 1.7));
|
|
67
|
+
let rimY = baseY - potH;
|
|
68
|
+
let seedF = rand2(pot, 5.9);
|
|
69
|
+
let stemLen = potH * (0.8 + 0.7 * seedF);
|
|
70
|
+
let lean = (rand2(pot, 2.3) - 0.5) * 80;
|
|
71
|
+
|
|
72
|
+
let isStem = 1 - step(600, rem); // first 600 dots = stem, rest = head
|
|
73
|
+
// stem: a gentle bow from the rim upward
|
|
74
|
+
let ts = rem / 600;
|
|
75
|
+
let sx = potX + lean * ts + 10 * sin(ts * pi + seedF * 6.0);
|
|
76
|
+
let sy = rimY - stemLen * ts;
|
|
77
|
+
// flower head at the stem top (ts = 1)
|
|
78
|
+
let hx = potX + lean + 10 * sin(pi + seedF * 6.0);
|
|
79
|
+
let hy = rimY - stemLen;
|
|
80
|
+
let tf = (rem - 600) / 1400;
|
|
81
|
+
let fang = tf * tau * 7.0; // spiral fills the head
|
|
82
|
+
let petal = 0.5 + 0.5 * abs(sin(fang * 2.5)); // 5-lobe petals
|
|
83
|
+
let frad = (14 + 8 * seedF) * petal * (0.35 + 0.65 * rand2(i, 3.3));
|
|
84
|
+
let fx = hx + frad * sin(fang) + 3 * (rand2(i, 7.7) - 0.5);
|
|
85
|
+
let fy = hy + frad * (-cos(fang)) + 3 * (rand2(i, 8.8) - 0.5);
|
|
86
|
+
|
|
87
|
+
let x = select(sx, fx, isStem);
|
|
88
|
+
let y = select(sy, fy, isStem);
|
|
89
|
+
let r = select(1.0 + 0.5 * rand2(i, 1.1), 1.3 + 1.5 * rand2(i, 2.2), isStem);
|
|
90
|
+
let hue = select(96, 44, isStem); // stem green, flower gold
|
|
91
|
+
let grow = smoothstep(2.6, 4.6, t); // sprigs sprout after the pots form
|
|
92
|
+
let alpha = has * grow * (0.4 + 0.55 * rand2(i, 6.6));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ---- textbook annotations ----
|
|
96
|
+
caption(head, "Pottery — one formula per dot", (640, 60), 30);
|
|
97
|
+
caption(sub, "vases grown bottom-up, sprigged, then re-glazed live — all pure in (i, t)", (640, 112), 20);
|
|
98
|
+
hidden(head);
|
|
99
|
+
hidden(sub);
|
|
100
|
+
|
|
101
|
+
show(head);
|
|
102
|
+
wait(2.4);
|
|
103
|
+
show(sub);
|
|
104
|
+
wait(11); // pots grow, sprigs sprout, then the glaze cycles the palette
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// cloud-shells — a dwitter-style art-tweet reimagined in manic: ONE `cloud` of
|
|
2
|
+
// 10,000 points in three layers (`mod(i,3)`), placed by a polar formula — radius
|
|
3
|
+
// `q`, angle `c` — then coloured per point (a hue gradient per form) and bloomed
|
|
4
|
+
// out of the centre. Rebuilt as a textbook Short: every point a pure function of
|
|
5
|
+
// (i, t), so it scrubs and records.
|
|
6
|
+
//
|
|
7
|
+
// Original idea by @yuruyurau (https://x.com/yuruyurau) — a prolific poster of
|
|
8
|
+
// these tiny p5.js/dwitter art formulas. This is our own hue'd, annotated take.
|
|
9
|
+
//
|
|
10
|
+
// manic examples/cloud-shells.manic
|
|
11
|
+
title("One formula, ten thousand points");
|
|
12
|
+
canvas("9:16");
|
|
13
|
+
template("black");
|
|
14
|
+
|
|
15
|
+
cloud(swirl, 10000, #ffffff, 0.72) {
|
|
16
|
+
let m = mod(i, 3) * 4; // three layers: 0, 4, 8
|
|
17
|
+
let k = 9 * cos(i / 81);
|
|
18
|
+
let e = i / 461 - 11;
|
|
19
|
+
let d = hypot(k, e)^4 / 40000 + 1.5 + sin(t/2 + m)/4;
|
|
20
|
+
let q = 89 - e*sin(k) + k*(4 + 2*sin(d*9 + e/9 - t));
|
|
21
|
+
let c = d + sin(t - d*4)/9 - t/9 + m;
|
|
22
|
+
// raw shell coords (centred at 0), then bloom + scale onto the 1080x1920 frame
|
|
23
|
+
let qx = q*cos(c);
|
|
24
|
+
let qy = (q + 30)*sin(c);
|
|
25
|
+
let grow = tanh(t * 0.5 + 0.12); // blooms from the centre
|
|
26
|
+
let x = 540 + qx * 2.9 * grow;
|
|
27
|
+
let y = 980 + qy * 2.9 * grow;
|
|
28
|
+
let r = 1.4;
|
|
29
|
+
// colour: a gradient along each form (index) with the three layers offset, all
|
|
30
|
+
// slowly cycling — every point its own hue
|
|
31
|
+
let hue = mod(m * 46 + i * 0.05 + t * 18, 360);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ---- textbook annotations ----
|
|
35
|
+
caption(head, "One formula, 10,000 points", (540, 132), 40);
|
|
36
|
+
caption(sub, "a 200-char art-tweet, rebuilt in manic", (540, 202), 24);
|
|
37
|
+
hidden(head);
|
|
38
|
+
hidden(sub);
|
|
39
|
+
equation(eq, (540, 1706), `p = (q\cos c,\; q\sin c)`, 44);
|
|
40
|
+
caption(lab, "a polar plot: radius q, angle c, per point", (540, 1784), 22);
|
|
41
|
+
hidden(eq);
|
|
42
|
+
hidden(lab);
|
|
43
|
+
|
|
44
|
+
show(head);
|
|
45
|
+
wait(1.4);
|
|
46
|
+
show(sub);
|
|
47
|
+
wait(2.6);
|
|
48
|
+
show(eq);
|
|
49
|
+
show(lab);
|
|
50
|
+
wait(17);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// cloud-starfield — again the same primitive, now a scatter, not a curve: a
|
|
2
|
+
// drifting starfield built on `noise` and `mod`. Each star sits at a hashed
|
|
3
|
+
// position and rains downward, wrapping at the bottom, with a hashed size — the
|
|
4
|
+
// point being that `cloud` places points by whatever rule you give it. A 9:16
|
|
5
|
+
// Short held 20s so the drift is visible.
|
|
6
|
+
//
|
|
7
|
+
// manic examples/cloud-starfield.manic
|
|
8
|
+
title("cloud — a drifting starfield");
|
|
9
|
+
canvas("9:16");
|
|
10
|
+
template("black");
|
|
11
|
+
|
|
12
|
+
cloud(stars, 900, #ffffff, 0.9) {
|
|
13
|
+
let x = 1080 * noise(i, 1);
|
|
14
|
+
// fall over time and wrap the height with mod(...) (a 2-arg formula function)
|
|
15
|
+
let y = mod(1920 * noise(i, 7) + t * 90, 1920);
|
|
16
|
+
let r = 0.6 + 1.8 * noise(i, 3);
|
|
17
|
+
// colour reveal: stars start cool blue-white, then drift into gentle
|
|
18
|
+
// per-star colour as `spread` grows and the whole field slowly cycles
|
|
19
|
+
let spread = tanh(t * 0.25);
|
|
20
|
+
let hue = mod(210 + 150 * noise(i, 5) * spread + t * 18, 360);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
wait(20);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// cloud-wave-lattice — a 50x50 grid of points unpacked from the 1-D index with
|
|
2
|
+
// floor/mod, rippling as a travelling wave. Same `cloud` primitive, a physics-
|
|
3
|
+
// flavoured field this time: index arithmetic gives you a lattice, and `t` drives
|
|
4
|
+
// the wave. On a 9:16 Short, held 20s so the ripple travels through fully.
|
|
5
|
+
//
|
|
6
|
+
// manic examples/cloud-wave-lattice.manic
|
|
7
|
+
title("cloud — a rippling 50x50 lattice");
|
|
8
|
+
canvas("9:16");
|
|
9
|
+
template("black");
|
|
10
|
+
|
|
11
|
+
cloud(sheet, 2500, #7cf05a, 0.95) {
|
|
12
|
+
let col = mod(i, 50);
|
|
13
|
+
let row = floor(i / 50);
|
|
14
|
+
let x = 60 + col * 19.5;
|
|
15
|
+
let y = 220 + row * 28 + 70 * sin(col * 0.4 + row * 0.2 + t * 2);
|
|
16
|
+
let r = 3;
|
|
17
|
+
// colour reveal: starts near green (hue 140), then fans into rainbow bands
|
|
18
|
+
// running down/across the sheet as `spread` grows and the wheel cycles
|
|
19
|
+
let spread = tanh(t * 0.3);
|
|
20
|
+
let hue = mod(140 + (row * 7 + col * 3) * spread + t * 30, 360);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
wait(20);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// cloud-word — type a word, get a particle swarm that flies in from all sides,
|
|
2
|
+
// assembles into the letters, holds, then bursts apart. The `cloud` primitive's
|
|
3
|
+
// `from text("…")` source fills the glyphs and hands each point its home as
|
|
4
|
+
// `hx`/`hy`; the block formulas fly those homes in and out over time `t`. Change
|
|
5
|
+
// the word and it just works — the end-user's creativity, not a hard-coded logo.
|
|
6
|
+
//
|
|
7
|
+
// manic examples/cloud-word.manic
|
|
8
|
+
title("cloud — a word from a swarm");
|
|
9
|
+
canvas("9:16");
|
|
10
|
+
template("black");
|
|
11
|
+
|
|
12
|
+
cloud(word, 1800, #ffffff, 0.95) from text("MANIC") {
|
|
13
|
+
// fly-in start: golden-angle scatter around the canvas centre (540, 960)
|
|
14
|
+
let din = 500 + mod(i * 97, 520);
|
|
15
|
+
let sx = 540 + cos(i * 2.39996) * din;
|
|
16
|
+
let sy = 960 + sin(i * 2.39996) * din;
|
|
17
|
+
// burst-out end: a different hashed angle
|
|
18
|
+
let ex = 540 + cos(i * 4.123) * (520 + mod(i * 53, 420));
|
|
19
|
+
let ey = 960 + sin(i * 4.123) * (520 + mod(i * 53, 420));
|
|
20
|
+
// timeline: assemble ~t=1.4 (per-dot stagger), hold, burst ~t=7.5
|
|
21
|
+
let p = t - mod(i * 7, 29) * 0.05;
|
|
22
|
+
let asm = 0.5 * (1 + tanh((p - 1.4) * 2.0));
|
|
23
|
+
let bst = 0.5 * (1 + tanh((t - 7.5) * 1.6));
|
|
24
|
+
let x = sx * (1 - asm) + (hx * (1 - bst) + ex * bst) * asm;
|
|
25
|
+
let y = sy * (1 - asm) + (hy * (1 - bst) + ey * bst) * asm;
|
|
26
|
+
let r = 2.4;
|
|
27
|
+
// a left-to-right rainbow across the word, gently cycling
|
|
28
|
+
let hue = mod(hx * 0.5 + t * 25, 360);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
wait(11);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// cloud3-ripple — the manic answer to a raymarched Shadertoy. The original
|
|
2
|
+
// (https://www.shadertoy.com/view/tssSDN) ray-marches a grid of boxes whose
|
|
3
|
+
// heights ripple in a wave radiating from a bouncing sphere. Ray-marching (a
|
|
4
|
+
// per-pixel loop over an SDF scene) is out of scope for manic's closed-form
|
|
5
|
+
// fields — but the OUTCOME is pure 3D geometry, so we REIMAGINE it with `cloud3`:
|
|
6
|
+
// a 64×64 grid of points whose height is a travelling wave centred on a moving
|
|
7
|
+
// sphere, each point a closed-form function of its index and time. Real 3D,
|
|
8
|
+
// projected by `camera3`, seekable and recordable — no raymarch, no assets.
|
|
9
|
+
//
|
|
10
|
+
// manic examples/cloud3-ripple.manic
|
|
11
|
+
title("A rippling grid — the cloud3 answer to a raymarch");
|
|
12
|
+
canvas("16:9");
|
|
13
|
+
template("black");
|
|
14
|
+
|
|
15
|
+
// manic 3D is Z-up: the grid floor lies in the x-y plane and ripples UP in z.
|
|
16
|
+
camera3((11, -11, 8), (0, 0, 0.4), 40, perspective);
|
|
17
|
+
|
|
18
|
+
// the grid: each point bobs on a wave that radiates from the sphere's position
|
|
19
|
+
cloud3(grid, 4096, #ff3524, 1.0) {
|
|
20
|
+
let gx = mod(i, 64) / 63 - 0.5; // cell column 0..63 → -0.5..0.5
|
|
21
|
+
let gy = floor(i / 64) / 63 - 0.5; // cell row
|
|
22
|
+
let x = gx * 9; // world -4.5..4.5 (floor)
|
|
23
|
+
let y = gy * 9;
|
|
24
|
+
let sx = sin(t * 1.8) * 2.4; // the sphere's orbit, inlined
|
|
25
|
+
let sy = cos(t * 2.2) * 2.4;
|
|
26
|
+
let d = hypot(x - sx, y - sy); // in-plane distance to the sphere
|
|
27
|
+
let fall = 1 - smoothstep(0.0, 3.4, d); // near the sphere ⇒ bob more
|
|
28
|
+
let z = 1.35 * sin(rand(i) * 3.14 + t * 2.5 + d * 2.2) * fall; // HEIGHT: per-cell phase + wave
|
|
29
|
+
let r = 0.09;
|
|
30
|
+
let hue = mix(2.0, 46.0, clamp(z * 0.7 + 0.4, 0.0, 1.0)); // red troughs → gold crests
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// the little sphere that drives the wave (a tiny cloud3 shell, orbiting)
|
|
34
|
+
cloud3(ball, 90, #fff3b0, 1.0) {
|
|
35
|
+
let phi = i * 2.39996;
|
|
36
|
+
let ct = 1.0 - 2.0 * (i + 0.5) / 90.0;
|
|
37
|
+
let st = sqrt(1.0 - ct * ct);
|
|
38
|
+
let bx = sin(t * 1.8) * 2.4;
|
|
39
|
+
let by = cos(t * 2.2) * 2.4;
|
|
40
|
+
let x = bx + 0.42 * st * cos(phi);
|
|
41
|
+
let y = by + 0.42 * st * sin(phi);
|
|
42
|
+
let z = 1.7 + 0.42 * ct;
|
|
43
|
+
let r = 0.06;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
caption(head, "One wave, a moving source", (640, 68), 34);
|
|
47
|
+
caption(sub, "a cloud3 grid + a bouncing sphere — real 3D, no raymarch", (640, 126), 22);
|
|
48
|
+
hidden(head);
|
|
49
|
+
hidden(sub);
|
|
50
|
+
show(head);
|
|
51
|
+
wait(1.5);
|
|
52
|
+
show(sub);
|
|
53
|
+
wait(26);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// cloud3-sphere — the 3D twin of `cloud`: N points placed by closed-form x/y/z
|
|
2
|
+
// formulas of the index `i` and live time `t`, projected by the orbit `camera3`.
|
|
3
|
+
// A golden-angle spiral spreads 2500 points evenly over a sphere; the radius
|
|
4
|
+
// breathes and the whole shell slowly rotates, each point cycling its own hue.
|
|
5
|
+
// Same primitive philosophy as 2D `cloud`, one dimension up.
|
|
6
|
+
//
|
|
7
|
+
// manic examples/cloud3-sphere.manic
|
|
8
|
+
title("cloud3 — a breathing rainbow sphere");
|
|
9
|
+
canvas(800, 800);
|
|
10
|
+
template("black");
|
|
11
|
+
|
|
12
|
+
camera3((9, -9, 6), (0, 0, 0), 42, perspective);
|
|
13
|
+
|
|
14
|
+
cloud3(orb, 2500, #ffffff, 0.95) {
|
|
15
|
+
let phi = i * 2.39996; // golden angle around the axis
|
|
16
|
+
let ct = 1 - 2 * (i + 0.5) / 2500; // cos(theta): points spread evenly in z
|
|
17
|
+
let st = sqrt(1 - ct * ct); // sin(theta)
|
|
18
|
+
let rad = 3 + 0.5 * sin(t * 2 + i * 0.02); // the shell breathes
|
|
19
|
+
let x = rad * st * cos(phi + t * 0.4); // ...and slowly rotates
|
|
20
|
+
let y = rad * st * sin(phi + t * 0.4);
|
|
21
|
+
let z = rad * ct;
|
|
22
|
+
let r = 0.05;
|
|
23
|
+
let hue = mod(i * 0.18 + t * 24, 360);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
wait(10);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// clt.manic — the Central Limit Theorem (stats Tier 3, the flagship payoff)
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// `clt(id, (cx,cy), samplesize, trials, [seed], [width], [height])` runs `trials`
|
|
5
|
+
// experiments — each the average of `samplesize` dice — and histograms those
|
|
6
|
+
// averages. However flat a single die is, the averages pile into a BELL. Draws
|
|
7
|
+
// the histogram of sample means (`{id}.bar{k}`, tagged `{id}.bars`), the normal
|
|
8
|
+
// curve they converge to (`{id}.curve`), the mean line, ticks, and an info
|
|
9
|
+
// label. Seeded → the render is identical every time.
|
|
10
|
+
//
|
|
11
|
+
// TO ADAPT: change `samplesize` (bigger n → tighter bell) or `trials` (more →
|
|
12
|
+
// smoother). `seed` picks the reproducible random sequence.
|
|
13
|
+
// ============================================================================
|
|
14
|
+
|
|
15
|
+
title("The Central Limit Theorem");
|
|
16
|
+
canvas("16:9");
|
|
17
|
+
|
|
18
|
+
clt(ct, (cx, cy + 20), 5, 1200, 7, 660, 300);
|
|
19
|
+
untraced(ct.bars); // the sample means pile up, bar by bar
|
|
20
|
+
untraced(ct.curve); // the normal curve draws in last
|
|
21
|
+
hidden(ct.mean);
|
|
22
|
+
|
|
23
|
+
text(cap, (cx, h - 46), ""); size(cap, 22); color(cap, dim); display(cap);
|
|
24
|
+
|
|
25
|
+
say(cap, "one die is flat — 1 to 6 are equally likely. but average FIVE dice…", 0.5);
|
|
26
|
+
stagger(0.03) { for k in 0..30 { draw(ct.bar{k}, 0.3); } }
|
|
27
|
+
wait(1.0);
|
|
28
|
+
|
|
29
|
+
say(cap, "…and repeat 1200 times: the averages pile up around the middle", 0.5);
|
|
30
|
+
show(ct.mean, 0.4);
|
|
31
|
+
wait(1.6);
|
|
32
|
+
|
|
33
|
+
say(cap, "they trace a bell — the Central Limit Theorem: averages are normal", 0.5);
|
|
34
|
+
draw(ct.curve, 1.1);
|
|
35
|
+
wait(2.0);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// collide-blocks-annotated.manic — conservation of momentum, the MANIC way
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// Not a 1:1 port of the lab sim — a guided lesson that ELEVATES it: the live Σp
|
|
5
|
+
// readout, the KE↔spring-PE energy view, staged callouts, and honest narration
|
|
6
|
+
// (with a wall-spring, Σp is conserved AT each collision — Newton's 3rd law — not
|
|
7
|
+
// constant, since the spring is an external force). All base manic over the sim.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
title("Conservation of Momentum");
|
|
11
|
+
canvas("16:9");
|
|
12
|
+
|
|
13
|
+
// the sim's Σp readout sits at the very top (y≈46) — the star of the scene
|
|
14
|
+
collideblocks(cb, (cx, 460), 3, 1, 1);
|
|
15
|
+
hidden(cb); // the bare id hides every part + the readout + energy view
|
|
16
|
+
energygraph(cb, (1055, 250), 84); // KE ↔ spring PE (tagged cb, revealed by show(cb))
|
|
17
|
+
|
|
18
|
+
text(hdr, (cx, 104), "Conservation of Momentum"); size(hdr, 30); color(hdr, cyan); bold(hdr); display(hdr); hidden(hdr);
|
|
19
|
+
text(sub, (cx, 140), "block 1 on a spring · block 2 slides in · watch Σp through the collision"); size(sub, 17); color(sub, dim); display(sub); hidden(sub);
|
|
20
|
+
|
|
21
|
+
// callouts
|
|
22
|
+
text(csp, (360, 330), "spring holds block 1 to the wall"); size(csp, 16); color(csp, lime); display(csp); hidden(csp);
|
|
23
|
+
arrow(asp, (392, 344), (418, 424)); color(asp, dim); stroke(asp, 2); hidden(asp);
|
|
24
|
+
text(cb1, (470, 300), "block 1 · m₁ = 3 kg"); size(cb1, 16); color(cb1, cyan); display(cb1); hidden(cb1);
|
|
25
|
+
text(cb2, (800, 300), "block 2 · m₂ = 1 kg →"); size(cb2, 16); color(cb2, magenta); display(cb2); hidden(cb2);
|
|
26
|
+
|
|
27
|
+
text(cap, (cx, h - 38), ""); size(cap, 19); color(cap, fg); display(cap);
|
|
28
|
+
|
|
29
|
+
// ============================== SCRIPT ==============================
|
|
30
|
+
show(hdr, 0.5); show(sub, 0.4);
|
|
31
|
+
wait(0.3);
|
|
32
|
+
show(cb, 0.6); // sim + Σp readout + energy view
|
|
33
|
+
show(csp, 0.3); draw(asp, 0.3); show(cb1, 0.3); show(cb2, 0.3);
|
|
34
|
+
wait(0.4);
|
|
35
|
+
|
|
36
|
+
say(cap, "block 2 slides toward block 1, which is held by its spring", 0.4);
|
|
37
|
+
wait(0.5);
|
|
38
|
+
say(cap, "they collide — each pushes the other equal and opposite (Newton's 3rd law)", 0.4);
|
|
39
|
+
flash(cb.mom, gold);
|
|
40
|
+
wait(0.5);
|
|
41
|
+
say(cap, "so Σp doesn't jump at the hit — the spring only shifts it BETWEEN collisions", 0.4);
|
|
42
|
+
wait(0.5);
|
|
43
|
+
say(cap, "energy sloshes between motion and the spring, but the total stays put — elastic", 0.4);
|
|
44
|
+
|
|
45
|
+
run(cb, 12);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// collide-blocks.manic — the classic momentum demo. Block 1 (left) is attached to
|
|
2
|
+
// the wall by a SPRING; block 2 slides in freely and they collide with restitution
|
|
3
|
+
// e (1 = elastic → energy conserved; <1 → lost). The live Σp readout (top) shows
|
|
4
|
+
// momentum is conserved at every collision. Built on the shared `collide_1d`.
|
|
5
|
+
title("Colliding blocks — momentum is conserved");
|
|
6
|
+
canvas("16:9");
|
|
7
|
+
text(hdr, (cx, 96), "Block 1 on a spring, block 2 sliding in — watch the momentum readout"); size(hdr, 21); color(hdr, cyan); bold(hdr); display(hdr);
|
|
8
|
+
collideblocks(cb, (cx, 440), 3, 1, 1);
|
|
9
|
+
energygraph(cb, (1040, 210), 90);
|
|
10
|
+
text(cap, (cx, h - 36), "elastic (e=1): total energy (KE + spring PE) is conserved; Σp is conserved at each collision"); size(cap, 15); color(cap, dim); display(cap);
|
|
11
|
+
run(cb, 10);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// compare-pendulum.manic — sensitive dependence: two pendulums 0.001 rad apart.
|
|
2
|
+
// comparependulum(id,[center],[angle0deg],[unit]) — identical driven-damped
|
|
3
|
+
// physics, a hair-different start — yet they diverge completely (the butterfly effect).
|
|
4
|
+
title("Two pendulums, one hair apart");
|
|
5
|
+
canvas("16:9");
|
|
6
|
+
text(hdr,(cx,44),"Sensitive dependence — a 0.001 rad difference explodes"); size(hdr,23); color(hdr,cyan); bold(hdr); display(hdr);
|
|
7
|
+
comparependulum(cm, (380,230), 12, 120);
|
|
8
|
+
phase(cm, (900,190), 95); // θ_A vs θ_B — starts on the diagonal, then scatters
|
|
9
|
+
timegraph(cm, (900,470), 95); // θ_A(t) & θ_B(t) diverge
|
|
10
|
+
text(cap,(cx,h-32),"cyan and magenta start together, then go their separate ways"); size(cap,16); color(cap,dim); display(cap);
|
|
11
|
+
run(cm, 13);
|