The most convenient tool for 3D plotting in my humble opinion is gnuplot; it is free, and available in Linux, Windows and Mac OSX. Here is a simple example to plot the cube from (0, 0, 0) to (1,1,1):
#gnuplot gnuplot> set view 60, 30 gnuplot> splot "cube.plt" using 1:2:3 with lines
The default output is X11, you can even rotate the world coordination by using mouse to take a different view. And you may generate the PNG output for printing by setting up the terminal to png:
#gnuplot gnuplot> set terminal png gnuplot> set output "cube.png" gnuplot> splot "cube" using 1:2:3 with lines
The cube data file is organized in blocks, separated by two blank lines. Each block contains one closed polygon.
The best companion for GNUPlot is Octave. However, the plot interface in Octave is less versatile than manipulating the GNUPlot directly, and it is quite tedious to operate file using Octave, so I decided to use my favorite, python to do this job.
transform.py would read the (x,y,z) from the stdin, and write the transformation output to stdout. Both input and output are compatible with GNUPlot, so we can render cube2d.plt in X-Y coordination.
./transform.py -c 0 0 0 60 0 30 cube2d.plt
and then in gnuplot:
gnuplot> plot "cube2d.plt" using 1:2 with lines
Since the transform.py uses isometric projection, while the GNUPlot uses perspective projection, the output is a little different, but this is sufficient for our next step.