{"id":18656030,"url":"https://github.com/geometryzen/newton","last_synced_at":"2025-06-22T21:36:50.615Z","repository":{"id":59862447,"uuid":"538955580","full_name":"geometryzen/newton","owner":"geometryzen","description":"Physics Engine","archived":false,"fork":false,"pushed_at":"2023-06-09T17:42:42.000Z","size":789,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-07T07:41:45.636Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geometryzen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2022-09-20T11:33:52.000Z","updated_at":"2023-01-06T17:36:09.000Z","dependencies_parsed_at":"2024-09-24T16:00:51.739Z","dependency_job_id":"631b6fb3-5451-40c5-9568-4c08e4311fc6","html_url":"https://github.com/geometryzen/newton","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"346862a74873cde9ae3f760e850473e68676b4a4"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/geometryzen/newton","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fnewton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fnewton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fnewton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fnewton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geometryzen","download_url":"https://codeload.github.com/geometryzen/newton/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometryzen%2Fnewton/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260506668,"owners_count":23019419,"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":[],"created_at":"2024-11-07T07:21:33.129Z","updated_at":"2025-06-22T21:36:45.596Z","avatar_url":"https://github.com/geometryzen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @geometryzen/newton\nA Physics Engine for research and education using Geometric Algebra, and Units of Measure (optional).\n\nThe following metrics are supported:\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eDescription\u003c/th\u003e\u003cth\u003eAlgebra\u003c/th\u003e\u003cth\u003eclass\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eEuclidean 1D\u003c/td\u003e\u003ctd\u003eG(1,0)\u003c/td\u003e\u003ctd\u003eEngine1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eEuclidean 2D\u003c/td\u003e\u003ctd\u003eG(2,0)\u003c/td\u003e\u003ctd\u003eEngine2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eEuclidean 3D\u003c/td\u003e\u003ctd\u003eG(3,0)\u003c/td\u003e\u003ctd\u003eEngine3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSpacetime 1D\u003c/td\u003e\u003ctd\u003eG(1,1)\u003c/td\u003e\u003ctd\u003eEngineG11\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSpacetime 2D\u003c/td\u003e\u003ctd\u003eG(2,1)\u003c/td\u003e\u003ctd\u003eEngineG21\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n# Getting Started\n\nThe following code illustrates the basic flow. For working examples see [STEMCstudio](https://www.stemcstudio.com/examples).\n\n## Constructing the core simulation using the `Engine3` Euclidean 3D or G(3,0) Physics engine.\n\nThis example incorporates units of measure.\n\n```typescript\nimport {\n    Block3,\n    Engine3,\n    Geometric3,\n    Spring\n} from '@geometryzen/newton'\n\n//\n// Constants\n//\nconst e1 = Geometric3.e1\nconst e2 = Geometric3.e2\nconst e3 = Geometric3.e3\nconst kg = Geometric3.kilogram\nconst m = Geometric3.meter\nconst s = Geometric3.second\n\n//\n// Initialization\n//\nconst sim = new Engine3()\nconst Δt = 0.01 * s\n\n//\n// Add objects\n//\nconst width = 0.5 * m\nconst height = 0.1 * m\nconst depth = 0.5 * m\nconst block1 = new Block3(width, height, depth)\nconst block2 = new Block3(width, height, depth)\n\nblock1.M = 1 * kg\nblock2.M = 1 * kg\n\nblock1.X = -1.0 * e1 * m\nblock2.X = +1.0 * e1 * m\n\nsim.addBody(block1)\nsim.addBody(block2)\n\n//\n// Add forces\n//\nconst spring = new Spring(block1, block2)\nspring.restLength = 1 * m\nspring.stiffness = 1 * kg / (s * s)\nsim.addForceLaw(spring)\nspring.attach1 = (block1.width * e1 + 0 * block1.height * e2 + block1.depth * e3) / 2\n\n// Inside animation \"loop\"\nsim.advance(Δt.a, Δt.uom)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometryzen%2Fnewton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeometryzen%2Fnewton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometryzen%2Fnewton/lists"}