{"id":18656054,"url":"https://github.com/geometryzen/g20mono","last_synced_at":"2026-01-12T02:32:02.359Z","repository":{"id":235501251,"uuid":"790765312","full_name":"geometryzen/g20mono","owner":"geometryzen","description":"Geometric Algebra 2D Graphics Library Monorepo","archived":false,"fork":false,"pushed_at":"2024-10-29T13:30:24.000Z","size":27519,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-29T16:06:37.011Z","etag":null,"topics":["2d","algebra","canvas","geometric","graphics","library","svg"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geometryzen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-23T13:41:06.000Z","updated_at":"2024-10-29T13:30:28.000Z","dependencies_parsed_at":"2024-05-02T08:02:44.168Z","dependency_job_id":"a699ba7f-49e0-43d5-b562-96d04e4299fa","html_url":"https://github.com/geometryzen/g20mono","commit_stats":{"total_commits":367,"total_committers":1,"mean_commits":367.0,"dds":0.0,"last_synced_commit":"8269a0c27ca86b7c3f03fd5ab3f5db9d06fe1951"},"previous_names":["geometryzen/g20","geometryzen/g2o-mono","geometryzen/g20mono"],"tags_count":163,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fg20mono","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fg20mono/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fg20mono/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fg20mono/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geometryzen","download_url":"https://codeload.github.com/geometryzen/g20mono/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247557192,"owners_count":20958037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d","algebra","canvas","geometric","graphics","library","svg"],"created_at":"2024-11-07T07:21:41.688Z","updated_at":"2026-01-12T02:32:02.331Z","avatar_url":"https://github.com/geometryzen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# G20 Geometric Algebra 2D Graphics Monorepo\n\n## Overview\n\nA modern JavaScript (TypeScript) suite of ESM modules for rendering 2D graphics using Scalable Vector Graphics (SVG) in the browser.\n\n![](./images/ramp.png)\n\n[Live Demo of Block on a Ramp in STEMCstudio](https://www.stemcstudio.com/gists/38aa01dfe4eca3a22d3f972d17c17df2)\n\n## Features and Benefits\n\n-   Cartesian (y increasing upwards), SVG (y increasing downwards), and other Coordinate Systems.\n-   Fine-Grained Reactivity for efficient updating.\n-   Dynamic diagram updating using reactive position, attitude, and scale properties to link shapes and text together.\n-   Geometric Algebra enabled multivectors for shape position and attitude properties providing coordinate-free and coordinate-based manipulation.\n-   Accurate (automatically generated) type definitions and API documentation.\n-   ESM, System, CommonJS, and UMD distribution formats.\n-   Modular package organization so that you only have to download what you need.\n\n## Status\n\nAll packages are published together with the same version number.\n\n[![version](https://img.shields.io/npm/v/@g20/core.svg)](https://www.npmjs.com/package/@g20/core)\n\n[![npm downloads](https://img.shields.io/npm/dm/@g20/core.svg)](https://npm-stat.com/charts.html?package=@g20/core\u0026from=2024-03-27)\n\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING.md)\n\n## Tutorials and Examples\n\nA book is in the works.\n\nIn the meantime, a search of `@g20` in the STEMCarXiv (STEMCstudio archive) at [STEMCstudio](https://www.stemcstudio.com) should produce many working examples.\n\n## Packages and API Documentation\n\n### [@g20/core](https://geometryzen.github.io/g20mono/core)\n\nThe core library that renders SVG. Required.\n\n### [@g20/svg](https://geometryzen.github.io/g20mono/svg)\n\nThe SVG librray for creating SVG in the browser.\n\n### [@g20/reactive](https://geometryzen.github.io/g20mono/reactive)\n\nThe shared reactive signals library. Required. You will only need to use this directly if you are creating your own shape extensions.\n\n### [@g20/canvas](https://geometryzen.github.io/g20mono/canvas)\n\nThe HTML Canvas rendering library. Optional. Facilitates the generation of png images.\n\n[Live Demo of CanvasView in STEMCstudio](https://www.stemcstudio.com/gists/beb5ee1690bf44e9429cbeeb7cd7d5a6)\n\nHint: Launch the Program from the toolbar then right-click the output to obtain an image.\n\n### [@g20/euclid](https://geometryzen.github.io/g20mono/euclid)\n\nProvides functions for computing circle and line intersections. Optional.\n\n![](./images/euclid.png)\n\n[Live Demo of Euclid's Elements Construction in STEMCstudio](https://www.stemcstudio.com/gists/28890bad7794270d959330e2eba82cc7)\n\n### [@g20/gradient](https://geometryzen.github.io/g20mono/gradient)\n\nProvides Linear and Radial Gradients. Optional. Gradients are instances of ColorProvider(s), which can be used for shape `fill` and `stroke` properties. You may extend @g20 with custom ColorProvider(s).\n\n![](./images/gradient.png)\n\n[Live Demo of Linear and Radial Gradients in STEMCstudio](https://www.stemcstudio.com/gists/e82033ebe82bc5fd991a33a820cb7f83)\n\n### [@g20/graphics](https://geometryzen.github.io/g20mono/graphics)\n\nProvides RegularPolygon, RoundedRectangle, and Star shapes. Optional. Shapes such as these are extensions of the Path class. You may extend @g20 with custom Path based classes.\n\n![](./images/graphics.png)\n\n[Live Demo of Graphics shapes in STEMCstudio](https://www.stemcstudio.com/gists/8f873d1ef37536795b40883aa2e77c01)\n\n### [@g20/grid](https://geometryzen.github.io/g20mono/grid)\n\nProvides a coordinate grid (Grid) and coordinate axes (Axes). Optional. The Axes and Grid classes extends Group and provide examples of extending @g20 with custom shapes based upon composition of existing shapes.\n\n![](./images/grid.png)\n\n[Live Demo of Grid in STEMCstudio](https://www.stemcstudio.com/gists/7106f94b7639ce77bbcf2fcc88b217db)\n\n### [@g20/player](https://geometryzen.github.io/g20mono/player)\n\nProvides a Player for controlling animation frame start, and pause. Optional.\n\n[Live Demo of Player in STEMCstudio](https://www.stemcstudio.com/gists/a88d400bc9176836bb4ff7f88340428a)\n\n### [@g20/mock](https://geometryzen.github.io/g20mono/mock)\n\nMock SVG DOM for Unit Testing\n\n### [@g20/browser](https://geometryzen.github.io/g20mono/browser)\n\nA bundle containing most of the modules described here especially designed for use in web pages without a module loader. The Universal Module Definition is supported.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometryzen%2Fg20mono","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeometryzen%2Fg20mono","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometryzen%2Fg20mono/lists"}