{"id":14097781,"url":"https://github.com/jbuckmccready/cavalier_contours","last_synced_at":"2025-04-08T10:23:26.732Z","repository":{"id":37778354,"uuid":"344249923","full_name":"jbuckmccready/cavalier_contours","owner":"jbuckmccready","description":"2D polyline/shape library for offsetting, combining, etc.","archived":false,"fork":false,"pushed_at":"2025-03-05T03:45:10.000Z","size":727,"stargazers_count":166,"open_issues_count":25,"forks_count":20,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-01T09:32:49.843Z","etag":null,"topics":["2d","algorithm","cad","cam","computation-geometry","geometry"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbuckmccready.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2021-03-03T20:05:23.000Z","updated_at":"2025-03-18T08:22:31.000Z","dependencies_parsed_at":"2025-03-25T08:01:34.203Z","dependency_job_id":"089f1629-1b25-4bb8-a05a-e677c864f051","html_url":"https://github.com/jbuckmccready/cavalier_contours","commit_stats":{"total_commits":128,"total_committers":4,"mean_commits":32.0,"dds":0.0703125,"last_synced_commit":"cd75b9018d1dc02a8925d8b7f8468c9ffd6b3848"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbuckmccready%2Fcavalier_contours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbuckmccready%2Fcavalier_contours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbuckmccready%2Fcavalier_contours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbuckmccready%2Fcavalier_contours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbuckmccready","download_url":"https://codeload.github.com/jbuckmccready/cavalier_contours/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247820652,"owners_count":21001528,"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":["2d","algorithm","cad","cam","computation-geometry","geometry"],"created_at":"2024-08-14T04:00:22.237Z","updated_at":"2025-04-08T10:23:26.710Z","avatar_url":"https://github.com/jbuckmccready.png","language":"Rust","funding_links":[],"categories":["Rust","Watchlist"],"sub_categories":[],"readme":"## Summary\n\nThis project is a continuation of the C++\n[CavalierContours](https://github.com/jbuckmccready/CavalierContours) library rewritten in Rust with\nthe goal of building out more functionality, better documentation, and creating a stable C FFI.\nThis project has all of the functionality of the C++ repository with more code documentation, test\ncoverage, and some additional functions for working with polylines. For tracking progress and\ncontributing checkout the project GitHub issues. For more information about the parallel offset\nalgorithm and background information see the old C++ repository `README.md`\n[here](https://github.com/jbuckmccready/CavalierContours).\n\n[👉 Click to run the web demo 👈](https://jbuckmccready.github.io/cavalier_contours/)\n\nThis library uses no unsafe code (`#![forbid(unsafe_code)]` is applied) in the main\n`cavalier_contours` crate. Unsafe is used in the `cavalier_contours_ffi` crate for C bindings.\n\n\u003cimg src=\"https://github.com/jbuckmccready/CavalierContoursDoc/blob/master/gifs/PolylineOffsets.gif\" width=\"400\"/\u003e \u003cimg src=\"https://github.com/jbuckmccready/CavalierContoursDoc/blob/master/gifs/PolylineCombines.gif\" width=\"400\"/\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/jbuckmccready/CavalierContoursDoc/master/images/pretty_examples/example1.png\" width=\"400\"/\u003e \u003cimg src=\"https://raw.githubusercontent.com/jbuckmccready/CavalierContoursDoc/master/images/pretty_examples/islands_example1.png\" width=\"400\"/\u003e\n\n## Interactive Web Page for Visualizing and Testing\n\n\n\u003e [!NOTE]  \n\u003e This is the old web demo ui page. The new page built with egui is [here](https://jbuckmccready.github.io/cavalier_contours/).\n\nThis project is compiled to wasm to create an interactive web demo page for visualing and testing.\n\n- Interactive web demo page: https://cavaliercontours.dev/\n- Interactive web demo page repo: https://github.com/jbuckmccready/cavalier_contours_web_demo\n\n## Why go to Rust?\n\n- All the same benefits of using C or C++ (great performance/optimizations, native compile, no\n  garbage collection, no run time) for creating fast portable libraries with a C FFI\n- Great builtin tooling around builds and packages (cargo + crates)\n- Great builtin tooling for writing and maintaining tests\n- All of the great builtin tooling makes open source contribution and participation easier to\n  facilitate\n- Borrow checker + lifetimes allow for more advanced memory allocation optimizations without the\n  risk of memory errors/corruption bugs\n- Type system allows for leaning heavily on threads/concurrency without the risk of memory\n  errors/corruption bugs\n- Discriminated unions and pattern matching as first class language features\n- Great tooling for targeting wasm\n\n## New to Rust but still want to contribute?\n\nI recommend the official rust book [here](https://doc.rust-lang.org/book/ch01-00-getting-started.html).\nVisual Studio Code + [rust-analyzer](https://rust-analyzer.github.io/) extension work great for editing.\nIf you're looking for something specific to work on check the project issues labeled `good first issue`.\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0\n  ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license\n  ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbuckmccready%2Fcavalier_contours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbuckmccready%2Fcavalier_contours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbuckmccready%2Fcavalier_contours/lists"}