{"id":13411628,"url":"https://github.com/s0rg/quadtree","last_synced_at":"2025-04-30T06:25:43.450Z","repository":{"id":59047364,"uuid":"534270395","full_name":"s0rg/quadtree","owner":"s0rg","description":"Generic, zero-alloc, 100%-test covered Quadtree for golang","archived":false,"fork":false,"pushed_at":"2025-04-25T12:04:07.000Z","size":29,"stargazers_count":37,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-25T13:20:48.771Z","etag":null,"topics":["data-structures","generics","golang","golang-library","quadtree"],"latest_commit_sha":null,"homepage":"","language":"Go","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/s0rg.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-08T15:15:22.000Z","updated_at":"2025-04-25T12:02:48.000Z","dependencies_parsed_at":"2024-06-20T15:42:36.323Z","dependency_job_id":"e8df0c59-e374-4452-a123-d8fa186cc5ad","html_url":"https://github.com/s0rg/quadtree","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Fquadtree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Fquadtree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Fquadtree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0rg%2Fquadtree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s0rg","download_url":"https://codeload.github.com/s0rg/quadtree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251652946,"owners_count":21622042,"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":["data-structures","generics","golang","golang-library","quadtree"],"created_at":"2024-07-30T20:01:15.162Z","updated_at":"2025-04-30T06:25:43.443Z","avatar_url":"https://github.com/s0rg.png","language":"Go","readme":"[![PkgGoDev](https://pkg.go.dev/badge/github.com/s0rg/quadtree)](https://pkg.go.dev/github.com/s0rg/quadtree)\n[![License](https://img.shields.io/badge/license-MIT%20License-blue.svg)](https://github.com/s0rg/quadtree/blob/master/LICENSE)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/s0rg/quadtree)](go.mod)\n[![Tag](https://img.shields.io/github/v/tag/s0rg/quadtree?sort=semver)](https://github.com/s0rg/quadtree/tags)\n[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)\n\n[![CI](https://github.com/s0rg/quadtree/workflows/ci/badge.svg)](https://github.com/s0rg/quadtree/actions?query=workflow%3Aci)\n[![Go Report Card](https://goreportcard.com/badge/github.com/s0rg/quadtree)](https://goreportcard.com/report/github.com/s0rg/quadtree)\n[![Maintainability](https://qlty.sh/badges/ae1e81be-3dc3-4cf6-ae43-cd4b1344e765/maintainability.svg)](https://qlty.sh/gh/s0rg/projects/quadtree)\n[![Code Coverage](https://qlty.sh/badges/ae1e81be-3dc3-4cf6-ae43-cd4b1344e765/test_coverage.svg)](https://qlty.sh/gh/s0rg/projects/quadtree)\n![Issues](https://img.shields.io/github/issues/s0rg/quadtree)\n\n# quadtree\n\n[Quadtree](https://en.wikipedia.org/wiki/Quadtree) for golang.\n\n# features\n\n- generic\n- heavy optimized\n- zero-alloc\n- 100% test coverage\n\n# example\n```go\nimport (\n    \"log\"\n\n    \"github.com/s0rg/quadtree\"\n)\n\nfunc main() {\n    // width, height and max depth for new tree\n    tree := quadtree.New[int](100.0, 100.0, 4)\n\n    // add some points\n    tree.Add(10.0, 10.0, 5.0, 5.0, 1)\n    tree.Add(15.0, 20.0, 10.0, 10.0, 2)\n    tree.Add(40.0, 10.0, 4.0, 4.0, 3)\n    tree.Add(90.0, 90.0, 5.0, 8.0, 4)\n\n    val, ok := tree.Get(9.0, 9.0, 11.0, 11.0)\n    if !ok {\n        log.Fatal(\"not found\")\n    }\n\n    log.Println(val) // should print 1\n\n    const (\n        distance = 20.0\n        count = 2\n    )\n\n    tree.KNearest(80.0, 80.0, distance, count, func(x, y, w, h float64, val int) {\n        log.Printf(\"(%f, %f, %f, %f) = %d\", x, y, w, h, val)\n    })\n\n    // output: (90.000000, 90.000000, 5.000000, 8.000000) = 4\n}\n```\n\n# benchmark\n\n```\ngoos: linux\ngoarch: amd64\npkg: github.com/s0rg/quadtree\ncpu: AMD Ryzen 5 5500U with Radeon Graphics\nBenchmarkNode/Insert-12             14974236      71.07 ns/op       249 B/op          0 allocs/op\nBenchmarkNode/Del-12                6415672       188.3 ns/op         0 B/op          0 allocs/op\nBenchmarkNode/Search-12             21702474      51.83 ns/op         0 B/op          0 allocs/op\nBenchmarkTree/Add-12                18840514      67.83 ns/op       241 B/op          0 allocs/op\nBenchmarkTree/Get-12                21204722      55.46 ns/op         0 B/op          0 allocs/op\nBenchmarkTree/Move-12               8061322       147.5 ns/op         0 B/op          0 allocs/op\nBenchmarkTree/ForEach-12            18723290      58.60 ns/op         0 B/op          0 allocs/op\nBenchmarkTree/KNearest-12           3595956       324.7 ns/op         0 B/op          0 allocs/op\nBenchmarkTree/Del-12                6234123       193.1 ns/op         0 B/op          0 allocs/op\nPASS\nok      github.com/s0rg/quadtree    12.666s\n```\n","funding_links":[],"categories":["Data Structures and Algorithms","数据结构与算法","Data Integration Frameworks"],"sub_categories":["Miscellaneous Data Structures and Algorithms","杂项数据结构和算法"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0rg%2Fquadtree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs0rg%2Fquadtree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0rg%2Fquadtree/lists"}