In 1999, I wrote some *nix software in C to create simple function plots for a LaTeX paper. By fall 2007, this software had become ePiX, which I use to create images and animations for this blog and my online shop.
An ePiX source file is a C++ program containing high-level drawing directives, and possibly computational code. Compiling a source file into an image is handled by shell scripts. Please note: A compiler, command prompt, and standard system utilities are needed to run ePiX, not just to build it.
The shell script “elaps” compiles an input file into a stand-alone PDF file suitable for inclusion in a LaTeX document. Here is a simple ePiX source file, named parabola.xp:
/* -*-ePiX-*- */
#include "epix.h"
using namespace ePiX;
double MAX(1);
P sw(-MAX, 0), ne(MAX, MAX);
P f(double t)
{
return P(t, t*t); // parabola y = x^2
}
int main()
{
picture(sw, ne, "4 x 2in");
begin();
pen(Black(0.3), 0.5); // color and width in pt
grid(sw, ne, 20, 10); // square grid
pen(Blue(), 1);
plot(f, -1, 1, 40); // plot over [-1, 1] with 40 intervals
h_axis_labels(P(xmin(), 0), P(xmax(), 0), 2, P(0, -6), b);
pst_format(); // PSTricks macros
end();
}
The command “elaps --pdf parabola.xp” compiles this source file into the following diagram:

For 2D drawing, ePiX is limited primarily by LaTeX, which does not have infinite resolution or memory. For 3D drawing, ePiX is quite capable, though it sometimes needs human help for hidden object removal. The software comes with an extensive tutorial/manual. The sample gallery contains 80 images and animations, and their source files. (These sample files are in the source package.)
I use ePiX to create all the non-polyhedral T-shirts and posters in my online shop; all figures in papers I have published since 2000; and illustrations for my own books, books of two former colleagues, and two other AMS publications. (Polyhedra are created using an unreleased, experimental version of ePiX.)
ePiX runs on GNU/Linux, FreeBSD, OS X, Cygwin, etc. The project page links to the latest source code release. Pre-built packages exist for multiple operating systems (particularly debian), though they may not be up-to-date. Although ePiX is not under active development, its high-level capabilities can be extended with a bit of C++ knowledge. The manual explains how to write and use external headers and libraries. Happy drawing!