![logo](./assets/logo-crater.png) This is Crater, the official mascot of `crater.rs`! # Quick Start ## Use `crater.rs` as command-line tool ### Install ``` > cargo install crater-rs ``` Verify installation ``` > crater --version ... whatever the current version is ... ``` ### Run For a few example input files, see [`crater_examples`](https://gitlab.com/games1122013/crater.rs/-/tree/main/crater_examples?ref_type=heads). ``` > crater marching-cubes -i ./crater_examples/blended.yml -o blended.stl ``` # Citations 1. A. Ricci. ["A constructive geometry for computer graphics"](https://academic.oup.com/comjnl/article/16/2/157/372746) (1973) 2. Vadim Shapiro. ["Theory of R-Functions: A Primer"](https://ecommons.cornell.edu/server/api/core/bitstreams/deda5a32-8d13-4e10-abef-8b0030337a7b/content) (1988) 3. P.A. Fayolle and A. Pasko ["An Evolutionary Approach to the Extraction of Object Construction Trees from 3D Point Clouds"](https://eprints.bournemouth.ac.uk/23373/1/tree_recovery.pdf) 4. A. Pasko, et. al. ["Function Representation in Geometric Modeling: Concepts, Implementation and Applications"](https://papers.cumincad.org/data/works/att/d935.content.pdf) # Appendix: Maintainer Release Guide `crater.rs` uses the wonderful `cargo-release` for automatic release. There is a `release` CI/CD job which accomplishes the following: 1. Configures `git` to allow for direct push-from-ci (via `oath`) 2. Invokes `cargo-release`. This does the following automatically: 1. Run `./scripts/pre-release.sh` which: 1. runs some end-to-end tests and generates artifacts in `./artifacts` 2. runs `git-cliff` (config: `cliff.toml`) to generate a new changelog 2. Updates version numbers in all known locations 3. Publish to `crates.io` 4. Commit the new content as a "chore" (and skip ci), and add `git tag` 5. Push to the current branch (i.e., `main`) As a Maintainer of this repo, when an MR lands, the `release` job should become available for manual action. Start this job with `BUMP_LEVEL=(patch|minor|major)` to officially release.