{"id":26159632,"url":"https://github.com/virxec/dubins_paths","last_synced_at":"2025-07-09T16:04:23.534Z","repository":{"id":57622183,"uuid":"411237665","full_name":"VirxEC/dubins_paths","owner":"VirxEC","description":"Rust code for calculating Dubin's Paths","archived":false,"fork":false,"pushed_at":"2023-12-19T05:20:30.000Z","size":79,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-12-20T13:54:37.604Z","etag":null,"topics":["dubins-path","physics","rlbot","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/dubins_paths","language":"Rust","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/VirxEC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-09-28T10:35:12.000Z","updated_at":"2023-12-24T13:43:02.307Z","dependencies_parsed_at":"2023-12-24T13:43:01.623Z","dependency_job_id":"3d53a270-9819-49fe-a130-03b2bbcef608","html_url":"https://github.com/VirxEC/dubins_paths","commit_stats":{"total_commits":45,"total_committers":1,"mean_commits":45.0,"dds":0.0,"last_synced_commit":"2762774bdbe14b36463c80b8083ca49b2da959c9"},"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VirxEC%2Fdubins_paths","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VirxEC%2Fdubins_paths/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VirxEC%2Fdubins_paths/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VirxEC%2Fdubins_paths/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VirxEC","download_url":"https://codeload.github.com/VirxEC/dubins_paths/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243025749,"owners_count":20223859,"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":["dubins-path","physics","rlbot","rust"],"created_at":"2025-03-11T11:33:06.409Z","updated_at":"2025-03-11T11:33:23.643Z","avatar_url":"https://github.com/VirxEC.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dubin's Paths\n\n[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)\n\nRust code for calculating Dubin's Paths\n\nCredit to [Andrew Walker](https://github.com/AndrewWalker) for the [original C code](https://github.com/AndrewWalker/Dubins-Curves)\n\nI've ported the code to Rust and documented everything that I could understand. Documentation in the original repository was minimal.\n\n## Quick example\n\n```rust\nuse dubins_paths::{DubinsPath, PI, PosRot, Result as DubinsResult};\n\n// PosRot represents the car's (Pos)ition and (Rot)ation\n// Where x and y are the coordinates on a 2d plane\n// and theta is the orientation of the car's front in radians\n\n// The starting position and rotation\n// PosRot::from_floats can also be used for const contexts\nconst q0: PosRot = PosRot::from_floats(0., 0., PI / 4.);\n\n// The target end position and rotation\n// PosRot implements From\u003c[f32; 3]\u003e\nlet q1 = [100., -100., PI * (3. / 4.)].into();\n\n// The car's turning radius (must be \u003e 0)\n// This can be calculated by taking a cars angular velocity and dividing it by the car's forward velocity\n// `turn radius = ang_vel / forward_vel`\nlet rho = 11.6;\n\n// Calculate the shortest possible path between these two points with the given turning radius\nlet shortest_path_possible: DubinsResult\u003cDubinsPath\u003e = DubinsPath::shortest_from(q0, q1, rho);\n\n// Assert that the path was found!\nassert!(shortest_path_possible.is_ok());\n```\n\nDubinsPath has many methods you should look into, such as length, extract_subpath, sample, and sample_many.\n\n## Features\n\n* `glam` - Use a [`glam`](https://crates.io/crates/glam) compatible API\n* `f64` - By default, the library uses `f32` precision and the equivalent `glam::f32` structs if that feature is enabled. Setting `f64` changes all numbers to 64-bit precision, and uses `glam::f64` vector types\n\n## More documentation\n\nLooking for some more detailed documentation? Head on over to the [docs.rs](https://docs.rs/dubins_paths/) page!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirxec%2Fdubins_paths","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvirxec%2Fdubins_paths","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirxec%2Fdubins_paths/lists"}