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
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.