Numerical Geometry Wiki
Why C ?
The first question that you might ask is:
Why is the Numerical Geometry project in C and not in Python, Java, C++, Rust or Julia ?
You will realize that C is very transparent about memory allocation.
Every non-constant chunk of memory that you use must be allocated on
the heap via a
malloc() call. Therefore, you will realize precisely
how much memory is consumed by your algorithm, and you will naturally
avoid unnecessary allocations. In addition, in 2D, it is very easy to
allocate the right amount of memory from the veryq beginning. Take a
Delaunay Triangulation algorithm for example. If you have n points,
you are going to end up with 2*(n-2) triangles. You can allocate
all the space needed right from the beginning. That transparency and
simplicity give C a clear advantage over languages with fancy (but
costly) features. Finally, a well-realized C program will be as fast
as any C++ or Rust, and much faster than any interpreted language.
What is draw_tools ?
It is a small, simple OpenGL library created by your assistants to help you draw lines, text, and other simple shapes. All functions are defined and briefly explained in deps/draw_tools/include/draw_tools.h. The most useful ones are described in the in the tutorial. We figured it would be easier than using something like CSFML or BGFX, and lighter than requiring the SDL. In addition, all the intricacies of the library are know by the assistants, which allows them to work around every problem you might have with draw_tools. If a feature is useful for multiple students, it will be added.