@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,129 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-geometry-dimension-reduction.manic
|
|
3
|
+
// Sphere → central cross-section → circle → diameter (3D → 2D → 1D).
|
|
4
|
+
// Geo kit: point, circle2, linecircle, segment, midpoint.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
|
|
7
|
+
title("Dimension Reduction — From Sphere to Diameter");
|
|
8
|
+
canvas("9:16");
|
|
9
|
+
template("blueprint");
|
|
10
|
+
watermark(manicMark,(220,175),"Made With Manic");
|
|
11
|
+
creator(me,"@anish2good name=Manic_Geometry tagline=Textbooks_in_motion yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=social safe=reels");
|
|
12
|
+
socials(me);
|
|
13
|
+
|
|
14
|
+
text(kicker,(540,164),"GEOMETRY BY DIMENSION"); size(kicker,21); bold(kicker); color(kicker,cyan); hidden(kicker);
|
|
15
|
+
text(headline,(540,228),"A sphere hides a circle — and a line"); size(headline,36); bold(headline); hidden(headline);
|
|
16
|
+
text(phase,(540,300),"3D · BEGIN WITH A SPHERE"); size(phase,23); bold(phase); color(phase,gold); hidden(phase);
|
|
17
|
+
text(narration,(540,1328),"A sphere extends in three independent directions."); size(narration,26); bold(narration); wrap(narration,850); hidden(narration);
|
|
18
|
+
text(principle,(540,1392),"Its radius is 3 units in every direction."); size(principle,20); color(principle,dim); hidden(principle);
|
|
19
|
+
equation(formula,(540,1488),`x^2+y^2+z^2=\textcolor{gold}{3^2}`,43); hidden(formula);
|
|
20
|
+
text(takeaway,(540,1572),"FIX A COORDINATE · LOSE A DIMENSION · KEEP THE MEASURE"); size(takeaway,18); bold(takeaway); color(takeaway,gold); hidden(takeaway);
|
|
21
|
+
|
|
22
|
+
// Settled isometric composition of the complete sphere inside the Creator
|
|
23
|
+
// media region. Starting here prevents an opening camera correction.
|
|
24
|
+
camera3((40.05,-39.35,23.41),(3.15,-2.45,-6.79),40);
|
|
25
|
+
|
|
26
|
+
sphere3(solid,(0,0,0),3); color(solid,blue); hidden(solid); tag(solid,spatial);
|
|
27
|
+
finish3(solid,"material=glass shading=smooth mesh=0.25 depth=0.36 shadow=0.16");
|
|
28
|
+
|
|
29
|
+
// A thin xz-plane begins outside the sphere and travels to y=0.
|
|
30
|
+
cube3(slicePlane,(0,-5,0),(7,0.08,7)); color(slicePlane,magenta); hidden(slicePlane); tag(slicePlane,spatial);
|
|
31
|
+
finish3(slicePlane,"material=glass shading=flat mesh=0.10 depth=0.18 shadow=0.06");
|
|
32
|
+
curve3(greatCircle,"3*cos(t)","0","3*sin(t)",(0,6.2832)); color(greatCircle,magenta); thick(greatCircle,0.065); untraced(greatCircle); hidden(greatCircle); tag(greatCircle,spatial);
|
|
33
|
+
|
|
34
|
+
// Screen-space geo construction aligned with the settled front projection.
|
|
35
|
+
let gx=518;
|
|
36
|
+
let gy=890;
|
|
37
|
+
let gr=145;
|
|
38
|
+
|
|
39
|
+
point(O,(gx,gy),"O"); hidden(O); hidden(O.label);
|
|
40
|
+
point(A,(gx+gr,gy),"R"); hidden(A); hidden(A.label);
|
|
41
|
+
circle2(section,O,A); color(section,magenta); stroke(section,4); untraced(section);
|
|
42
|
+
segment(radius2d,O,A); color(radius2d,gold); stroke(radius2d,4); untraced(radius2d);
|
|
43
|
+
|
|
44
|
+
// Two hidden points define a horizontal secant. The geo kit computes its exact
|
|
45
|
+
// circle intersections `ends0` and `ends1`, then derives their midpoint M.
|
|
46
|
+
point(lineLeft,(gx-gr-55,gy)); hidden(lineLeft);
|
|
47
|
+
point(lineRight,(gx+gr+55,gy)); hidden(lineRight);
|
|
48
|
+
linecircle(ends,lineLeft,lineRight,O,A);
|
|
49
|
+
hidden(ends0); hidden(ends1);
|
|
50
|
+
label(ends0,"A",(-18,-22)); hidden(ends0.label);
|
|
51
|
+
label(ends1,"B",(18,-22)); hidden(ends1.label);
|
|
52
|
+
segment(diameter,ends0,ends1); color(diameter,cyan); stroke(diameter,6); untraced(diameter);
|
|
53
|
+
midpoint(M,ends0,ends1); color(M,lime); hidden(M);
|
|
54
|
+
label(M,"M",(0,-24)); hidden(M.label);
|
|
55
|
+
|
|
56
|
+
step("the full three dimensional object") {
|
|
57
|
+
seq {
|
|
58
|
+
par { show(kicker,0.35); show(headline,0.55); show(phase,0.40); show(narration,0.45); show(principle,0.40); show(formula,0.55); }
|
|
59
|
+
show(solid,0.85);
|
|
60
|
+
par { pulse(solid,0.85); roll3(4,1.45,smooth); }
|
|
61
|
+
wait(0.70);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
step("fix one coordinate with a plane") {
|
|
66
|
+
seq {
|
|
67
|
+
par {
|
|
68
|
+
say(phase,"3D → 2D · TAKE A CENTRAL SLICE",0.45,smooth);
|
|
69
|
+
say(narration,"Move a plane to the centre and fix y=0.",0.55,smooth);
|
|
70
|
+
say(principle,"Only points shared by the sphere and plane survive.",0.50,smooth);
|
|
71
|
+
rewrite(formula,`y=0\quad\Longrightarrow\quad x^2+z^2=\textcolor{gold}{3^2}`,1.05,smooth);
|
|
72
|
+
show(slicePlane,0.35);
|
|
73
|
+
}
|
|
74
|
+
par {
|
|
75
|
+
shift3(slicePlane,(0,5,0),2.10,smooth);
|
|
76
|
+
show(greatCircle,0.25); draw(greatCircle,2.10,smooth);
|
|
77
|
+
}
|
|
78
|
+
par { pulse(greatCircle,0.75); to(solid,opacity,0.04,0.65,smooth); fade(slicePlane,0.65); }
|
|
79
|
+
// A generous margin makes the spatial circle settle at the same on-screen
|
|
80
|
+
// radius as the following geo-kit circle, avoiding a dimensional size jump.
|
|
81
|
+
view3(greatCircle,"front",1.65,smooth,3.10);
|
|
82
|
+
wait(0.60);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
step("the cross section becomes a geo circle") {
|
|
87
|
+
seq {
|
|
88
|
+
par {
|
|
89
|
+
say(phase,"2D · THE GREAT CIRCLE",0.45,smooth);
|
|
90
|
+
say(narration,"The surviving cross-section is a circle of radius 3.",0.55,smooth);
|
|
91
|
+
say(principle,"The geo kit binds the circle to centre O and radius point R.",0.50,smooth);
|
|
92
|
+
rewrite(formula,`x^2+z^2=9\quad\Longleftrightarrow\quad r=\textcolor{gold}{3}`,1.00,smooth);
|
|
93
|
+
fade(greatCircle,0.85);
|
|
94
|
+
draw(section,1.30,smooth);
|
|
95
|
+
}
|
|
96
|
+
par { show(O,0.25); show(O.label,0.25); show(A,0.25); show(A.label,0.25); draw(radius2d,0.85,smooth); }
|
|
97
|
+
par { pulse(section,0.75); pulse(radius2d,0.75); }
|
|
98
|
+
wait(0.70);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
step("a line finds the diameter") {
|
|
103
|
+
seq {
|
|
104
|
+
par {
|
|
105
|
+
say(phase,"2D → 1D · INTERSECT WITH A LINE",0.45,smooth);
|
|
106
|
+
say(narration,"A line through the centre meets the circle at exactly two points.",0.55,smooth);
|
|
107
|
+
say(principle,"The constructed segment AB is the circle's widest chord.",0.50,smooth);
|
|
108
|
+
rewrite(formula,`AB=2r=2(3)`,0.95,smooth);
|
|
109
|
+
}
|
|
110
|
+
par { show(ends0,0.25); show(ends1,0.25); show(ends0.label,0.25); show(ends1.label,0.25); draw(diameter,1.35,smooth); }
|
|
111
|
+
par { fade(radius2d,0.45); fade(A,0.35); fade(A.label,0.35); show(M,0.30); show(M.label,0.30); pulse(M,0.70); }
|
|
112
|
+
wait(0.70);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
step("only one measurable direction remains") {
|
|
117
|
+
seq {
|
|
118
|
+
par {
|
|
119
|
+
show(takeaway,0.45);
|
|
120
|
+
say(phase,"1D · THE DIAMETER",0.50,smooth);
|
|
121
|
+
say(narration,"Remove the surrounding circle. One segment—and one length—remains.",0.55,smooth);
|
|
122
|
+
say(principle,"3D sphere → 2D section → 1D diameter",0.55,smooth);
|
|
123
|
+
rewrite(formula,`\boxed{AB=\textcolor{gold}{6}\text{ units}}`,1.05,smooth);
|
|
124
|
+
fade(section,0.75); fade(O,0.40); fade(O.label,0.40);
|
|
125
|
+
}
|
|
126
|
+
par { pulse(diameter,0.90); pulse(formula,0.90); }
|
|
127
|
+
wait(2.00);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-incline-fbd.manic — the free-body diagram, textbook style
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// A block on an incline shown the classic physics-class way: the physical
|
|
5
|
+
// picture on the left with the force vectors ON the block (via the reusable
|
|
6
|
+
// `forces(id)` view on the `ramp` sim — gravity `mg`, normal `N`, friction `f`,
|
|
7
|
+
// and the acceleration `a`), and a free-body-diagram panel on the right drawing
|
|
8
|
+
// the same forces from a single point. `template("paper")` inks it; then `run`
|
|
9
|
+
// plays the slide with the vectors riding the block.
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
title("Block on an incline — the free-body diagram");
|
|
13
|
+
canvas("16:9");
|
|
14
|
+
template("paper");
|
|
15
|
+
|
|
16
|
+
text(hdr, (cx, 42), "Block on an incline — the free-body diagram"); color(hdr, fg); size(hdr, 24); bold(hdr); display(hdr);
|
|
17
|
+
|
|
18
|
+
// left: the incline sim, inked; its force vectors revealed by forces()
|
|
19
|
+
ramp(rp, (170, 470), 30);
|
|
20
|
+
outlined(rp.block); outline(rp.block, fg);
|
|
21
|
+
|
|
22
|
+
// right: the free-body diagram — the same four forces from one point
|
|
23
|
+
dot(o, (1000, 330), 6); color(o, fg);
|
|
24
|
+
text(fbdT, (1000, 205), "free-body diagram"); color(fbdT, dim); size(fbdT, 16); display(fbdT);
|
|
25
|
+
arrow(aN, (1000, 330), (955, 252)); color(aN, lime); stroke(aN, 3);
|
|
26
|
+
text(lN, (944, 240), "N"); color(lN, lime); size(lN, 18); display(lN);
|
|
27
|
+
arrow(af, (1000, 330), (1078, 285)); color(af, magenta); stroke(af, 3);
|
|
28
|
+
text(lf, (1086, 280), "f"); color(lf, magenta); size(lf, 18); display(lf);
|
|
29
|
+
arrow(ag, (1000, 330), (1000, 440)); color(ag, blue); stroke(ag, 3);
|
|
30
|
+
text(lg, (1010, 448), "mg"); color(lg, blue); size(lg, 18); display(lg);
|
|
31
|
+
arrow(aa, (1000, 330), (930, 372)); color(aa, red); stroke(aa, 3);
|
|
32
|
+
text(la, (908, 380), "a"); color(la, red); size(la, 18); display(la);
|
|
33
|
+
|
|
34
|
+
text(cap, (cx, h - 34), ""); color(cap, fg); size(cap, 19); display(cap);
|
|
35
|
+
|
|
36
|
+
// ============================== SCRIPT ==============================
|
|
37
|
+
say(cap, "three forces act on the block: gravity, the normal force, and friction", 0.4);
|
|
38
|
+
forces(rp, 0.9);
|
|
39
|
+
wait(1.0);
|
|
40
|
+
say(cap, "drawn from a single point, they make the free-body diagram →", 0.4);
|
|
41
|
+
wait(0.9);
|
|
42
|
+
say(cap, "their sum points down the slope, so the block accelerates and slides", 0.4);
|
|
43
|
+
run(rp, 5);
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-length-area-volume.manic — centimetres, square centimetres, cubes
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
title("Length, Area, Volume — Why the Units Change");
|
|
6
|
+
canvas("9:16");
|
|
7
|
+
template("blueprint");
|
|
8
|
+
watermark(manicMark, (220, 175), "Made With Manic");
|
|
9
|
+
creator(me, "@anish2good name=Manic_Math tagline=Textbooks_in_motion yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=social safe=reels");
|
|
10
|
+
socials(me);
|
|
11
|
+
|
|
12
|
+
text(kicker, (540,164), "THE MEASUREMENT LADDER"); size(kicker,21); bold(kicker); color(kicker,cyan); hidden(kicker);
|
|
13
|
+
text(headline, (540,228), "Why units become squared, then cubed"); size(headline,36); bold(headline); hidden(headline);
|
|
14
|
+
text(phase, (540,300), "1D · MEASURE LENGTH"); size(phase,23); bold(phase); color(phase,gold); hidden(phase);
|
|
15
|
+
text(narration, (540,1328), "A ruler counts how many unit segments fit along one direction."); size(narration,26); bold(narration); wrap(narration,850); hidden(narration);
|
|
16
|
+
text(principle, (540,1388), "One direction · centimetres"); size(principle,20); color(principle,dim); hidden(principle);
|
|
17
|
+
equation(measure, (540,1480), `L=\textcolor{cyan}{6}\text{ cm}`, 40); hidden(measure);
|
|
18
|
+
text(takeaway, (540,1560), "THE UNIT CHANGES BECAUSE THE NUMBER OF DIRECTIONS CHANGES"); size(takeaway,18); bold(takeaway); color(takeaway,gold); hidden(takeaway);
|
|
19
|
+
|
|
20
|
+
// This is the settled `view3(length,"front",...,1.65)` composition: the
|
|
21
|
+
// opening line is already inside the Creator media region, so frame one moves
|
|
22
|
+
// the mathematics rather than jolting the camera into place.
|
|
23
|
+
camera3((0.26,-33.6,-4.14),(0.26,-2,-4.14),40);
|
|
24
|
+
|
|
25
|
+
line3(length, (-3,-2,0), (3,-2,0)); color(length,cyan); thick(length,0.07); untraced(length); tag(length,areaSkin);
|
|
26
|
+
point3(start, (-3,-2,0),0.15); color(start,fg); hidden(start);
|
|
27
|
+
point3(finish, (3,-2,0),0.15); color(finish,fg); hidden(finish);
|
|
28
|
+
point3(lengthMid, (0,-2,0),0.01); hidden(lengthMid);
|
|
29
|
+
text(lengthLabel,(0,0),"6 cm"); size(lengthLabel,22); bold(lengthLabel); color(lengthLabel,cyan); hidden(lengthLabel); pin3(lengthLabel,lengthMid);
|
|
30
|
+
|
|
31
|
+
// Six visible unit segments sit directly on the measured line.
|
|
32
|
+
for i in 0..6 {
|
|
33
|
+
line3(unit{i}, (-3+i,-2,0.10), (-2+i,-2,0.10));
|
|
34
|
+
color(unit{i},gold); thick(unit{i},0.035); untraced(unit{i}); hidden(unit{i}); tag(unit{i},units1d); tag(unit{i},areaSkin);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// The measured line sweeps four centimetres sideways to create 24 unit squares.
|
|
38
|
+
cube3(areaSheet, (0,0,0), (6,4,0.08)); color(areaSheet,blue); hidden(areaSheet); tag(areaSheet,areaSkin);
|
|
39
|
+
finish3(areaSheet,"material=glass shading=flat mesh=0.20 depth=0.25 shadow=0.10");
|
|
40
|
+
line3(areaBase,(-3,-2,0),(3,-2,0)); color(areaBase,cyan); thick(areaBase,0.05); hidden(areaBase); tag(areaBase,areaSkin);
|
|
41
|
+
for i in 1..4 {
|
|
42
|
+
let yy=-2+i;
|
|
43
|
+
line3(areaRow{i},(-3,yy,0.05),(3,yy,0.05)); color(areaRow{i},magenta); thick(areaRow{i},0.025); untraced(areaRow{i}); hidden(areaRow{i}); tag(areaRow{i},areaGrid); tag(areaRow{i},areaSkin);
|
|
44
|
+
}
|
|
45
|
+
for i in 0..7 {
|
|
46
|
+
let xx=-3+i;
|
|
47
|
+
line3(areaCol{i},(xx,-2,0.05),(xx,2,0.05)); color(areaCol{i},cyan); thick(areaCol{i},0.025); untraced(areaCol{i}); hidden(areaCol{i}); tag(areaCol{i},areaGrid); tag(areaCol{i},areaSkin);
|
|
48
|
+
}
|
|
49
|
+
point3(widthMid,(-3,0,0),0.01); hidden(widthMid);
|
|
50
|
+
text(widthLabel,(0,0),"4 cm"); size(widthLabel,22); bold(widthLabel); color(widthLabel,magenta); hidden(widthLabel); pin3(widthLabel,widthMid);
|
|
51
|
+
|
|
52
|
+
// The complete square-unit sheet rises three centimetres and leaves 72 cubes.
|
|
53
|
+
cube3(volumeBox,(0,0,1.5),(6,4,3)); color(volumeBox,blue); hidden(volumeBox);
|
|
54
|
+
finish3(volumeBox,"material=glass shading=flat mesh=0.48 depth=0.34 shadow=0.16");
|
|
55
|
+
line3(height0,(-3,-2,0),(-3,-2,3)); color(height0,lime); thick(height0,0.06); untraced(height0); hidden(height0); tag(height0,heightEdges);
|
|
56
|
+
line3(height1,(3,-2,0),(3,-2,3)); color(height1,lime); thick(height1,0.06); untraced(height1); hidden(height1); tag(height1,heightEdges);
|
|
57
|
+
line3(height2,(-3,2,0),(-3,2,3)); color(height2,lime); thick(height2,0.06); untraced(height2); hidden(height2); tag(height2,heightEdges);
|
|
58
|
+
line3(height3,(3,2,0),(3,2,3)); color(height3,lime); thick(height3,0.06); untraced(height3); hidden(height3); tag(height3,heightEdges);
|
|
59
|
+
point3(heightMid,(3,2,1.5),0.01); hidden(heightMid);
|
|
60
|
+
text(heightLabel,(0,0),"3 cm"); size(heightLabel,22); bold(heightLabel); color(heightLabel,lime); hidden(heightLabel); pin3(heightLabel,heightMid);
|
|
61
|
+
|
|
62
|
+
step("count one direction") {
|
|
63
|
+
seq {
|
|
64
|
+
par { show(kicker,0.35); show(headline,0.55); show(phase,0.40); show(narration,0.45); show(principle,0.40); show(measure,0.50); }
|
|
65
|
+
par { show(start,0.25); show(finish,0.25); draw(length,1.25,smooth); show(lengthLabel,0.35); }
|
|
66
|
+
par {
|
|
67
|
+
stagger(0.10) { for i in 0..6 { show(unit{i},0.10); } }
|
|
68
|
+
stagger(0.10) { for i in 0..6 { draw(unit{i},0.35,smooth); } }
|
|
69
|
+
}
|
|
70
|
+
wait(0.60);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
step("sweep out area") {
|
|
75
|
+
seq {
|
|
76
|
+
par {
|
|
77
|
+
say(phase,"2D · COUNT UNIT SQUARES",0.45,smooth);
|
|
78
|
+
say(narration,"Move the six-centimetre length through four new centimetres.",0.55,smooth);
|
|
79
|
+
say(principle,"Two perpendicular directions · square centimetres",0.45,smooth);
|
|
80
|
+
rewrite(measure,`A=\textcolor{cyan}{6}\times\textcolor{magenta}{4}=\textcolor{gold}{24}\text{ cm}^2`,1.10,smooth);
|
|
81
|
+
fade(start,0.30); fade(finish,0.30);
|
|
82
|
+
view3(areaSheet,"isometric",1.25,smooth,1.48);
|
|
83
|
+
}
|
|
84
|
+
par {
|
|
85
|
+
shift3(units1d,(0,4,0),2.60,smooth);
|
|
86
|
+
shift3(length,(0,4,0),2.60,smooth);
|
|
87
|
+
show(areaBase,0.15);
|
|
88
|
+
to(areaSheet,opacity,0.15,2.60,smooth);
|
|
89
|
+
show(widthLabel,0.35);
|
|
90
|
+
stagger(0.07) { for i in 1..4 { show(areaRow{i},0.10); } for i in 0..7 { show(areaCol{i},0.10); } }
|
|
91
|
+
stagger(0.07) { for i in 1..4 { draw(areaRow{i},0.55,smooth); } for i in 0..7 { draw(areaCol{i},0.55,smooth); } }
|
|
92
|
+
}
|
|
93
|
+
wait(0.70);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
step("see twenty four squares") {
|
|
98
|
+
seq {
|
|
99
|
+
say(narration,"Six columns by four rows: the floor contains 24 unit squares.",0.50,smooth);
|
|
100
|
+
par { pulse(areaGrid,0.75); pulse(areaSheet,0.75); }
|
|
101
|
+
wait(0.75);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
step("stack into volume") {
|
|
106
|
+
seq {
|
|
107
|
+
par {
|
|
108
|
+
say(phase,"3D · STACK UNIT CUBES",0.45,smooth);
|
|
109
|
+
say(narration,"Lift the complete 24-square layer through three centimetres.",0.55,smooth);
|
|
110
|
+
say(principle,"Three perpendicular directions · cubic centimetres",0.45,smooth);
|
|
111
|
+
rewrite(measure,`V=\textcolor{gold}{24}\times\textcolor{lime}{3}=\textcolor{gold}{72}\text{ cm}^3`,1.10,smooth);
|
|
112
|
+
fade(lengthLabel,0.30); fade(widthLabel,0.30);
|
|
113
|
+
}
|
|
114
|
+
par {
|
|
115
|
+
shift3(areaSkin,(0,0,3),2.70,smooth);
|
|
116
|
+
to(volumeBox,opacity,0.17,2.70,smooth);
|
|
117
|
+
show(heightEdges,0.15); draw(heightEdges,2.55,smooth);
|
|
118
|
+
show(heightLabel,0.35);
|
|
119
|
+
view3(volumeBox,"isometric",2.70,smooth,1.50);
|
|
120
|
+
}
|
|
121
|
+
wait(0.70);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
step("the measurement ladder") {
|
|
126
|
+
seq {
|
|
127
|
+
par {
|
|
128
|
+
show(takeaway,0.45);
|
|
129
|
+
say(phase,"LENGTH → AREA → VOLUME",0.50,smooth);
|
|
130
|
+
say(narration,"The number is not merely larger. The kind of unit has changed.",0.55,smooth);
|
|
131
|
+
say(principle,"cm measures a path · cm² tiles a surface · cm³ fills space",0.55,smooth);
|
|
132
|
+
view3(volumeBox,"fit",1.80,smooth,1.58);
|
|
133
|
+
}
|
|
134
|
+
par { pulse(volumeBox,0.85); pulse(heightEdges,0.85); roll3(3,1.60,smooth); }
|
|
135
|
+
wait(2.10);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-matrix-inverses.manic
|
|
3
|
+
// Two textbook inverse proofs, animated as structural shortcuts:
|
|
4
|
+
// (i) orthogonal columns give A^T A = I;
|
|
5
|
+
// (ii) a finite-order matrix gives A^3 = I.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
|
|
8
|
+
title("Two Matrix Inverse Proofs — See the Structure");
|
|
9
|
+
canvas("9:16");
|
|
10
|
+
template("paper");
|
|
11
|
+
watermark(manicMark,(220,175),"Made With Manic");
|
|
12
|
+
creator(me,"@anish2good name=Manic_Algebra tagline=Textbooks_in_motion yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=social safe=reels");
|
|
13
|
+
socials(me);
|
|
14
|
+
|
|
15
|
+
text(kicker,(540,150),"MATRICES · INVERSES · STRUCTURE");
|
|
16
|
+
size(kicker,21); bold(kicker); color(kicker,cyan); hidden(kicker);
|
|
17
|
+
|
|
18
|
+
text(headline,(540,218),"Two proofs without row reduction");
|
|
19
|
+
size(headline,38); bold(headline); hidden(headline);
|
|
20
|
+
|
|
21
|
+
text(part,(540,300),"(i) TEST THE COLUMNS");
|
|
22
|
+
size(part,23); bold(part); color(part,gold); hidden(part);
|
|
23
|
+
|
|
24
|
+
rect(stage,(540,805),930,930);
|
|
25
|
+
color(stage,panel); outline(stage,dim); opacity(stage,0.72); hidden(stage);
|
|
26
|
+
|
|
27
|
+
equation(given,(540,500),
|
|
28
|
+
`A=\frac{1}{9}\begin{bmatrix}-8&1&4\\4&4&7\\1&-8&4\end{bmatrix}`,
|
|
29
|
+
40);
|
|
30
|
+
hidden(given);
|
|
31
|
+
|
|
32
|
+
equation(work,(540,800),`A^{-1}\stackrel{?}{=}A^{\mathsf T}`,48);
|
|
33
|
+
hidden(work);
|
|
34
|
+
|
|
35
|
+
text(reason,(540,1095),"The inverse appears when a product becomes the identity.");
|
|
36
|
+
size(reason,24); wrap(reason,820); color(reason,dim); hidden(reason);
|
|
37
|
+
|
|
38
|
+
line(rule,(170,1235),(910,1235));
|
|
39
|
+
color(rule,cyan); stroke(rule,2); dashed(rule,12,9); opacity(rule,0.32);
|
|
40
|
+
untraced(rule);
|
|
41
|
+
|
|
42
|
+
equation(summary,(540,1435),
|
|
43
|
+
`\boxed{A^{\mathsf T}A=I\Rightarrow A^{-1}=A^{\mathsf T}}`,
|
|
44
|
+
39);
|
|
45
|
+
hidden(summary);
|
|
46
|
+
|
|
47
|
+
text(takeaway,(540,1540),"LOOK FOR A SHORT PRODUCT THAT RETURNS TO I");
|
|
48
|
+
size(takeaway,18); bold(takeaway); color(takeaway,gold); hidden(takeaway);
|
|
49
|
+
|
|
50
|
+
step("read the two inverse claims") {
|
|
51
|
+
seq {
|
|
52
|
+
par {
|
|
53
|
+
show(kicker,0.35); show(headline,0.55); show(part,0.40);
|
|
54
|
+
show(stage,0.45); draw(rule,0.75); show(reason,0.40);
|
|
55
|
+
}
|
|
56
|
+
show(given,0.65);
|
|
57
|
+
show(work,0.55);
|
|
58
|
+
wait(0.85);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
step("factor out the scale") {
|
|
63
|
+
seq {
|
|
64
|
+
say(reason,"Write A = M/9. Then ask whether M-transpose times M equals 81I.",0.50,smooth);
|
|
65
|
+
rewrite(work,
|
|
66
|
+
`M=\begin{bmatrix}-8&1&4\\4&4&7\\1&-8&4\end{bmatrix},\qquad A=\frac{1}{9}M`,
|
|
67
|
+
1.05,smooth);
|
|
68
|
+
wait(0.70);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
step("recognize orthogonal columns") {
|
|
73
|
+
seq {
|
|
74
|
+
say(reason,"Every column has squared length 81, and distinct columns have dot product 0.",0.55,smooth);
|
|
75
|
+
rewrite(work,
|
|
76
|
+
`\begin{aligned}
|
|
77
|
+
\|c_1\|^2&=64+16+1=81\\
|
|
78
|
+
\|c_2\|^2&=1+16+64=81\\
|
|
79
|
+
\|c_3\|^2&=16+49+16=81
|
|
80
|
+
\end{aligned}`,
|
|
81
|
+
1.10,smooth);
|
|
82
|
+
wait(0.55);
|
|
83
|
+
rewrite(work,
|
|
84
|
+
`\begin{aligned}
|
|
85
|
+
c_1^{\mathsf T}c_2&=-8+16-8=0\\
|
|
86
|
+
c_1^{\mathsf T}c_3&=-32+28+4=0\\
|
|
87
|
+
c_2^{\mathsf T}c_3&=4+28-32=0
|
|
88
|
+
\end{aligned}`,
|
|
89
|
+
1.10,smooth);
|
|
90
|
+
wait(0.70);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
step("the transpose is the inverse") {
|
|
95
|
+
seq {
|
|
96
|
+
say(reason,"Those six dot products are exactly the entries of M-transpose times M.",0.50,smooth);
|
|
97
|
+
rewrite(work,
|
|
98
|
+
`M^{\mathsf T}M=\begin{bmatrix}81&0&0\\0&81&0\\0&0&81\end{bmatrix}=81I`,
|
|
99
|
+
1.00,smooth);
|
|
100
|
+
wait(0.45);
|
|
101
|
+
rewrite(work,
|
|
102
|
+
`A^{\mathsf T}A=\frac{1}{81}M^{\mathsf T}M=I`,
|
|
103
|
+
0.90,smooth);
|
|
104
|
+
show(summary,0.55);
|
|
105
|
+
par { pulse(work,0.75); pulse(summary,0.75); }
|
|
106
|
+
wait(1.15);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
step("begin the second matrix") {
|
|
111
|
+
seq {
|
|
112
|
+
par {
|
|
113
|
+
fade(summary,0.35);
|
|
114
|
+
say(part,"(ii) FIND A POWER THAT RETURNS TO I",0.45,smooth);
|
|
115
|
+
say(reason,"For the second matrix, compute powers instead of augmenting [A | I].",0.55,smooth);
|
|
116
|
+
rewrite(given,
|
|
117
|
+
`A=\begin{bmatrix}1&-1&1\\2&-1&0\\1&0&0\end{bmatrix}`,
|
|
118
|
+
0.95,smooth);
|
|
119
|
+
rewrite(work,`A^{-1}\stackrel{?}{=}A^2`,0.80,smooth);
|
|
120
|
+
}
|
|
121
|
+
wait(0.85);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
step("square the matrix") {
|
|
126
|
+
seq {
|
|
127
|
+
say(reason,"First multiply A by itself. Keep this result for one more multiplication.",0.55,smooth);
|
|
128
|
+
rewrite(work,
|
|
129
|
+
`A^2=\begin{bmatrix}0&0&1\\0&-1&2\\1&-1&1\end{bmatrix}`,
|
|
130
|
+
1.00,smooth);
|
|
131
|
+
wait(0.80);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
step("the third power is identity") {
|
|
136
|
+
seq {
|
|
137
|
+
say(reason,"Now A squared times A returns exactly to the identity matrix.",0.50,smooth);
|
|
138
|
+
rewrite(work,
|
|
139
|
+
`A^3=A^2A=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}=I`,
|
|
140
|
+
1.10,smooth);
|
|
141
|
+
wait(0.65);
|
|
142
|
+
rewrite(work,`AA^2=A^3=I`,0.80,smooth);
|
|
143
|
+
rewrite(summary,
|
|
144
|
+
`\boxed{AA^2=I\Rightarrow A^{-1}=A^2}`,
|
|
145
|
+
0.85,smooth);
|
|
146
|
+
show(summary,0.50);
|
|
147
|
+
par { pulse(work,0.75); pulse(summary,0.75); }
|
|
148
|
+
wait(1.10);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
step("compare the two shortcuts") {
|
|
153
|
+
seq {
|
|
154
|
+
par {
|
|
155
|
+
show(takeaway,0.45);
|
|
156
|
+
say(part,"TWO STRUCTURES · ONE DEFINITION",0.45,smooth);
|
|
157
|
+
say(reason,"The inverse is whichever matrix multiplies A to give I.",0.50,smooth);
|
|
158
|
+
rewrite(given,
|
|
159
|
+
`\text{(i) orthogonality}\qquad\text{(ii) finite order}`,
|
|
160
|
+
0.90,smooth);
|
|
161
|
+
rewrite(work,
|
|
162
|
+
`\begin{aligned}
|
|
163
|
+
A^{\mathsf T}A=I&\Rightarrow A^{-1}=A^{\mathsf T}\\
|
|
164
|
+
AA^2=I&\Rightarrow A^{-1}=A^2
|
|
165
|
+
\end{aligned}`,
|
|
166
|
+
1.10,smooth);
|
|
167
|
+
fade(summary,0.45);
|
|
168
|
+
}
|
|
169
|
+
par { pulse(work,0.90); pulse(takeaway,0.90); }
|
|
170
|
+
wait(2.00);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-pulley.manic — a physics-textbook figure, manic style
|
|
3
|
+
// ----------------------------------------------------------------------------
|
|
4
|
+
// The classic "m over 2m+3m" pulley arrangement, drawn in the flat textbook
|
|
5
|
+
// look: the `paper` theme (white page, dark ink), a hatched `support` ceiling,
|
|
6
|
+
// a solid green pulley wheel, thin ropes, and outlined labelled mass boxes.
|
|
7
|
+
// A STATIC figure — pure base manic (`support`, `circle`, `line`, `rect`, `text`).
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
title("Pulley arrangement — m, 2m, 3m");
|
|
11
|
+
canvas("16:9");
|
|
12
|
+
template("paper");
|
|
13
|
+
|
|
14
|
+
// hatched ceiling + the rope suspending the pulley
|
|
15
|
+
support(ceil, (cx, 120), 340);
|
|
16
|
+
line(rope0, (cx, 120), (cx, 222)); color(rope0, fg); stroke(rope0, 2);
|
|
17
|
+
|
|
18
|
+
// the green pulley wheel (dark edge + hub)
|
|
19
|
+
circle(wheel, (cx, 300), 80); color(wheel, lime); outline(wheel, fg);
|
|
20
|
+
circle(hub, (cx, 300), 5); color(hub, fg); filled(hub);
|
|
21
|
+
|
|
22
|
+
// ropes leave the wheel vertically, left and right
|
|
23
|
+
line(ropeL, (560, 300), (560, 456)); color(ropeL, fg); stroke(ropeL, 2);
|
|
24
|
+
line(ropeR, (720, 300), (720, 456)); color(ropeR, fg); stroke(ropeR, 2);
|
|
25
|
+
|
|
26
|
+
// mass on the left: m
|
|
27
|
+
rect(mbox, (560, 485), 110, 58); outlined(mbox); outline(mbox, fg); stroke(mbox, 2);
|
|
28
|
+
text(ml, (560, 485), "m"); color(ml, fg); size(ml, 26); bold(ml);
|
|
29
|
+
|
|
30
|
+
// masses on the right: 2m, with 3m hanging below it
|
|
31
|
+
rect(m2, (720, 485), 120, 58); outlined(m2); outline(m2, fg); stroke(m2, 2);
|
|
32
|
+
text(l2, (720, 485), "2m"); color(l2, fg); size(l2, 26); bold(l2);
|
|
33
|
+
line(r23, (720, 514), (720, 596)); color(r23, fg); stroke(r23, 2);
|
|
34
|
+
rect(m3, (720, 625), 120, 58); outlined(m3); outline(m3, fg); stroke(m3, 2);
|
|
35
|
+
text(l3, (720, 625), "3m"); color(l3, fg); size(l3, 26); bold(l3);
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// textbook-statistical-dimensions.manic
|
|
3
|
+
// One variable → two variables → three variables, using the same 12 students.
|
|
4
|
+
// Stats kit: summary + correlation. 3D primitives reveal the third variable.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
|
|
7
|
+
title("Statistical Dimensions — From a List to a Data Cloud");
|
|
8
|
+
canvas("9:16");
|
|
9
|
+
template("blueprint");
|
|
10
|
+
watermark(manicMark,(220,175),"Made With Manic");
|
|
11
|
+
creator(me,"@anish2good name=Manic_Stats tagline=Textbooks_in_motion yt=zarigatongy x=@anish2good web=8gwifi.org/manic accent=cyan secondary=magenta footer=social safe=reels");
|
|
12
|
+
socials(me);
|
|
13
|
+
|
|
14
|
+
text(kicker,(540,164),"MULTIVARIATE STATISTICS"); size(kicker,21); bold(kicker); color(kicker,cyan); hidden(kicker);
|
|
15
|
+
text(headline,(540,228),"The same students, in more dimensions"); size(headline,33); bold(headline); hidden(headline);
|
|
16
|
+
text(phase,(540,300),"1D · ONE VARIABLE"); size(phase,23); bold(phase); color(phase,gold); hidden(phase);
|
|
17
|
+
text(narration,(540,1328),"Record only height. Each student needs one number."); size(narration,26); bold(narration); wrap(narration,850); hidden(narration);
|
|
18
|
+
text(principle,(540,1392),"Centre and spread describe one-dimensional data."); size(principle,20); color(principle,dim); hidden(principle);
|
|
19
|
+
equation(address,(540,1488),`\text{student}=\textcolor{cyan}{(\text{height})}`,39); hidden(address);
|
|
20
|
+
text(takeaway,(540,1572),"MORE VARIABLES DO NOT ADD PEOPLE · THEY ADD STRUCTURE"); size(takeaway,18); bold(takeaway); color(takeaway,gold); hidden(takeaway);
|
|
21
|
+
|
|
22
|
+
let vx=518;
|
|
23
|
+
let vy=610;
|
|
24
|
+
|
|
25
|
+
// Twelve students, measured in centimetres.
|
|
26
|
+
summary(one,(vx,vy),
|
|
27
|
+
"150 154 158 160 164 167 170 173 176 180 184 188",760,cyan);
|
|
28
|
+
untraced(one.line); hidden(one.dots); hidden(one.band);
|
|
29
|
+
hidden(one.meanmark); hidden(one.meanlbl);
|
|
30
|
+
hidden(one.medianmark); hidden(one.medianlbl);
|
|
31
|
+
hidden(one.readout); hidden(one.min); hidden(one.max);
|
|
32
|
+
|
|
33
|
+
// The same students: height and arm span. Target points remain hidden because
|
|
34
|
+
// the 1D dots will `become` these blueprints, preserving one identity per row.
|
|
35
|
+
correlation(two,(vx,vy),10,
|
|
36
|
+
"150 151 154 153 158 160 160 159 164 165 167 168 170 169 173 175 176 174 180 181 184 185 188 187",cyan);
|
|
37
|
+
hidden(two.points); untraced(two.line); hidden(two.r);
|
|
38
|
+
|
|
39
|
+
// Front view: x = height, screen-up z = arm span. Depth y stores shoe size.
|
|
40
|
+
// The camera begins in the exact 2D projection; its later isometric move is
|
|
41
|
+
// what makes the third variable perceptible.
|
|
42
|
+
camera3((0.53,-64.4,-5.34),(0.53,0,-5.34),40);
|
|
43
|
+
|
|
44
|
+
cube3(dataRoom,(0,0,3.1),(7.2,5.6,6.2)); color(dataRoom,blue); hidden(dataRoom); tag(dataRoom,multivariate);
|
|
45
|
+
finish3(dataRoom,"material=glass shading=flat mesh=0.17 depth=0.22 shadow=0.10");
|
|
46
|
+
|
|
47
|
+
line3(heightAxis,(-3.6,-2.8,0),(3.6,-2.8,0)); color(heightAxis,cyan); thick(heightAxis,0.045); untraced(heightAxis); hidden(heightAxis); tag(heightAxis,multivariate); tag(heightAxis,axes3d);
|
|
48
|
+
line3(shoeAxis,(-3.6,-2.8,0),(-3.6,2.8,0)); color(shoeAxis,magenta); thick(shoeAxis,0.045); untraced(shoeAxis); hidden(shoeAxis); tag(shoeAxis,multivariate); tag(shoeAxis,axes3d);
|
|
49
|
+
line3(armAxis,(-3.6,-2.8,0),(-3.6,-2.8,6.2)); color(armAxis,lime); thick(armAxis,0.045); untraced(armAxis); hidden(armAxis); tag(armAxis,multivariate); tag(armAxis,axes3d);
|
|
50
|
+
|
|
51
|
+
point3(heightEnd,(3.6,-2.8,0),0.01); hidden(heightEnd);
|
|
52
|
+
point3(shoeEnd,(-3.6,2.8,0),0.01); hidden(shoeEnd);
|
|
53
|
+
point3(armEnd,(-3.6,-2.8,6.2),0.01); hidden(armEnd);
|
|
54
|
+
text(heightLabel,(0,0),"height"); size(heightLabel,25); bold(heightLabel); color(heightLabel,cyan); hidden(heightLabel); label3(heightLabel,heightEnd,0.40);
|
|
55
|
+
text(shoeLabel,(0,0),"shoe size"); size(shoeLabel,25); bold(shoeLabel); color(shoeLabel,magenta); hidden(shoeLabel); label3(shoeLabel,shoeEnd,0.40);
|
|
56
|
+
text(armLabel,(0,0),"arm span"); size(armLabel,25); bold(armLabel); color(armLabel,lime); hidden(armLabel); label3(armLabel,armEnd,0.40);
|
|
57
|
+
|
|
58
|
+
// Normalised triples: (height, shoe-size depth, arm-span height).
|
|
59
|
+
point3(p0,(-3.167,-2.4,0.000),0.13); color(p0,cyan); hidden(p0); tag(p0,cloud); tag(p0,multivariate);
|
|
60
|
+
point3(p1,(-2.500,-1.6,0.333),0.13); color(p1,cyan); hidden(p1); tag(p1,cloud); tag(p1,multivariate);
|
|
61
|
+
point3(p2,(-1.833,-1.6,1.500),0.13); color(p2,cyan); hidden(p2); tag(p2,cloud); tag(p2,multivariate);
|
|
62
|
+
point3(p3,(-1.500,-0.8,1.333),0.13); color(p3,cyan); hidden(p3); tag(p3,cloud); tag(p3,multivariate);
|
|
63
|
+
point3(p4,(-0.833,-0.8,2.333),0.13); color(p4,cyan); hidden(p4); tag(p4,cloud); tag(p4,multivariate);
|
|
64
|
+
point3(p5,(-0.333, 0.0,2.833),0.13); color(p5,cyan); hidden(p5); tag(p5,cloud); tag(p5,multivariate);
|
|
65
|
+
point3(p6,( 0.167, 0.0,3.000),0.13); color(p6,cyan); hidden(p6); tag(p6,cloud); tag(p6,multivariate);
|
|
66
|
+
point3(p7,( 0.667, 0.8,4.000),0.16); color(p7,gold); hidden(p7); tag(p7,cloud); tag(p7,multivariate);
|
|
67
|
+
point3(p8,( 1.167, 0.8,3.833),0.13); color(p8,cyan); hidden(p8); tag(p8,cloud); tag(p8,multivariate);
|
|
68
|
+
point3(p9,( 1.833, 1.6,5.000),0.13); color(p9,cyan); hidden(p9); tag(p9,cloud); tag(p9,multivariate);
|
|
69
|
+
point3(p10,(2.500, 1.6,5.667),0.13); color(p10,cyan); hidden(p10); tag(p10,cloud); tag(p10,multivariate);
|
|
70
|
+
point3(p11,(3.167, 2.4,6.000),0.13); color(p11,cyan); hidden(p11); tag(p11,cloud); tag(p11,multivariate);
|
|
71
|
+
|
|
72
|
+
project3(frontShadow,p7,"xz"); color(frontShadow,gold); hidden(frontShadow); tag(frontShadow,multivariate);
|
|
73
|
+
link3(depthLink,p7,frontShadow,0.14); color(depthLink,magenta); thick(depthLink,0.025); hidden(depthLink); tag(depthLink,multivariate);
|
|
74
|
+
text(depthNote,(0,0),"shoe size adds depth"); size(depthNote,24); bold(depthNote); color(depthNote,gold); hidden(depthNote); label3(depthNote,p7,0.42);
|
|
75
|
+
|
|
76
|
+
step("one variable centre and spread") {
|
|
77
|
+
seq {
|
|
78
|
+
par { show(kicker,0.35); show(headline,0.55); show(phase,0.40); show(narration,0.45); show(principle,0.40); show(address,0.55); }
|
|
79
|
+
draw(one.line,0.75,smooth);
|
|
80
|
+
par { show(one.min,0.25); show(one.max,0.25); stagger(0.09) { for i in 0..12 { show(one.dot{i},0.18); } } }
|
|
81
|
+
par { to(one.band,opacity,0.12,0.65,smooth); show(one.meanmark,0.35); show(one.meanlbl,0.35); show(one.medianmark,0.35); show(one.medianlbl,0.35); }
|
|
82
|
+
par { show(one.readout,0.35); pulse(one.dots,0.75); }
|
|
83
|
+
wait(0.70);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
step("a second variable reveals relationship") {
|
|
88
|
+
seq {
|
|
89
|
+
par {
|
|
90
|
+
say(phase,"2D · TWO VARIABLES",0.45,smooth);
|
|
91
|
+
say(narration,"Add arm span. Every student now becomes an ordered pair.",0.55,smooth);
|
|
92
|
+
say(principle,"The slope of the cloud reveals how two measurements move together.",0.50,smooth);
|
|
93
|
+
rewrite(address,`\text{student}=\textcolor{cyan}{(\text{height},\text{arm span})}`,1.00,smooth);
|
|
94
|
+
fade(one.band,0.45); fade(one.meanmark,0.45); fade(one.meanlbl,0.45);
|
|
95
|
+
fade(one.medianmark,0.45); fade(one.medianlbl,0.45); fade(one.readout,0.45);
|
|
96
|
+
fade(one.line,0.45); fade(one.min,0.35); fade(one.max,0.35);
|
|
97
|
+
}
|
|
98
|
+
par {
|
|
99
|
+
for i in 0..12 { become(one.dot{i},two.p{i},1.75,smooth); }
|
|
100
|
+
}
|
|
101
|
+
par { draw(two.line,1.05,smooth); show(two.r,0.45); }
|
|
102
|
+
par { pulse(one.dots,0.75); pulse(two.r,0.75); }
|
|
103
|
+
wait(0.70);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
step("the front projection still looks two dimensional") {
|
|
108
|
+
seq {
|
|
109
|
+
say(narration,"A front view can hide depth: the 3D records still resemble the scatterplot.",0.55,smooth);
|
|
110
|
+
par {
|
|
111
|
+
fade(one.dots,0.80);
|
|
112
|
+
fade(two.line,0.80);
|
|
113
|
+
fade(two.r,0.80);
|
|
114
|
+
stagger(0.08) { for i in 0..12 { show(p{i},0.18); } }
|
|
115
|
+
show(heightAxis,0.35); show(armAxis,0.35);
|
|
116
|
+
draw(heightAxis,1.10,smooth); draw(armAxis,1.10,smooth);
|
|
117
|
+
show(heightLabel,0.30); show(armLabel,0.30);
|
|
118
|
+
}
|
|
119
|
+
wait(0.75);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
step("rotate to reveal the third variable") {
|
|
124
|
+
seq {
|
|
125
|
+
par {
|
|
126
|
+
say(phase,"3D · THREE VARIABLES",0.45,smooth);
|
|
127
|
+
say(narration,"Rotate the view. Shoe size reveals variation the flat plot could not show.",0.55,smooth);
|
|
128
|
+
say(principle,"A third coordinate turns a scatterplot into a multivariate cloud.",0.50,smooth);
|
|
129
|
+
rewrite(address,`\text{student}=\textcolor{cyan}{(\text{height},\text{arm span},\text{shoe})}`,1.10,smooth);
|
|
130
|
+
to(dataRoom,opacity,0.13,2.50,smooth);
|
|
131
|
+
show(shoeAxis,0.30); draw(shoeAxis,1.20,smooth); show(shoeLabel,0.30);
|
|
132
|
+
view3(multivariate,"isometric",2.65,smooth,1.52);
|
|
133
|
+
}
|
|
134
|
+
par { show(frontShadow,0.30); show(depthLink,0.35); show(depthNote,0.35); pulse(p7,0.75); }
|
|
135
|
+
wait(0.75);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
step("dimensions describe not duplicate") {
|
|
140
|
+
seq {
|
|
141
|
+
par {
|
|
142
|
+
show(takeaway,0.45);
|
|
143
|
+
say(phase,"12 STUDENTS · 36 MEASUREMENTS",0.50,smooth);
|
|
144
|
+
say(narration,"The sample size stayed twelve; each observation simply gained context.",0.55,smooth);
|
|
145
|
+
say(principle,"1D describes · 2D relates · 3D separates hidden structure",0.55,smooth);
|
|
146
|
+
view3(multivariate,"fit",1.60,smooth,1.58);
|
|
147
|
+
}
|
|
148
|
+
par { pulse(cloud,0.90); pulse(address,0.90); roll3(3,1.50,smooth); }
|
|
149
|
+
wait(1.90);
|
|
150
|
+
}
|
|
151
|
+
}
|