[comp.graphics] Frequently asked questions - READ THIS BEFORE YOU POST.

jef@well.sf.ca.us (Jef Poskanzer) (04/02/90)

This message is automatically posted once a week in an effort to cut
down on the repetitive junk in comp.graphics.  It was last changed on
26jan90.  If you have answers to other frequently asked questions that
you would like included in this posting, please send me mail.  If you
don't want to see this posting every week, please add the subject line
to your kill file.  Thank you.
---
Jef

      Jef Poskanzer  jef@well.sf.ca.us  {ucbvax, apple, hplabs}!well!jef
                        "...Is this a trick question?"

- - - - - - - - - -

Contents:

    1) General references for graphics questions.
    2) Drawing three-dimensional objects on a two-dimensional screen.
    3) Quantizing 24 bit images down to 8 bits.
    4) Converting color into grayscale.
    5) Quantizing grayscale to black&white.
    6) Rotating a raster image by an arbitrary angle.
    7) Free image manipulation software.
    8) Format documents for GIF, TIFF, IFF, BIFF, WHIFF, etc.
    9) Converting between vector formats.
    10) How to get Pixar films.


1) General references for graphics questions:

    Fundamentals of Interactive Computer Graphics, J. D. Foley and A. van Dam,
      Addison Wesley, ISBN 0-201-14468-9
    Principles of Interactive Computer Graphics 2nd Ed., Newman and Sproul,
      McGraw Hill, ISBN 0-07-046338-7
    Procedural Elements for Computer Graphics, David F. Rogers, McGraw Hill,
      ISBN 0-07-053534-5
    Mathematical Elements for Computer Graphics 2nd Ed., David F. Rogers and
      J. Alan Adams, McGraw Hill, ISBN 0-07-053530-2
    Applied Concepts in Microcomputer Graphics, Bruce Artwick, Prentice-Hall,
      ISBN 0-13-039322-3
    Digital Picture Processing, volumes 1 & 2, Rosenfield and Kak


2) Drawing three-dimensional objects on a two-dimensional screen.  The
simple answer is, you divide by the depth.  For a more verbose explanation,
see any of the above references.


3) Quantizing 24 bit images down to 8 bits.  Find a copy of "Color
Image Quantization for Frame Buffer Display" by Paul Heckbert, SIGGRAPH
'82 Proceedings, page 297.  There are other algorithms, but this one
works well and is fairly simple.  Implementations are included in
most raster toolkits (see item 7 below).


4) Converting color into grayscale.  The NTSC formula is:

    luminosity = .299 red + .587 green + .114 blue


5) Quantizing grayscale to black&white.  The only reference you need
for this stuff is:

    Digital Halftoning, Robert Ulichney, MIT Press, ISBN 0-262-21009-6

But before you go off and start coding, check out the image manipulation
software mentioned in item 7 below.  All of the packages mentioned can do
some form of gray to b&w conversion.


6) Rotating a raster image by an arbitrary angle.  The obvious but
wrong method is to loop over the pixels in the source image, transform
each coordinate, and copy the pixel to the destination.  This is wrong
because it leaves holes in the destination.  Instead, loop over the
pixels in the destination image, apply the *reverse* transformation to
the coordinates, and copy that pixel from the source.  This method is
quite general, and can be used for any one-to-one 2-D mapping, not just
rotation.  You can add anti-aliasing by doing sub-pixel sampling.

However, there is a much faster method, with antialising included,
which involves doing three shear operations.  The method was originally
created for the IM Raster Toolkit (see below); an implementation is
also present in PBMPLUS.  Reference: "A Fast Algorithm for Raster
Rotation", by Alan Paeth (awpaeth@watcgl.waterloo.edu) Graphics
Interface '86 (Vancouver).  An article on the IM toolkit appears in
the same journal.


