Best tool for 3D B&W line drawings?

I am writing to request some advice about whether I should consider OpenGL for a project. My need is to be able draw simple 3D line drawings and create a high resolution print out on letter-size paper, or a high-resolution digital image in, say, JPEG format. I am wondering whether OpenGL can do that, and whether it is the best tool for the job. If not, what other tool might be better?

The drawings are basically equivalent to what you could draw with a pencil–no color, shading or grey scale allowed, just black and white. Lines should be able to have various thicknesses. I need to be able to somehow input surfaces and lines to draw, and have hidden lines removed or possibly drawn dashed. A few examples:

  1. Draw spheres representing Earth and the moon, show the axis, their equators, and the plane of revolution of the moon about Earth. Curved arrows could show the rotation direction of each and the direction of revolution of the moon about Earth.
  2. Draw a slice through a cylinder that contains concentric layers of a substance to be shown in alternating black and white layers.
  3. Draw two approximately parallel slightly curving surfaces with a prismatic finite element between them, showing hidden lines.

It would be nice to be able display the objects in space, and rotate them before printing to get the most effective angle. An overlay layer where I could put text labels (including possibly equations) onto the drawing would be a nice to have, but not necessary. Most important, though, is a quality print of the drawing, so rendering speed is not particularly a concern.

I prefer Linux but have access to Windows XP and Mac. If OpenGL is the way to go, is there a text that is a bit better than others about this particular kind of line drawing?

Thanks for your help!

Man, I love that name :smiley:

OpenGL rocks for line drawing. You just can’t beat it.

If you’re new to OpenGL, the (free) online programming guide will get you up to speed.

It covers line drawing and a whole bunch more, and all in a platform independent way.

When using OpenGL you can have little problem with that high-res thing. Widh 600dpi you can get like 4800x6000 image.
Since you need to print the image then you should render it to a texture. On current hadrware texture size is limited (ATI: 2048x2048, NVIDIA:4096x4096).
So you will probably have to split your image into smaller parts, render them one by one and copy these fragments to system memory.