{"id":20425265,"url":"https://github.com/catseye/cyclobots","last_synced_at":"2025-06-21T22:41:46.980Z","repository":{"id":142239901,"uuid":"171522795","full_name":"catseye/Cyclobots","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/Cyclobots : Dynamical system/desk toy thing from 1994, now implemented with PixiJS","archived":false,"fork":false,"pushed_at":"2023-12-11T16:58:54.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-05T04:44:55.394Z","etag":null,"topics":["desk-toy","dynamic-system","dynamical-systems","gewgaw","pixi-js","self-attractor"],"latest_commit_sha":null,"homepage":"https://catseye.tc/installation/Cyclobots","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catseye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-02-19T17:58:38.000Z","updated_at":"2023-10-29T16:01:12.000Z","dependencies_parsed_at":"2025-01-15T15:08:39.699Z","dependency_job_id":"8b908509-cda0-45c2-893b-1c6c7aa342b1","html_url":"https://github.com/catseye/Cyclobots","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/catseye/Cyclobots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FCyclobots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FCyclobots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FCyclobots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FCyclobots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/Cyclobots/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FCyclobots/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261205690,"owners_count":23124813,"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":["desk-toy","dynamic-system","dynamical-systems","gewgaw","pixi-js","self-attractor"],"created_at":"2024-11-15T07:12:44.454Z","updated_at":"2025-06-21T22:41:41.970Z","avatar_url":"https://github.com/catseye.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Cyclobots\n=========\n\n_Try it online_ [@ catseye.tc](https://catseye.tc/installation/Cyclobots)\n| _See also:_ [Chzrxl](https://codeberg.org/catseye/Chzrxl#chzrxl)\n∘ [noit o' mnain worb](https://codeberg.org/catseye/noit-o-mnain-worb#noit-o-mnain-worb)\n\n![screenshot](https://static.catseye.tc/images/screenshots/Cyclobots.jpg)\n\nThis is the reference distribution for **Cyclobots**, a dynamical system\ndesk toy automaton thing put together by Chris Pressey in 1994.  It consists\nof a number of virtual turtle robots called \"cyclobots\".  Each cyclobot moves\nforward with a constant velocity, but constantly adjusts its trajectory to try\nto follow exactly one other cyclobot.  No cyclobot is followed by more than one\ncyclobot.\n\nA group of cyclobots tends to fall into one of several semi-stable patterns.\nThe simplest of these is just a rotating circle, but more complex,\n[trefoil][]-like patterns are common.\n\nYou can watch it online here: **[Cyclobots installation at catseye.tc][]**.\n\nTo run it locally, clone this repository and open\n[demo/cyclobots.html](demo/cyclobots.html) in a web browser such as\nFirefox.  (Note that, if opened as a local file, the browser may fall back\nto canvas rendering; to ensure that WebGL is used, you can\n[start a local server][], but to be frank it doesn't seem to make much difference\nat this stage.)\n\nThe core behaviour is implemented in [src/cyclobots.js](src/cyclobots.js) and\ndoes not rely on PixiJS or any other display layer.\n\nThe PixiJS driver and visuals are defined in\n[demo/cyclobots-pixi-launcher.js](demo/cyclobots-pixi-launcher.js).\n\n### History ###\n\nThe first implementation of Cyclobots, now lost, was in Visual Basic 3.0, in\n1994.  (Let's call it version 1.0.)  Some things it supported that subsequent\nimplementations haven't yet replicated include:\n\n*   the cyclobots would collide with each other; a cyclobot would be unable\n    to pass through another cyclobot.\n*   the user could click the left (or right) mouse button to attract (or repel)\n    all the cyclobots towards (or away from) that point instead of each other.\n\nIn 2013, Cyclobots was [re-implemented in Javascript][], and this implementation\nresided in the [HTML5 Gewgaws distribution][].  (Let's call this one version 2.0).\n\nIn 2019, this Javascript implementation was cleaned up and re-fitted to use\n[PixiJS][], and that is the version in this repository (which we will call\nversion 2.1 or greater).  Since PixiJS uses WebGL when possible, this version\nhas the potential to have much nicer visuals than the previous versions;\nhowever, it is still a work-in-progress in this regard.\n\n[trefoil]: https://en.wikipedia.org/wiki/Trefoil_knot\n[Cyclobots installation at catseye.tc]: https://catseye.tc/installation/Cyclobots\n[HTML5 Gewgaws distribution]: https://catseye.tc/distribution/HTML5%20Gewgaws%20distribution\n[PixiJS]: http://www.pixijs.com/\n[start a local server]: https://web.archive.org/web/20190117102459/https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally#run-local-server\n[re-implemented in Javascript]: https://catseye.tc/article/News.md#id-been-meaning-to-re-implement-this-for-ages\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fcyclobots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fcyclobots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fcyclobots/lists"}