7) Free image manipulation software.  There are a number of toolkits
for converting from one image format to another, doing simple image
manipulations such as size scaling, plus the above-mentioned 24 -> 8,
color -> gray, gray -> b&w conversions.  Here are pointers to some of
them:

    PBMPLUS, by Jef Poskanzer.  Comprehensive format conversion and image
    manipulation package.  The latest version is always available via
    anonymous FTP as expo.lcs.mit.edu:contrib/pbmplus.tar.Z and
    ftp.ee.lbl.gov:pbmplus.tar.Z.  The version of 22nov89 (which currently
    is still the latest version, except for the one official patch so far)
    was posted to comp.sources.misc, and is therefore accessible via mail
    to one of the archive servers.  This version is also available in the
    X.V11R4 release tape.  A mailing list is available for users and
    developers - write to pbm-request@helios.ee.lbl.gov.

    IM Raster Toolkit, by Alan Paeth (awpaeth@watcgl.uwaterloo.ca).
    Provides a portable and efficient format and related toolkit.  The
    format is versatile in supporting pixels of arbitrary channels,
    components, and bit precisions while allowing compression and machine
    byte-order independence.  The kit contains more than 50 tools with
    extensive support of image manipulation, digital halftoning and format
    conversion.  Previously distributed on tape c/o the University of
    Waterloo, an FTP version will appear in 1/90 (stay tuned).

    Utah RLE Toolkit.  Conversion and manipulation package, similar to
    PBMPLUS.  Available via FTP as cs.utah.edu:pub/toolkit-2.0.tar.Z and
    ucsd.edu:graphics/utah-raster-toolkit.tar.Z.

    Fuzzy Pixmap Manipulation, by Michael Mauldin <mlm@nl.cs.cmu.edu>.
    Conversion and manipulation package, similar to PBMPLUS.  Available via
    FTP as nl.cs.cmu.edu:/usr/mlm/ftp/fbm.tar.Z and ucsd.edu:graphics/
    fbm.tar.Z, and also in your nearest comp.sources.unix archive.

    Img-whatnot, by Paul Raveling <raveling@venera.isi.edu>.  Reads and
    writes its own image format, displays on an X.V11 screen, and does some
    image manipulations.  Available via FTP as expo.lcs.mit.edu:contrib/
    Img.tar.Z, and venera.isi.edu:pub/Img.tar.Z along with a large
    collection of color images.

    Xim, by Philip R. Thompson.  Reads and writes its own image format,
    displays on an X.V11 screen, and does some image manipulations.
    Available via FTP as expo.lcs.mit.edu:contrib/xim3c.tar.Z.

    xloadimage, by Jim Frost <madd@std.com>.  Reads in images in various
    formats and displays them on an X.V11 screen.  Available via FTP as
    expo.lcs.mit.edu:contrib/xloadimage.tar.Z, and in your nearest
    comp.sources.x archive.

    TIFF Software, by Sam Leffler <sam@okeeffe.berkeley.edu>.  Nice
    portable library for reading and writing TIFF files, plus a few tools
    for manipulating them and reading other formats.  Available via FTP as
    okeeffe.berkeley.edu:pub/tiff.tar.Z.

    ALV, a Sun-specific image toolkit.  Version 2.0.6 posted to
    comp.sources.sun on 11dec89.  Also available via email to
    alv-users-request@cs.bris.ac.uk.

    popi, an image manipulation language.  Version 2.1 posted to
    comp.sources.misc on 12dec89.

Don't forget to set binary mode when you FTP tar files.  For you MILNET
folks who still don't have name servers, the IP addresses are:

    expo.lcs.mit.edu		18.30.0.212
    ftp.ee.lbl.gov		128.3.254.68
    cs.utah.edu			128.110.4.21
    NL.CS.CMU.EDU		128.2.222.56
    venera.isi.edu		128.9.0.32
    okeeffe.berkeley.edu	128.32.130.3

Please do *not* post or mail messages saying "I can't FTP, could
someone mail this to me?" There are a number of sites that archive the
sources newsgroups and make the contents available through an automated
mail query system.

If you bring one of these packages to someplace far away, such as the
West Coast or Europe, consider making it available for FTP from your
site and letting me know so I can add you to this posting.


8) Format documents for GIF, TIFF, IFF, BIFF, WHIFF, etc.  You almost
certainly don't need these.  Read the above item 7 on free image
manipulation software.  Get one or more of these packages and look
through them.  Chances are excellent that the image converter you were
going to write is already there.  If you still can't find what you're
looking for, then feel free to post a query to comp.graphics.  However,
be sure and note the places you have already looked for the information,
otherwise people will assume you're just another bozo and won't answer.


9) Converting between vector formats.  A lot of people ask about
converting from HPGL to PostScript, or MacDraw to CGM, or whatever.  It
is important to understand that this is a very different problem from
the image format conversions in item 7.  Converting one image format to
another is a fairly easy problem, since once you get past all the file
header junk, a pixel is a pixel -- the basic objects are the same for
all image formats.  This is not so for vector formats.  The basic
objects -- circles, ellipses, drop-shadowed patttern-filled
round-cornered rectangles, etc. -- vary from one format to another.
Except in extremely restricted cases, it is simply not possible to do a
one-to-one conversion between vector formats.

On the other hand, it is quite possible to do a close approximation,
rendering an image from one format using the primatives from another.
But as far as I know, no one has put together a toolkit of converters.
So, the current answer to this frequently asked question is "Uhhhhh..."
Stay tuned for further developments.

A related frequent question is how to convert from some vector format
to a bitmapped image.  For instance, from PostScript to Sun raster
format, or HPGL to X11 bitmap.  Again, the answer is "Uhhhhh..."  I
don't know of any such converters.  However, if someone were to put
together a vector to vector conversion toolkit, adding a vector to
raster converter would be trivial.


10) How to get Pixar films.

The various John Lasseter / Pixar computer animated shorts are
available on video tape.  You can order them from Direct Cinema
Limited:

	Film				Price
	Luxo, Jr.			$14.95
	Red's Dream			$19.95
	Tin Toy				$24.95
	Knickknack			$24.95
	Luxo, Jr./Red's Dream/Tin Toy	$49.95

All tapes are on 1/2" VHS NTSC.  Add $10/tape for PAL format.  Also
available:

	Tin Toy T-shirt			$15.00
	Knickknack 3D T-shirt		$15.00 (includes glasses)

Add $5 S&H for the first tape or shirt, $2 for each additional tape or
shirt.  Foreign shipping, add $3/tape or shirt.  Call 213-652-8000 to
charge to your credit card.  I would suggest calling first to verify
prices and availability.