@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,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "993f3788-f75e-445c-ba45-c401907b3c02",
|
|
3
|
+
"file": "band.manic",
|
|
4
|
+
"format": "mp4",
|
|
5
|
+
"options": {
|
|
6
|
+
"format": "mp4",
|
|
7
|
+
"fps": 60,
|
|
8
|
+
"scale": 1,
|
|
9
|
+
"canvas": "auto",
|
|
10
|
+
"cpuShaders": false,
|
|
11
|
+
"branded": true
|
|
12
|
+
},
|
|
13
|
+
"status": "completed",
|
|
14
|
+
"startedAt": 1787648427552,
|
|
15
|
+
"finishedAt": 1787648437659,
|
|
16
|
+
"log": "Rendering with Manic…\n597 frames -> /Users/anish/git/maniclang-x/manic-workbench/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/out.mp4\nmarkers: /Users/anish/git/maniclang-x/manic-workbench/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/markers.json\nout.mp4 is ready.",
|
|
17
|
+
"outputName": "out.mp4",
|
|
18
|
+
"frameCount": 597,
|
|
19
|
+
"progress": {
|
|
20
|
+
"phase": "complete",
|
|
21
|
+
"percent": 100,
|
|
22
|
+
"framesRendered": 597,
|
|
23
|
+
"totalFrames": 597,
|
|
24
|
+
"elapsedMs": 10107
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocolVersion": 1,
|
|
3
|
+
"threadId": "thread_3ce7448a13f64f9e887d1bc8106a97a8",
|
|
4
|
+
"target": {
|
|
5
|
+
"kind": "file",
|
|
6
|
+
"path": "ai-story.manic"
|
|
7
|
+
},
|
|
8
|
+
"turns": [
|
|
9
|
+
{
|
|
10
|
+
"runId": "agent_b0491f8a5b8145509a4c1391cc7621f2",
|
|
11
|
+
"userMessage": "show me a pulley animation",
|
|
12
|
+
"proposalSummary": "Replace the olympiad geometry scene with a new pulley-physics animation: a classic Atwood machine (two masses over a pulley) paired with an energy graph, followed by a block-and-tackle demo showing mechanical advantage.",
|
|
13
|
+
"status": "ready",
|
|
14
|
+
"appliedRevision": "23ff967903df26dc1dc44195206d4756bed875791ae32d433ff04c18dc689940",
|
|
15
|
+
"at": 1786271477001
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"runId": "agent_88ab9482e0724fa9adde6461caf25f99",
|
|
19
|
+
"userMessage": "add three pulley ",
|
|
20
|
+
"proposalSummary": "Add a third act: a compound pulley system with three masses (fixed pulley + movable pulley) after the block-and-tackle demo.",
|
|
21
|
+
"status": "ready",
|
|
22
|
+
"appliedRevision": "96b25242942e4f2a1f1f3d5ac1deaaa59bb73b3d3f23a91acf38d71a5fc4729c",
|
|
23
|
+
"at": 1786271558034
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"runId": "agent_8da51363ce384b8aa71160b3bb56e92e",
|
|
27
|
+
"userMessage": "Screen issues all jumbled do it on paper template ",
|
|
28
|
+
"proposalSummary": "Switch to the paper template and fix overlapping layout: give every title, diagram, equation, and caption clear vertical separation (title band, diagram band, equation band, caption band) and space the two Act-1 diagrams further apart horizontally; slightly reduce diagram scale so nothing collides.",
|
|
29
|
+
"status": "ready",
|
|
30
|
+
"appliedRevision": "b29efc1c9c9b2075e435165b75a45ba4801f35a9316198d3f7f77145b50b6210",
|
|
31
|
+
"at": 1786271731379
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"runId": "agent_764bddd331984b0b90976882b7710dfc",
|
|
35
|
+
"userMessage": "visualzie this Let $O(0, 0), P(3, 4), Q(6, 0)$ be the vertices of the triangles $OPQ$. The point $R$ inside the triangle $OPQ$ is such that the triangles $OPR, PQR, OQR$ are of equal area. The coordinates of $R$ are",
|
|
36
|
+
"proposalSummary": "Replace the pulley-physics scene with a geo-kit visualization of the equal-area point problem: triangle OPQ is constructed, the centroid R is derived (not hand-plotted), the three equal-area sub-triangles are shaded, and the answer R=(3,4/3) is revealed with a supporting area equation.",
|
|
37
|
+
"status": "ready",
|
|
38
|
+
"appliedRevision": "f1c312285e435352130e3e36c980a9cdc0ac63bd09a232ade98741feb92d1c26",
|
|
39
|
+
"at": 1786272143314
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"lastAppliedRevision": "f1c312285e435352130e3e36c980a9cdc0ac63bd09a232ade98741feb92d1c26",
|
|
43
|
+
"createdAt": 1786271440067,
|
|
44
|
+
"updatedAt": 1786272146092
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocolVersion": 1,
|
|
3
|
+
"threadId": "thread_d494cda29249477591056234719e4a3a",
|
|
4
|
+
"target": {
|
|
5
|
+
"kind": "draft",
|
|
6
|
+
"draftName": "ai-story.manic"
|
|
7
|
+
},
|
|
8
|
+
"turns": [
|
|
9
|
+
{
|
|
10
|
+
"runId": "agent_pending_1786271383441",
|
|
11
|
+
"userMessage": "show me a pulley animation ",
|
|
12
|
+
"proposalSummary": "Anthropic: invalid x-api-key",
|
|
13
|
+
"status": "failed",
|
|
14
|
+
"appliedRevision": null,
|
|
15
|
+
"at": 1786271384506
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"lastAppliedRevision": null,
|
|
19
|
+
"createdAt": 1786271383426,
|
|
20
|
+
"updatedAt": 1786271384507
|
|
21
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocolVersion": 1,
|
|
3
|
+
"threadId": "thread_e98ebdc225184ea5b8ddda8b44541f63",
|
|
4
|
+
"target": {
|
|
5
|
+
"kind": "file",
|
|
6
|
+
"path": "some-story.manic"
|
|
7
|
+
},
|
|
8
|
+
"turns": [
|
|
9
|
+
{
|
|
10
|
+
"runId": "agent_b535cb79440a4bc19acec512e3e807fa",
|
|
11
|
+
"userMessage": "A straight line $L$ through the point $(3, -2)$ is inclined at an angle $60^\\circ$ to the line $\\sqrt{3x} + y = 1$. If $L$ also intersects the x-axis, then the equation of $L$ is\n\nYout goal is onl visulze the problem no answer is required ",
|
|
12
|
+
"proposalSummary": "Create a Manic scene visualizing the coordinate-geometry problem: a line L through (3,-2) inclined at 60° to √3x+y=1, meeting the x-axis. Pure visualization/setup — no final equation is stated.",
|
|
13
|
+
"status": "ready",
|
|
14
|
+
"appliedRevision": "014e89b9b563b7f75340d70fc24d751f2228a85ad93f90bad0b759c63fb7fdf7",
|
|
15
|
+
"at": 1786272454290
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"runId": "agent_8ae574e9bb7441f3a613695529e44970",
|
|
19
|
+
"userMessage": "Nice work now Continue teh story with finding the solutions ",
|
|
20
|
+
"proposalSummary": "Continue the story: derive the slope of L from the 60° angle condition, reject the extraneous case that never meets the x-axis, build the point-slope equation into its final form, and reveal it on the original figure.",
|
|
21
|
+
"status": "ready",
|
|
22
|
+
"appliedRevision": "6dac258db5a44fef8576b0bd8e27e7428110d2668b376f0b0ca608391a2b2a41",
|
|
23
|
+
"at": 1786272695002
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"lastAppliedRevision": "6dac258db5a44fef8576b0bd8e27e7428110d2668b376f0b0ca608391a2b2a41",
|
|
27
|
+
"createdAt": 1786272272301,
|
|
28
|
+
"updatedAt": 1786272867273
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Manic examples
|
|
2
|
+
|
|
3
|
+
This directory is the default Workbench project when you run `npm start` or
|
|
4
|
+
`npm run dev` with no path. It contains the public catalogue of Manic source
|
|
5
|
+
examples: creator shorts, mathematics, geometry, physics, machine learning,
|
|
6
|
+
motion graphics, reactive explanations, systems diagrams, 2D, and 3D.
|
|
7
|
+
|
|
8
|
+
Open Workbench on these samples:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm start
|
|
12
|
+
# or
|
|
13
|
+
npm run dev
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The Files sidebar lists every `.manic` story here. Open one to edit, preview,
|
|
17
|
+
or render.
|
|
18
|
+
|
|
19
|
+
Run an example directly with the Manic Engine after installing it:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
manic examples/reactive-math-notation.manic
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Check it without opening a preview window:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
manic check examples/reactive-math-notation.manic
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Examples that reference `asset:` resources use the assets bundled with the
|
|
32
|
+
official Manic installation. In Workbench Settings, set `MANIC_ASSETS_DIR` if
|
|
33
|
+
you are using an extracted archive (auto-filled from `…/bin/manic`).
|
|
34
|
+
|
|
35
|
+
Documentation: [docs.maniclang.com](https://docs.maniclang.com/).
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
title("Can you reverse the spin of this tetrahedron?");
|
|
2
|
+
canvas("9:16");
|
|
3
|
+
template("black");
|
|
4
|
+
|
|
5
|
+
// the single knob: 0 = orthographic, 1 = perspective. Every tetrahedron reads it.
|
|
6
|
+
parameter(pv, (540, 3400), 0.0, 0.0, 1.0, "perspective", 2);
|
|
7
|
+
|
|
8
|
+
text(brand, (540, 40), "maniclang.com");
|
|
9
|
+
size(brand, 36);
|
|
10
|
+
display(brand);
|
|
11
|
+
color(brand, fg);
|
|
12
|
+
opacity(brand, 0.8);
|
|
13
|
+
|
|
14
|
+
caption(head, "Can you reverse the spin of this tetrahedron?", (540, 104), 38, lime);
|
|
15
|
+
text(sub, (370, 179), "there is no right answer — the picture is genuinely ambiguous");
|
|
16
|
+
size(sub, 27);
|
|
17
|
+
color(sub, fg);
|
|
18
|
+
opacity(sub, 0.62);
|
|
19
|
+
|
|
20
|
+
text(sub2, (356, 278), "flat projection throws away the one thing that would tell you");
|
|
21
|
+
size(sub2, 32);
|
|
22
|
+
color(sub2, fg);
|
|
23
|
+
opacity(sub2, 0.46);
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// ---- the ambiguous one ------------------------------------------------------------
|
|
27
|
+
cloud(bige, 360, #f0f4f8, 1.0) {
|
|
28
|
+
let j = mod(i, 60);
|
|
29
|
+
let ed = (i - j)/60;
|
|
30
|
+
let s = j/59;
|
|
31
|
+
// the six edges of K4, from the index alone
|
|
32
|
+
let va = step(3, ed) + step(5, ed);
|
|
33
|
+
let vb = mix(ed + 1, mix(ed - 1, 3, step(4, ed)), step(3, ed));
|
|
34
|
+
// a tetrahedron is the four cube corners with xyz = +1, so z = x*y
|
|
35
|
+
let ax = 1 - 2*step(2, va);
|
|
36
|
+
let ay = 1 - 2*mod(va, 2);
|
|
37
|
+
let bx = 1 - 2*step(2, vb);
|
|
38
|
+
let by = 1 - 2*mod(vb, 2);
|
|
39
|
+
let qx = mix(ax, bx, s);
|
|
40
|
+
let qy = mix(ay, by, s);
|
|
41
|
+
let qz = mix(ax*ay, bx*by, s);
|
|
42
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
43
|
+
// destroy the very identity this scene is about.
|
|
44
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
45
|
+
let tz = (qy*0.342898 + qz*0.939373)*1;
|
|
46
|
+
let th = 0.55*t;
|
|
47
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
48
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
49
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
50
|
+
let x = 540.0 + 170.0*kk*rx;
|
|
51
|
+
let y = 620.0 - 170.0*kk*ty;
|
|
52
|
+
let r = 1.7;
|
|
53
|
+
let alpha = 0.85;
|
|
54
|
+
}
|
|
55
|
+
cloud(bigv, 96, #9ec9e8, 1.0) {
|
|
56
|
+
let k = mod(i, 4);
|
|
57
|
+
let qx = 1 - 2*step(2, k);
|
|
58
|
+
let qy = 1 - 2*mod(k, 2);
|
|
59
|
+
let qz = qx*qy;
|
|
60
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
61
|
+
// destroy the very identity this scene is about.
|
|
62
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
63
|
+
let tz = (qy*0.342898 + qz*0.939373)*1;
|
|
64
|
+
let th = 0.55*t;
|
|
65
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
66
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
67
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
68
|
+
// deterministic scatter rather than rand(), so the two mirrored copies are
|
|
69
|
+
// guaranteed identical by construction and the claim below is literally true
|
|
70
|
+
let ang = 6.283185*fract(i*0.381966);
|
|
71
|
+
let rr = 6*sqrt(fract(i*0.618034));
|
|
72
|
+
let x = 540.0 + 170.0*kk*rx + rr*cos(ang);
|
|
73
|
+
let y = 620.0 - 170.0*kk*ty + rr*sin(ang);
|
|
74
|
+
let r = 2.3;
|
|
75
|
+
let alpha = 0.95;
|
|
76
|
+
}
|
|
77
|
+
glow(bigv, 0.8);
|
|
78
|
+
|
|
79
|
+
// ---- the proof: the same picture, from two different objects ----------------------
|
|
80
|
+
// as shown
|
|
81
|
+
cloud(p0e, 360, #f0f4f8, 1.0) {
|
|
82
|
+
let j = mod(i, 60);
|
|
83
|
+
let ed = (i - j)/60;
|
|
84
|
+
let s = j/59;
|
|
85
|
+
// the six edges of K4, from the index alone
|
|
86
|
+
let va = step(3, ed) + step(5, ed);
|
|
87
|
+
let vb = mix(ed + 1, mix(ed - 1, 3, step(4, ed)), step(3, ed));
|
|
88
|
+
// a tetrahedron is the four cube corners with xyz = +1, so z = x*y
|
|
89
|
+
let ax = 1 - 2*step(2, va);
|
|
90
|
+
let ay = 1 - 2*mod(va, 2);
|
|
91
|
+
let bx = 1 - 2*step(2, vb);
|
|
92
|
+
let by = 1 - 2*mod(vb, 2);
|
|
93
|
+
let qx = mix(ax, bx, s);
|
|
94
|
+
let qy = mix(ay, by, s);
|
|
95
|
+
let qz = mix(ax*ay, bx*by, s);
|
|
96
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
97
|
+
// destroy the very identity this scene is about.
|
|
98
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
99
|
+
let tz = (qy*0.342898 + qz*0.939373)*1;
|
|
100
|
+
let th = 0.55*t;
|
|
101
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
102
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
103
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
104
|
+
let x = 300.0 + 85.0*kk*rx;
|
|
105
|
+
let y = 1300.0 - 85.0*kk*ty;
|
|
106
|
+
let r = 1.7;
|
|
107
|
+
let alpha = 0.85*clamp((t - 14.0)/1.2, 0, 1);
|
|
108
|
+
}
|
|
109
|
+
cloud(p0v, 96, #9ec9e8, 1.0) {
|
|
110
|
+
let k = mod(i, 4);
|
|
111
|
+
let qx = 1 - 2*step(2, k);
|
|
112
|
+
let qy = 1 - 2*mod(k, 2);
|
|
113
|
+
let qz = qx*qy;
|
|
114
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
115
|
+
// destroy the very identity this scene is about.
|
|
116
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
117
|
+
let tz = (qy*0.342898 + qz*0.939373)*1;
|
|
118
|
+
let th = 0.55*t;
|
|
119
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
120
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
121
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
122
|
+
// deterministic scatter rather than rand(), so the two mirrored copies are
|
|
123
|
+
// guaranteed identical by construction and the claim below is literally true
|
|
124
|
+
let ang = 6.283185*fract(i*0.381966);
|
|
125
|
+
let rr = 6*sqrt(fract(i*0.618034));
|
|
126
|
+
let x = 300.0 + 85.0*kk*rx + rr*cos(ang);
|
|
127
|
+
let y = 1300.0 - 85.0*kk*ty + rr*sin(ang);
|
|
128
|
+
let r = 2.3;
|
|
129
|
+
let alpha = 0.95*clamp((t - 14.0)/1.2, 0, 1);
|
|
130
|
+
}
|
|
131
|
+
glow(p0v, 0.8);
|
|
132
|
+
|
|
133
|
+
// its mirror, turning the other way
|
|
134
|
+
cloud(p1e, 360, #f0f4f8, 1.0) {
|
|
135
|
+
let j = mod(i, 60);
|
|
136
|
+
let ed = (i - j)/60;
|
|
137
|
+
let s = j/59;
|
|
138
|
+
// the six edges of K4, from the index alone
|
|
139
|
+
let va = step(3, ed) + step(5, ed);
|
|
140
|
+
let vb = mix(ed + 1, mix(ed - 1, 3, step(4, ed)), step(3, ed));
|
|
141
|
+
// a tetrahedron is the four cube corners with xyz = +1, so z = x*y
|
|
142
|
+
let ax = 1 - 2*step(2, va);
|
|
143
|
+
let ay = 1 - 2*mod(va, 2);
|
|
144
|
+
let bx = 1 - 2*step(2, vb);
|
|
145
|
+
let by = 1 - 2*mod(vb, 2);
|
|
146
|
+
let qx = mix(ax, bx, s);
|
|
147
|
+
let qy = mix(ay, by, s);
|
|
148
|
+
let qz = mix(ax*ay, bx*by, s);
|
|
149
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
150
|
+
// destroy the very identity this scene is about.
|
|
151
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
152
|
+
let tz = (qy*0.342898 + qz*0.939373)*-1;
|
|
153
|
+
let th = -0.55*t;
|
|
154
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
155
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
156
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
157
|
+
let x = 780.0 + 85.0*kk*rx;
|
|
158
|
+
let y = 1300.0 - 85.0*kk*ty;
|
|
159
|
+
let r = 1.7;
|
|
160
|
+
let alpha = 0.85*clamp((t - 14.0)/1.2, 0, 1);
|
|
161
|
+
}
|
|
162
|
+
cloud(p1v, 96, #9ec9e8, 1.0) {
|
|
163
|
+
let k = mod(i, 4);
|
|
164
|
+
let qx = 1 - 2*step(2, k);
|
|
165
|
+
let qy = 1 - 2*mod(k, 2);
|
|
166
|
+
let qz = qx*qy;
|
|
167
|
+
// TILT THE OBJECT, then spin it. Tilting the camera after the spin would
|
|
168
|
+
// destroy the very identity this scene is about.
|
|
169
|
+
let ty = qy*0.939373 - qz*0.342898;
|
|
170
|
+
let tz = (qy*0.342898 + qz*0.939373)*-1;
|
|
171
|
+
let th = -0.55*t;
|
|
172
|
+
let rx = qx*cos(th) + tz*sin(th);
|
|
173
|
+
let rz = 0 - qx*sin(th) + tz*cos(th);
|
|
174
|
+
let kk = mix(0.75, 3.0/(4.0 - rz), pv);
|
|
175
|
+
// deterministic scatter rather than rand(), so the two mirrored copies are
|
|
176
|
+
// guaranteed identical by construction and the claim below is literally true
|
|
177
|
+
let ang = 6.283185*fract(i*0.381966);
|
|
178
|
+
let rr = 6*sqrt(fract(i*0.618034));
|
|
179
|
+
let x = 780.0 + 85.0*kk*rx + rr*cos(ang);
|
|
180
|
+
let y = 1300.0 - 85.0*kk*ty + rr*sin(ang);
|
|
181
|
+
let r = 2.3;
|
|
182
|
+
let alpha = 0.95*clamp((t - 14.0)/1.2, 0, 1);
|
|
183
|
+
}
|
|
184
|
+
glow(p1v, 0.8);
|
|
185
|
+
|
|
186
|
+
text(cp0, (540, 1050), "which way is it turning?");
|
|
187
|
+
size(cp0, 22); color(cp0, #9ec9e8); opacity(cp0, 0.85);
|
|
188
|
+
text(cp1, (540, 1050), "two different objects, turning opposite ways");
|
|
189
|
+
size(cp1, 22); color(cp1, #9ec9e8); opacity(cp1, 0.0);
|
|
190
|
+
text(cp2, (481, 1045), "one cue is enough — near things draw bigger");
|
|
191
|
+
size(cp2, 35);
|
|
192
|
+
color(cp2, #9ec9e8);
|
|
193
|
+
opacity(cp2, 0);
|
|
194
|
+
|
|
195
|
+
text(a2, (540, 1140), "the same picture, from two different objects");
|
|
196
|
+
size(a2, 19); color(a2, #f0f4f8); opacity(a2, 0.0);
|
|
197
|
+
text(l0, (300, 1470), "as shown");
|
|
198
|
+
size(l0, 17); color(l0, fg); opacity(l0, 0.0);
|
|
199
|
+
text(l1, (780, 1470), "mirrored, turning the other way");
|
|
200
|
+
size(l1, 17); color(l1, fg); opacity(l1, 0.0);
|
|
201
|
+
text(f1, (540, 1548), "flat: the two differ by exactly zero, every frame");
|
|
202
|
+
size(f1, 19); color(f1, fg); opacity(f1, 0.0);
|
|
203
|
+
text(f2, (540, 1586), "with perspective: by 54% of the figure's own radius");
|
|
204
|
+
size(f2, 19); color(f2, #e8a33d); opacity(f2, 0.0);
|
|
205
|
+
text(end, (540, 1676), "your eye is not failing — it is being handed two answers");
|
|
206
|
+
size(end, 20); color(end, #f0f4f8); opacity(end, 0.0);
|
|
207
|
+
glow(end, 0.4);
|
|
208
|
+
|
|
209
|
+
// ---- the reveal ---------------------------------------------------------------------
|
|
210
|
+
// Frame 0 is the tetrahedron already turning, which is the whole question. It is left
|
|
211
|
+
// alone long enough to flip on its own before anything is explained.
|
|
212
|
+
seq {
|
|
213
|
+
wait(13.4);
|
|
214
|
+
par { fade(cp0, 0.5); show(cp1, 0.6); show(a2, 0.5);
|
|
215
|
+
seq { wait(0.8); par { show(l0, 0.5); show(l1, 0.5); } } wait(5.2); }
|
|
216
|
+
par { show(f1, 0.6); wait(3.0); }
|
|
217
|
+
par { to(pv, value, 1.0, 4.0, smooth);
|
|
218
|
+
seq { wait(0.8); fade(cp1, 0.4); show(cp2, 0.6); } wait(5.0); }
|
|
219
|
+
par { show(f2, 0.7); wait(3.2); }
|
|
220
|
+
par { show(end, 0.8); wait(4.0); }
|
|
221
|
+
}
|
|
222
|
+
wait(2.4);
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
title("Whiteboard flow");
|
|
2
|
+
canvas(1280, 720);
|
|
3
|
+
template("whiteboard");
|
|
4
|
+
hand(pencil.right, 0.72, (5, 3), under);
|
|
5
|
+
|
|
6
|
+
text(title, (640, 78), "How an idea becomes a result");
|
|
7
|
+
size(title, 42);
|
|
8
|
+
color(title, fg);
|
|
9
|
+
handwritten(title);
|
|
10
|
+
untraced(title);
|
|
11
|
+
|
|
12
|
+
rect(ideaBox, (229, 349), 250, 150);
|
|
13
|
+
outlined(ideaBox);
|
|
14
|
+
stroke(ideaBox, 3);
|
|
15
|
+
color(ideaBox, blue);
|
|
16
|
+
rough(ideaBox, 1, 1);
|
|
17
|
+
untraced(ideaBox);
|
|
18
|
+
|
|
19
|
+
text(ideaLabel, (245, 350), "Idea");
|
|
20
|
+
size(ideaLabel, 30);
|
|
21
|
+
color(ideaLabel, fg);
|
|
22
|
+
handwritten(ideaLabel);
|
|
23
|
+
untraced(ideaLabel);
|
|
24
|
+
|
|
25
|
+
arrow(toBuild, (380, 350), (500, 350));
|
|
26
|
+
stroke(toBuild, 4);
|
|
27
|
+
color(toBuild, coral);
|
|
28
|
+
rough(toBuild, 1, 1);
|
|
29
|
+
untraced(toBuild);
|
|
30
|
+
|
|
31
|
+
smartdraw(build, (640, 350), "asset:smartdraw/database.svg", 210);
|
|
32
|
+
untraced(build);
|
|
33
|
+
|
|
34
|
+
text(buildLabel, (640, 505), "Build");
|
|
35
|
+
size(buildLabel, 27);
|
|
36
|
+
color(buildLabel, fg);
|
|
37
|
+
handwritten(buildLabel);
|
|
38
|
+
untraced(buildLabel);
|
|
39
|
+
|
|
40
|
+
arrow(toResult, (780, 350), (900, 350));
|
|
41
|
+
stroke(toResult, 4);
|
|
42
|
+
color(toResult, coral);
|
|
43
|
+
rough(toResult, 1, 1);
|
|
44
|
+
untraced(toResult);
|
|
45
|
+
|
|
46
|
+
rect(resultBox, (1035, 350), 250, 150);
|
|
47
|
+
outlined(resultBox);
|
|
48
|
+
stroke(resultBox, 3);
|
|
49
|
+
color(resultBox, lime);
|
|
50
|
+
rough(resultBox, 1, 1);
|
|
51
|
+
untraced(resultBox);
|
|
52
|
+
|
|
53
|
+
text(resultLabel, (1035, 350), "Result");
|
|
54
|
+
size(resultLabel, 30);
|
|
55
|
+
color(resultLabel, fg);
|
|
56
|
+
handwritten(resultLabel);
|
|
57
|
+
untraced(resultLabel);
|
|
58
|
+
|
|
59
|
+
doodle(insight, (1100, 585), bulb, 105);
|
|
60
|
+
color(insight, gold);
|
|
61
|
+
rough(insight, 1, 1);
|
|
62
|
+
untraced(insight);
|
|
63
|
+
|
|
64
|
+
step("Write the question") {
|
|
65
|
+
seq {
|
|
66
|
+
write(title, 1.5);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
step("Start with the idea") {
|
|
71
|
+
seq {
|
|
72
|
+
draw(ideaBox, 0.8);
|
|
73
|
+
write(ideaLabel, 0.65);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
step("Build it") {
|
|
78
|
+
seq {
|
|
79
|
+
draw(toBuild, 0.5);
|
|
80
|
+
draw(build, 1.15);
|
|
81
|
+
write(buildLabel, 0.6);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
step("Reach the result") {
|
|
86
|
+
seq {
|
|
87
|
+
draw(toResult, 0.5);
|
|
88
|
+
draw(resultBox, 0.8);
|
|
89
|
+
write(resultLabel, 0.7);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
step("Finish with insight") {
|
|
94
|
+
seq {
|
|
95
|
+
draw(insight, 0.75);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
plot(plot, (591, 668), 90, 60, "x^2", (-3, 3));
|
|
100
|
+
color(plot, cyan);
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// achromat-cinematic.manic — chromatic aberration & its fix (annotated, dark)
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// The `achromat` capstone on a dark bench, where the coloured foci glow.
|
|
5
|
+
// Elevation lens: the CAMERA magnifies the focal region so the red/blue split
|
|
6
|
+
// is dramatic, and a `bracelabel` marks the aberration gap — which then closes
|
|
7
|
+
// as `run` sweeps in the doublet and the colours merge to one point.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
title("The Achromatic Doublet");
|
|
11
|
+
canvas("16:9");
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
achromat(ac, (540, 360));
|
|
15
|
+
|
|
16
|
+
// bracket the axial gap between the two foci (fades as they merge)
|
|
17
|
+
bracelabel(gap, (852, 406), (908, 406), "CA", 20); color(gap, red);
|
|
18
|
+
|
|
19
|
+
text(cap, (cx, h - 46), ""); color(cap, fg); size(cap, 24); bold(cap); display(cap); sticky(cap);
|
|
20
|
+
|
|
21
|
+
// ================= THE SCENE =================
|
|
22
|
+
say(cap, "one simple lens — but the colours refuse to agree…", 0.5);
|
|
23
|
+
seq {
|
|
24
|
+
wait(0.6);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
par {
|
|
28
|
+
run(ac, 8);
|
|
29
|
+
seq {
|
|
30
|
+
par { cam((880, 360), 2.4, smooth); zoom(1.7, 2.4, smooth); } // magnify the focal region
|
|
31
|
+
say(cap, "blue focuses NEARER, red FARTHER — chromatic aberration", 0.3);
|
|
32
|
+
wait(2.8);
|
|
33
|
+
say(cap, "now cement a flint element behind it — the achromat", 0.3);
|
|
34
|
+
fade(gap, 0.7); // the gap closes
|
|
35
|
+
wait(2.0);
|
|
36
|
+
say(cap, "…and the colours snap back to ONE sharp focus", 0.3);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
par { cam((cx, 360), 1.3, smooth); zoom(1.0, 1.3, smooth); }
|
|
40
|
+
wait(1.2);
|
|
41
|
+
|
|
42
|
+
// BEGIN WORKBENCH CANVAS
|
|
43
|
+
// Scene built visually. Every line is ordinary Manic — edit freely.
|
|
44
|
+
template("blueprint");
|
|
45
|
+
|
|
46
|
+
text(idea, (640, 126), "Start with an idea");
|
|
47
|
+
size(idea, 52);
|
|
48
|
+
align(idea, right);
|
|
49
|
+
color(idea, fg);
|
|
50
|
+
hidden(idea);
|
|
51
|
+
|
|
52
|
+
circle(focus, (494, 401), 118);
|
|
53
|
+
color(focus, cyan);
|
|
54
|
+
hidden(focus, center);
|
|
55
|
+
|
|
56
|
+
text(note, (640, 600), "Add, arrange, then animate.");
|
|
57
|
+
size(note, 26);
|
|
58
|
+
color(note, dim);
|
|
59
|
+
hidden(note);
|
|
60
|
+
|
|
61
|
+
text(label, (612, 367), "New text");
|
|
62
|
+
size(label, 32);
|
|
63
|
+
color(label, fg);
|
|
64
|
+
hidden(label, center);
|
|
65
|
+
|
|
66
|
+
step("Reveal") {
|
|
67
|
+
stagger(0.2) {
|
|
68
|
+
show(idea, 0.6);
|
|
69
|
+
show(focus, 0.7, overshoot);
|
|
70
|
+
show(note, 0.5);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
step("Focus") {
|
|
75
|
+
pulse(focus, 0.9);
|
|
76
|
+
flash(idea, gold, 0.9);
|
|
77
|
+
}
|
|
78
|
+
// END WORKBENCH CANVAS
|
|
79
|
+
|
|
80
|
+
label(gap, "label", (0, -48));
|
|
81
|
+
color(gap.label, fg);
|
|
82
|
+
|
|
83
|
+
caption(caption, "one word at a time", (291, 230), 24, gold);
|
|
84
|
+
|
|
85
|
+
text(label2, (310, 372), "New textdas");
|
|
86
|
+
size(label2, 32);
|
|
87
|
+
color(label2, fg);
|
|
88
|
+
|
|
89
|
+
dot(dot, (688, 408), 20);
|
|
90
|
+
color(dot, cyan);
|
|
91
|
+
|
|
92
|
+
dot(dot2, (995, 169), 2);
|
|
93
|
+
color(dot2, cyan);
|
|
94
|
+
|
|
95
|
+
text(label3, (616, 336), "New text");
|
|
96
|
+
size(label3, 32);
|
|
97
|
+
color(label3, fg);
|
|
98
|
+
|
|
99
|
+
link(link, gap, cap);
|
|
100
|
+
color(link, fg);
|
|
101
|
+
|
|
102
|
+
framebox(framebox, gap, 8, gold);
|
|
103
|
+
|
|
104
|
+
bracelabel(bracelabel, (582, 444), (802, 444), "label", 22);
|
|
105
|
+
color(bracelabel, fg);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// achromat.manic — chromatic aberration, and the fix (real optics)
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// The optics kit's capstone. A single lens can't focus all colours to one
|
|
5
|
+
// point: it bends blue more than red (its index is higher for blue — real
|
|
6
|
+
// dispersion), so blue focuses NEARER and red FARTHER. `run` then sweeps in the
|
|
7
|
+
// achromatic doublet (crown + flint) and the two foci slide back together to a
|
|
8
|
+
// single sharp point — the trick every camera and telescope lens uses.
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
title("The Achromatic Doublet");
|
|
12
|
+
canvas("16:9");
|
|
13
|
+
|
|
14
|
+
achromat(ac, (540, 360));
|
|
15
|
+
|
|
16
|
+
text(cap, (cx, h - 46), ""); color(cap, fg); size(cap, 24); bold(cap); display(cap); sticky(cap);
|
|
17
|
+
|
|
18
|
+
// ================= THE SCENE =================
|
|
19
|
+
say(cap, "one simple lens — but the colours don't agree…", 0.5);
|
|
20
|
+
wait(0.6);
|
|
21
|
+
|
|
22
|
+
par {
|
|
23
|
+
run(ac, 7);
|
|
24
|
+
seq {
|
|
25
|
+
say(cap, "blue focuses NEARER, red FARTHER — chromatic aberration", 0.3);
|
|
26
|
+
wait(2.6);
|
|
27
|
+
say(cap, "now add a flint element behind it — the achromatic doublet", 0.3);
|
|
28
|
+
wait(2.2);
|
|
29
|
+
say(cap, "…and the colours snap back to ONE sharp focus", 0.3);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
wait(1.2);
|