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!