3 unstable releases

new 0.7.1 Dec 11, 2024
0.7.0 Nov 19, 2024
0.6.0 Sep 27, 2024

#912 in Algorithms

Download history 143/week @ 2024-09-23 30/week @ 2024-09-30 8/week @ 2024-10-07 11/week @ 2024-10-14 3/week @ 2024-10-21 16/week @ 2024-11-04 161/week @ 2024-11-18 14/week @ 2024-11-25 10/week @ 2024-12-02 168/week @ 2024-12-09

353 downloads per month
Used in 3 crates (via geo-aid-internal)

MIT license

585KB
15K SLoC

Geo-AID Logo

Geo-AID

Geo-AID is a tool aiming to aid people at drawing geometry figures. It uses a figure script with criteria definitions to generate a figure meeting them and draw it.

Usually tools for figure generation are based on constructions (e.g. GeoGebra). In many cases they're more than enough to get a nice-looking figure, but there are problems out there with figures that are either difficult or straight up impossible to get right in those tools, let alone on paper. Geo-AID addresses that issue. Instead of limiting the user to constructive expressions, it provides a wide range of constructive functions aside a rule system, using which a user can enter rules that a figure must meet (e. g. angle equality, point collinearity etc.). Being an optimization engine at its core, Geo-AID can then take such a description and generate a figure based on it as best as it can. With some problems it does very well, with others - not so much, but the whole tool is under heavy development with constant improvements.

Installation

To use and possibly install Geo-AID, you will need Rust with cargo. You can get those here: https://www.rust-lang.org/.

Once done, you can either clone the repository with git and run Geo-AID using

cargo run --release -- <geo-aid arguments here, type --help for help>

Or install Geo-AID with

cargo install geo-aid

and run it with

geo-aid <arguments here, type --help for help>.

Useful resources

The Geo-AID book is hosted at https://geo-aid.github.io/. It's also available under the geo-aid-book/ directory. You can display it as HTML using mdbook:

cd geo-aid-book
mdbook serve --open

Goals

The ultimate goal of Geo-AID is to reduce the pain related to figure drawing to bare minimum. It aims to allow writing and generating complicated figures and rendering them in various formats the user may find useful (primarily LaTeX, SVG, GGB). It should enable article and book writers to put figures in their works without too much of a hassle, aid teachers in conducting helpful geometry lessons and lectures, and help students (especially those starting in olympiads) learn their craft.

How to contribute?

If You're interested in contributing to Geo-AID, feel free to check out the contribution guide.

The Community

Join the conversation on Discord.


lib.rs:

Everything relating in any way to GeoScript. This is where the language gets parsed, compiled and optimized. All errors are defined and reported here as well. The largest module of Geo-AID

Dependencies

~1.8–7MB
~58K SLoC