GithubHelp home page GithubHelp logo

jbuckmccready / cavalier_contours Goto Github PK

View Code? Open in Web Editor NEW
133.0 6.0 11.0 505 KB

2D polyline/shape library for offsetting, combining, etc.

License: Apache License 2.0

Rust 100.00%
algorithm geometry cad computation-geometry cam 2d

cavalier_contours's Introduction

Summary

This project is a continuation of the C++ CavalierContours library rewritten in Rust with the goal of building out more functionality, better documentation, and creating a stable C FFI. This project has all of the functionality of the C++ repository with more code documentation, test coverage, and some additional functions for working with polylines. For tracking progress and contributing checkout the project GitHub issues. For more information about the parallel offset algorithm and background information see the old C++ repository README.md here.

This library uses no unsafe code (#![forbid(unsafe_code)] is applied) in the main cavalier_contours crate. Unsafe is used in the cavalier_contours_ffi crate for C bindings.

Interactive Web Page for Visualizing and Testing

This project is compiled to wasm to create an interactive web demo page for visualing and testing.

Why go to Rust?

  • All the same benefits of using C or C++ (great performance/optimizations, native compile, no garbage collection, no run time) for creating fast portable libraries with a C FFI
  • Great builtin tooling around builds and packages (cargo + crates)
  • Great builtin tooling for writing and maintaining tests
  • All of the great builtin tooling makes open source contribution and participation easier to facilitate
  • Borrow checker + lifetimes allow for more advanced memory allocation optimizations without the risk of memory errors/corruption bugs
  • Type system allows for leaning heavily on threads/concurrency without the risk of memory errors/corruption bugs
  • Discriminated unions and pattern matching as first class language features
  • Great tooling for targeting wasm

New to Rust but still want to contribute?

I recommend the official rust book here. Visual Studio Code + rust-analyzer extension work great for editing. If you're looking for something specific to work on check the project issues labeled good first issue.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.