{"id":20625708,"url":"https://github.com/toadharvard/catradar","last_synced_at":"2026-07-10T15:32:24.805Z","repository":{"id":261038452,"uuid":"872654124","full_name":"toadharvard/catradar","owner":"toadharvard","description":"Like flightradar but with cats","archived":false,"fork":false,"pushed_at":"2025-01-25T18:44:29.000Z","size":75,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-01T21:00:52.325Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/toadharvard.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":"2024-10-14T20:28:18.000Z","updated_at":"2025-01-25T18:44:31.000Z","dependencies_parsed_at":"2025-01-24T19:26:57.782Z","dependency_job_id":"58ee2361-fabb-465a-90cc-dceb418b416f","html_url":"https://github.com/toadharvard/catradar","commit_stats":null,"previous_names":["toadharvard/catradar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/toadharvard/catradar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toadharvard%2Fcatradar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toadharvard%2Fcatradar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toadharvard%2Fcatradar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toadharvard%2Fcatradar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toadharvard","download_url":"https://codeload.github.com/toadharvard/catradar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toadharvard%2Fcatradar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35335897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-16T13:10:41.655Z","updated_at":"2026-07-10T15:32:24.787Z","avatar_url":"https://github.com/toadharvard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# catradar\n\u003cimg src=https://github.com/user-attachments/assets/8430ef08-1c38-43b6-b5d8-1d1980ac0bd2 alt=\"logo\" width=\"100\" align=\"right\"\u003e\n\nCatradar — инструмент для запуска симуляции взаимодействия объектов (далее котов) на ограниченной карте и логгирования их взаимодействия.\n\n## Правила взаимодействия\nВзаимодействие котов между собой определяется по следующим правилам:\n1. Если два кота находятся на расстоянии не превышающем `R0`, то они пытаются начать драку с вероятностью 1.\n\n2. Если два кота находятся на расстоянии `R1`, там, что `R1 \u003e R0`, они начинают шипеть с вероятностью обратно пропорциональной квадрату расстояния между ними.\n\n3. Если вокруг кота нет соперников он перемещается согласно текущему правилу.\n\nПеремещение котов картой размера `X` на `Y`\n\n## Возможности\n\nНа текущий момент приложение:\n1. Обрабатывает и отрисовывает более чем 1 миллион котов на карте за 50 мс\n2. Логгирует и подсвечивает их взаимодействие\n3. Предоставляет три паттерна движения\n    - Свободное\n    - Карусельное\n    - С обработкой столкновений\n4. Позволяет влиять на движение посредством курсора\n5. Позволяет регулировать следущие параметры без перезапуска симуляции:\n    - Выбор коэффициента отрисовки\n    - Установку пресета для начальной позиции\n    - Выбор паттерна движения\n    - Изменение скорости движения\n    - Выбор функции расстояния взаимодействия\n6. Возможность осмотреть карту c помощью `WASD`, приблизить и удалиться на `Q` и `E`\n7. Ограничение \"количество котов меняющих за один период статус не превышает 250\" заменено более слабое \"количество котов в одной клетке виртуальной сетки карты с ребром `R1` не более `LIMIT`\"\n8. [Поддержка Metal, OpenGL, Vulkan в качестве бекенда, а так же Mac OS на M1, Intel и Windows и Linux на x86_64](https://docs.taichi-lang.org/docs/hello_world#supported-systems-and-backends)\n\n## Виды движения\n### Свободное\n\n![free](https://github.com/user-attachments/assets/7b9149fc-882d-4d1a-9edc-6534c3478c0c)\n\nНаиболее простая форма движения\n### Карусельное\n\n![carousel](https://github.com/user-attachments/assets/5808ea39-8bed-43f3-88db-2d352a3ffde9)\n\nКоты кружат в вальсе, образуя незамысловатые фигуры\n### С обработкой столкновений\n\n![collide](https://github.com/user-attachments/assets/d14b1c38-56dc-433d-9be3-554005dc9133)\n\nЕсли коты наталкиваются друг на друга, то сразу же разбегаются в разные стороны, избегая драки\n\n![cursor-push](https://github.com/user-attachments/assets/32563493-9050-4588-aebd-0ced209ff7f7)\n\nКлик по области с включенной опцией `Cursor Push` позволяет напугать котов и отолкнуть от себя\n\n## Для разработчиков\n### Начальная настройка\n```bash\nrye sync \u0026\u0026 rye run pre-commit install\n```\n\n### Запуск\n```bash\nrye run python -m src.catradar\n```\n\n### Запуск тестов\n```bash\nrye test\n```\n\n## Использованные инструменты\n\nДля реализации симуляции и GUI был выбран [taichi](https://github.com/taichi-dev/taichi). Вот так авторы описывают свой инструмент:\n\nTaichi Lang is an open-source, imperative, parallel programming language for high-performance numerical computation. It is embedded in Python and uses just-in-time (JIT) compiler frameworks, for example LLVM, to offload the compute-intensive Python code to the native GPU or CPU instructions.\n\n## Лицензия\nКод распространяется под лицензией MIT. Подробнее в файле [LICENCE](./LICENCE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoadharvard%2Fcatradar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoadharvard%2Fcatradar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoadharvard%2Fcatradar/lists"}