home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / graphics / visualiz / 1979 < prev    next >
Encoding:
Internet Message Format  |  1993-01-07  |  24.9 KB

  1. Path: sparky!uunet!zaphod.mps.ohio-state.edu!rpi!gatech!usenet.ins.cwru.edu!agate!dog.ee.lbl.gov!network.ucsd.edu!dudley!nadeau
  2. From: nadeau@sdsc.edu (Dave Nadeau,,45062)
  3. Newsgroups: comp.graphics.visualization
  4. Subject: Re: SDSC Image Tools and PBM Plus
  5. Date: 7 Jan 1993 23:43:29 GMT
  6. Organization: San Diego Supercomputer Center @UCSD.
  7. Lines: 473
  8. Distribution: world
  9. Message-ID: <1iif72INNjo7@network.ucsd.edu>
  10. References: <1992Dec29.152246.5108@socrates.umd.edu>
  11. Reply-To: nadeau@sdsc.edu
  12. NNTP-Posting-Host: dudley.sdsc.edu
  13.  
  14.  
  15. In <1ifpdeINN2ov@network.ucsd.edu> nadeau@sdsc.edu (Dave Nadeau,,45062) writes:
  16.  
  17. > |"1.  The SDSC Image Tools were designed as a C function library rather than
  18. > |"    a set of independent tools, such as the PBMPlus package.  Using a function
  19. > |"    library, image manipulation algorithms are encapsulated into generic
  20. > |"    functions maintained in a central location.  Tool programmers are able to
  21. > |"    quickly write new tools by simply calling library routines.  Tool source
  22. > |"    is kept small and succinct.  If bugs are found in the underlying
  23. > |"    library's image algorithm, the bug is fixed in one place and all tools
  24. > |"    using that routine are relinked.  No tool source modification is required.
  25. > PBMPLUS also has libraries that help write new PBMPlus formats; the pbm, pgm,
  26. > ppm and pnm libraries.
  27.  
  28. Indeed, PBMPLUS does have libraries:  but only for the PBM formats.  File
  29. format knowledge for other formats is distributed into multiple tools.  Image
  30. manipulation functionality is similarly distributed, rather centralized.
  31.  
  32. It is not possible to write a new tool that outputs non-PBM file formats unless
  33. one copies source from another PBM tool.  Since the format is a constant,
  34. and that source is a constant (except for bug fixes), it would be nice to
  35. put it in a "safe" "central" place.  This is the founding principle of
  36. libraries, of whatever type, and one that has driven the development of the
  37. SDSC Image Tools.  It is a concept that is only partially implemented in the
  38. PBMPLUS tools.
  39.  
  40. Please read the Image Tools manual pages "imintro" and "ImFileRead" for a
  41. full discussion of data structures and image file format support.  These
  42. man pages are included in the release.
  43.  
  44.  
  45. >   [ Programmer supposedly has to clone the code multiple times ]
  46. > No. The programmer can take the code from PBMPlus (as source is available) and
  47. > create his own library. Difference is that PBMPlus, as it provides source and
  48. > an easy to manipulate format, leaves it up to the programmer to use either its
  49. > fill function or a programmer supplied one. It is short-sighted to think that
  50. > programmers would not be able to do so. The difference with your package is
  51. > that you have made the decision on what fill algorithm to use, in other words,
  52. > it is you who made the decision to take whatever code and put it in a library,
  53. > thus saving the programmer the trouble.
  54.  
  55. The programmer using the SDSC Image Tools is free to implement any fill
  56. algorithm they choose using the rich set of data structures and data structure
  57. access routines and macros provided within the SDSC Image Tools.  We have in
  58. no way barred anybody from doing anything they feel like with image data.  We
  59. have merely taken many of the most common actions and centralized them into
  60. the image library.  If a user doesn't like our fill function, they are free
  61. to and encouraged to implement their own.
  62.  
  63. However, most users do not have the time to re-develope their own image
  64. manipulation routines.  Instead, they'd rather use somebody else's and get
  65. on with the task they really wish to accomplish.  We make this easier by
  66. placing that routines in a library and heavily document their abilities.
  67. Such users are not required to cut-and-paste undocumented sparsely commented
  68. code in order to get the own work done.
  69.  
  70. Please read the manual page "imintro" in the SDSC Image Tools release for a
  71. start on understanding the internal data structures and access functions.
  72. Alternatively, you may read any of the published papers on the Image Tools
  73. for further discussion of the data structures involved.
  74.  
  75.  
  76. > |"2.  All SDSC Image Tools can read and write all of our supported image
  77. > |"    file formats.  This is another direct result of encapsulating file format
  78. > |"    handling within generic library functions.
  79. > [ examples of how to do this deleted ]
  80. > It also leads to huge executables, when shared libraries are not available; 
  81. > even if the program only reads one format ever, it still has the code for all
  82. > the other formats in its executable! 
  83.  
  84. Quite true.  There is no perfect solution (that I am aware of).  We have
  85. chosen to reduce the amount of tools the user must remember for doing image
  86. file format conversion from 87+ to 1.  The increase in binary size is
  87. compensated for by a decrease in user hassle.  The priority is placed on the
  88. user's needs, rather than the disk drive's.
  89.  
  90.  
  91. > Keep in mind that PBMPlus is volunteer work; Jef Poskanzer has done a great
  92. > job of creating portable software - due to the fact that the format is simple,
  93. > and easily extendable, a huge amount of conversion tools are available. The
  94. > things you mention are, of course, things to be done, but one lives and
  95. > learns; what you suggest will sure be included in PBMPlus, someday.
  96.  
  97. Indeed, the PBMPlus package is one everybody should have.  Jef Poskanzer has
  98. done an excellent service to the industry and one we hope he will continue to
  99. provide.  There is no such thing as having too many tools.  If one package
  100. doesn't satisfy your needs, perhaps another will.  We developed the SDSC
  101. Image Tools to satisfy a class of needs that we did not see as being satisfied
  102. by other packages out there.  However, in the same vein, PBMPlus satisfies a
  103. number of needs the Image Tools do not.  You are free to choose whatever
  104. package you wish.  We recommend that you choose both.
  105.  
  106.  
  107. > |"    Furthermore, PBMPlus tools that actually do something to images only work
  108. > |"    on PBMPlus file formats.  If you want to read any other kind of image, you
  109. > |"    first have to convert into one of the PBMPlus formats.  Then if you want
  110. > |"    a result in another format, such as for transfer to a Mac or PC, or use
  111. > |"    as a texture map in a ray tracer, you have to convert back out of the
  112. > |"    PBMPlus formats into what you really wanted in the first place.
  113. > That's the general idea - rather than dealing with millions of file formats,
  114. > one format that is easy to manipulate is used, thus greatly reducing the
  115. > amount of code needed. The beauty of the package is by introducing an
  116. > intermediary format suddenly the number of converters can be reduced from NxM
  117. > (your case) to N+M. A very basic strategy, which can be found in most
  118. > introductory courses on computer architecture and compiler writing.
  119.  
  120. The PBMPlus package and the SDSC Image Tools use approximagely the same
  121. computational strategy for developing image file format handlers:  all
  122. conversion is done to and from an intermediary data structure.  PBMPlus
  123. formallizes those data structure as a set of file formats.  The SDSC Image
  124. Tools leave them as memory data structures.  In both cases this results in
  125. N + M translators, not N * M.
  126.  
  127.     In PBMPlus there are N format read tools that read into PBM formats,
  128.     and M write tools that write out from PBM formats.
  129.  
  130.     In the Image Tools there are N format read routines that read into
  131.     memory data structures, and M write routines that write out from
  132.     memory data structures.  The N read and M write routines are internal
  133.     to the package and available to the programmer as a single read and
  134.     a single write routine.
  135.  
  136. The Image Tools eliminate the need for the intermediate file formats.  It seems
  137. that we already have enough file formats out there in the world without
  138. having to invent still more.
  139.  
  140. Please read the "imfileread" manual page included in the Image Tools release
  141. for full details on reading and writing image file formats.
  142.  
  143.  
  144. > |"3. Another natural result of developing the SDSC Image Tools as a C function
  145. > |"   library is the ease with which image file handling can be added to existing
  146. > |"   tools.  Non-SDSC users have built AVS and Explorer modules using the
  147. > |"   SDSC Image Tools library, added image handling support to existing tools,
  148. > |"   written windowing system user interfaces for the tools, and so on.
  149. > Great. The same can be done just as easily for PBMPLUS. I have done so; the
  150. > format is so simple, that implementation and use of it is no work at all.
  151.  
  152. As stated earlier and in-depth in the referenced posting, the PBMPlus libraries
  153. only support reading and writing of the PBM file formats (pbm, pgm, and ppm).
  154. New tools, or modifications of existing tools, can add support for these
  155. formats.  However, adding support for non-PBM file formats requires that source
  156. be copied from PBM tools.  No library calls for non-PBM file format I/O
  157. exist.  Non-PBM file format support is distributed throughout multiple PBMPlus
  158. package tools, and not centralized within a library.
  159.  
  160. The Image Tools place all file format I/O functionality within a central
  161. library.  Tool authors can read or write any of the support file formats by
  162. making a single call to the library.  They do not have to reimplement the
  163. often very complex quirks of image file formats, and do not have to
  164. cut-and-paste code from other people's code and try to figure out how to make
  165. it work for their own tool.
  166.  
  167. Of course, if the programmer WANTS to read or write their own image file format,
  168. they can do that with the SDSC Image Tools as well.  The Image Tools do not
  169. prevent programmer activites, they just make common ones easier to do.
  170.  
  171.  
  172. > |"    At SDSC, we have implemented a generic lpr-based print filter system that
  173. > |"    drives a number of computer graphics output devices from any of the
  174. > |"    supported image file formats.  For instance, users of the system can queue
  175. > |"    images to be printed to slides on a film recorder using:
  176. > |"
  177. > |"        vpr -Pslides title.rgb frames*.pix credits{1,2,3,4}.ras
  178. > |"
  179. > |"   There are no hardcopy device-specific file formats.  There is no need to
  180. > |"   convert your SGI RGB image to quirky device protocol streams, then
  181. > |"   transfer the file over to the specific host that drives the printer, then
  182. > |"   invoke printer-specific software to print your image.  Instead, vpr handles
  183. > |"   it all.  Images are transferred via lpr to the remote host that drives
  184. > |"   the printer.  The lpr daemon invokes a device-specific print filter that
  185. > |"   reads in the images, using the Image Tools library, adjusts image colors
  186. > |"   appropriately for the device, again using the Image Tools library, and
  187. > |"   scales the image up or down to the device resolution, once again using
  188. > |"   the Image Tools library.  The final image is written directly to the
  189. > |"   device, with communications protocol handled on the spot.
  190. > Nice. This can also be done by PBMPLUS, by having the program/driver convert
  191. > to PBMPLUS format upon arrival. No big deal.
  192.  
  193. While do-able with PBMPlus, it is more difficult because there is no central
  194. intelligence about file formats.  There is no table of information about
  195. file formats and magic numbers, and thus no trivial way to write a tool that
  196. can automatically figure out what PBM tool to invoke to convert an incomming
  197. file format to a PBM format.  This is not an impossible thing to do, but it
  198. is a pain.  This work has already been done in the Image Tools.  A single
  199. function call is all that it takes to determine the file format type of an
  200. image file.
  201.  
  202. An implementation using PBMPlus would also be slower.  Such a PBMPlus
  203. implementation would intuit the type of the incomming image file (via some
  204. built-in table), then invoke the proper PBMPlus tool by fork-and-exec
  205. or by system().  That tool would read the input file and generate a PBM file
  206. (or pipe stream).  The print spooler would then read in that PBM file (or
  207. stream) and do its thing.  This sequence requires that the image data be read
  208. twice:  once from the original file, and once from a PBM file (or stream).
  209. It also requires that the image data be written once:  to the PBM file (or
  210. stream).
  211.  
  212. The Image Tools, however, read the input file directly using the library
  213. file read routine.  There is no "extra" disk I/O to a second file (or pipe)
  214. and no second reading of the same data.  The Image Tools will be faster
  215. for the same operation.
  216.  
  217.  
  218. > |"  This kind of integration of image file format I/O into existing tools is not
  219. > |"  possible using the PBMPlus package.  File format code is distributed all
  220. > |"  about into multiple PBMPlus tools.  There is no file format function
  221. > |"  library.
  222. > There is. Check the manual pages pbm(5),pgm(5),ppm(5) and pnm(5). I'll admit
  223. > that the documentation could use some work, but hey, what do you expect ? It
  224. > is FREE and it has SOURCE.
  225.  
  226. As already stated, the PBMPlus library supports routines for reading and
  227. writing the PBM formats only.  It does not support reading and writing the
  228. other file formats.  That code is distributed throughout the tool set and
  229. is largely undocumented.
  230.  
  231. The Image Tools library supports reading and writing of all our supported
  232. image file formats.  Code is centralized, accessible through a single
  233. function call, and fully documented.  Please read the manual page for
  234. "imfileread" for full details on image file I/O within the Image Tools.
  235.  
  236.  
  237. > |"4.  The SDSC Image Tools were designed to support a wide range of image
  238. > |"    storage types:  monochrome, grayscale, color indexed (also called
  239. > |"    pseudocolor), and RGB (also called truecolor), and images of all these
  240. > |"    types that have alpha channels, Z-buffers, and other non-visual pixel
  241. > |"    channels.
  242. > |"
  243. > |"    The PBMPlus tools, however, only support monochrome, grayscale, and RGB
  244. > |"    images.  Alpha channels are unsupported and silently stripped from input
  245. > |"    files as you convert into the less-functional PBMPlus file formats.  There
  246. > |"    is no support whatsoever for color indexed images, such as those used by
  247. > |"    non-RGB color graphics displays and most color image file formats.  To
  248. > |"    handle a color indexed image, PBMPlus converts it to RGB.  The color table
  249. > |"    is applied to the color indexes and then tossed.  The "indexed-ness" of
  250. > |"    the original image is lost.  This is unacceptable.
  251. > Not really; the original can always be regenerated by functions that are
  252. > present in the various p*m-libraries.
  253.  
  254. Not true.  The original can *not* always be regenerated.  An 8-bit image can
  255. be recreated from a 24-bit image that was itself originally created from an
  256. 8-bit image and visually they will be identical.  The data content, however,
  257. will not be identical.
  258.  
  259. Consider this example:
  260.  
  261.     Image 1 is an 8-bit image with the following color table:
  262.         entry 1:    255 0 0
  263.         entry 2:    0 255 0
  264.         entry 3:    0 0 255
  265.         entry 4:    255 0 0
  266.         entry 5:    128 128 128
  267.  
  268.     Entry's 1 through 4 are used in the image.  Entry 5 is not, but is
  269.     nevertheless part of the data and may have significance to the user
  270.     of the data.
  271.  
  272.     Entry 4 is identical in color to entry 1, but used in different places
  273.     in the image, and perhaps with different intent.  The border of the
  274.     image might be entry 1 (red), at the same time as a "Danger, Nuclear
  275.     Meltdown Imminent" message uses entry 4 (also red).  The use of these
  276.     two entries is different.  So, while they contain identical colors,
  277.     the use of entry 4 instead of 1 has significance to the user of
  278.     the data.
  279.  
  280.     The ordering of colors in Image 1's table may have significance to
  281.     the user of the data.  Perhaps the first color is the background,
  282.     and the second the foreground, the third the text color, and so on.
  283.     Or perhaps entry 1 is bone, entry 2 muscle, entry 3 air, and
  284.     so on in a CATscan image.  The ordering of entries in the color table
  285.     maps directly to values obtained from the CATscanner.  The order is
  286.     of significance, independent of the color mapping used.
  287.  
  288.     Now, convert Image 1 to Image 2, a 24-bit image in the PBMPlus package.
  289.     Each pixel in Image 1 is scanned, its color table entry found and that
  290.     entry's color placed into Image 2's 24-bit pixel.
  291.  
  292.     Pixels using entry 1 and entry 4 in Image 1 will both end up with the
  293.     same color in Image 2.  The differentness of pixels using these two
  294.     entries has been lost.
  295.  
  296.     No pixels with the color of entry 5 will be in Image 2.  The existance
  297.     of entry 5 has been lost.
  298.  
  299.     Now, convert Image 2 to Image 3, a new 8-bit image with a color table.
  300.     The pixels in Image 2 are scanned and a table of unique colors
  301.     generated.  The order of colors in that table is the order of unique
  302.     colors occuring in the image, left to right, top to bottom.  Or perhaps
  303.     the table is sorted afterwards.  It doesn't matter.  The order
  304.     of colors will not be identical to the order in Image 1's color table
  305.     except by chance.
  306.  
  307.     Conversion into and out of the PBMPlus package has left us with an
  308.     8-bit image that is visually identical to the input 8-bit image, but
  309.     has less information.  The output image has lost:
  310.  
  311.         1.  Color table entry order significance.
  312.         2.  Duplicate color table entry significance.
  313.         3.  Extra color table entry significance.
  314.  
  315.     If you are in a situation where none of these matter, the PBMPlus
  316.     package is just fine.  If, however, you depend upon color table entry
  317.     order or associate signficance to duplicate or extra color table
  318.     entries, such as in scientific visualization, then conversion through
  319.     the PBMPlus package has destroyed the validity of some of your data.
  320.  
  321.     The Image Tools support 8-bit images directly and their use will not
  322.     result in the loss of this data.
  323.  
  324.  
  325. > |"    xwdtopnm input.xwd | pnmtoxwd > output.xwd
  326. > |"
  327. > |"    Format readers parse the input file and drop tags and values into the
  328. > |"    tag table.  Format writers scan the tag table for items relevant for the
  329. > |"    output format and write them out.  The XWD reader, for instance, reads
  330. > |"    in the image window name and drops it into the tag table along with the
  331. > |"    image pixels and color table.  The Sun rasterfile RAS writer scans the
  332. > |"    tag table for images and color tables and writes them out, but it ignores
  333. > |"    the image window name because the RAS format does not support image names.
  334. > |"    The XWD writer, on the other hand, does pick out the image name from the
  335. > |"    tag table and write it out to the output format.  It all depends upon the
  336. > |"    abilities and limitations of the output file format.  The SDSC Image Tools
  337. > |"    do not arbitrarily limit image data to those things that fit into an
  338. > |"    intermediate file format.
  339. > Of course they do; they limit image data to have the arbitrarily limits of the
  340. > resulting data-type.
  341.  
  342. Not true.  Our internal data types do not constrain the type or quantity of
  343. data read in from an input file or written out to an output file.  You are
  344. free to read more about these data structures by checking out the "imintro"
  345. and "tagintro" manual pages in the Image Tools, and libsdsc releases,
  346. respectively.  Alternatively, you can read any of the published papers on
  347. the tools.
  348.  
  349.  
  350. > I am sorry; PBMPlus does not need to support these - those packages support
  351. > PBMPlus!
  352.  
  353. Wavefront, Alias, RenderMan, and so on, do not support PBMPlus.  The majority
  354. of software packages available for workstations, supercomputers, PCs, and
  355. Macs do not support PBMPlus.  This leaves one with the constant need to
  356. convert from one format to another whenever crossing package boundaries.  That
  357. conversion can be done through mutliple tools with PBMPlus, or a single tool
  358. in the SDSC Image Tools.
  359.  
  360.  
  361. > By taking an attitude of 'we don't need these low-end formats anyway'
  362. > you first of all are arrogant - let the user decide what he wants if possible,
  363. > not you ! - and second of all, it is easy to write additional converters for
  364. > PBMPLUS (you have done so yourself).
  365.  
  366. On the contrary, we have not taken the attitude that the low-end formats
  367. don't matter.  They certainly do.  However, we have had to prioritize the
  368. world's vast image file format list to favor those that we and the majority
  369. of our customers need most.  This has resulted in a bias towards formats used
  370. in rendering and scientific visualization.  At some point we fully expect many
  371. of the low-end formats to become part of the Image Tools.
  372.  
  373. The user is free to implement format readers and writers for the SDSC Image
  374. Tools as well.  The V2.1 release provides access to the file format dispatch
  375. table and provides sample source for the GIF, AVS X, EPS, and PostScript
  376. format handlers.
  377.  
  378.  
  379. > |"    PBMPlus image file format support is also strangely sparse.  Some formats
  380. > |"    can only be read, but not written.  Other formats can only be written,
  381. > |"    but not read.
  382. > This is due to the nature things get contributed to PBMPLUS: different people
  383. > all over the world have contributed to the package. Some of the stuff is well
  384. > written, others less so. PBMPLUS is not actively supported by people who get
  385. > paid to do so.
  386. > |"    The PBMPlus package is not implemented with portability in mind.  There
  387. > |"    are numerous instances within the code where byte order or word size
  388. > |"    is assumed.  Such code will not work on a Cray, for instance.
  389. > The PBMPlus package did have portability in mind - the p*m-libraries allow you
  390. > to read and write binary data in a portable way. The people who contributed to
  391. > PBMPLUS may have chosen to not use those. That's unfortunate.
  392. > |"
  393. > |"9.  The SDSC Image Tools were designed to have a consistent and intuitive user
  394. > |"    interface.  All tools have -help arguments to display on-line help
  395. > |"    information distilled from the full man pages.  Argument parsing is
  396. > |"    consistent throughout the package.
  397. > Argument parsing can be done consistently in PBMPLUS, the facilities are
  398. > there; again, people chose to use their own when contributing, rather than
  399. > using the provide facilities. It's a matter of attitude: people who use your
  400. > library are not in any way restricted to use the routines you provide, are
  401. > they ?
  402.  
  403. The hodge-podge nature of the PBMPlus package's support for portability,
  404. consistency of user interface, extent of file format support, and completeness
  405. of documentation are all fully understandable.  This doesn't make them any
  406. less of a problem for the user faced with trying to learn to use the package.
  407.  
  408.  
  409. > |"-  PBMPlus is not faster.  It couldn't be.  To do anything in it you first
  410. > |"   have to convert your image file to one of the PBMPlus file formats.  Then,
  411. > |"   after doing your task, you have to convert back out again into the format
  412. > |"   you really want your result in.  At a minimum this requires two extra file
  413. > |"   reads and two extra file writes.
  414. > No. Ever heard of pipes ? After all, we are talking high-end machines here!
  415.  
  416. Indeed.  However, work involved in the conversion to and from the PBM file
  417. formats requires computation time and pipe streams require data storage space
  418. (swap or file system space, it doesn't matter) even when pipes are used
  419. instead of intermediate data files.  Piping of data avoids user-visable temp
  420. files, but does not significantly affect execution times.  Use of piped
  421. commands in PBMPlus is slower than equivalent non-piped tasks done with the
  422. SDSC Image Tools.  This is unavoidable.
  423.  
  424. The SDSC Image Tools also support piping of data between image file formats.
  425. All tools can read or write all file formats from stdin or stdout, respectively.
  426.  
  427.  
  428. > |"   The "ppmquant" is necessary because the rotated image will have more than
  429. > |"   256 colors (an artifact of the rotation algorithm).  Calling "pnmtorast"
  430. > |"   on an image with more than 256 colors generates an RGB RAS file, not an
  431. > |"   8-bit RAS file suitable for display on a SPARCstation.  So, if we want an
  432. > |"   8-bit RAS file, we first have to quantize the image back down to 256 colors.
  433. > No, you should use Xloadimage instead.
  434.  
  435. If one's end goal is to display an image on one's workstation, and one has
  436. Xloadimage, then use of Xloadimage (or any of the great display tools out
  437. there) is certainly the prefered approach.
  438.  
  439. However, if one's goal is to send the image to someone who might not have
  440. Xloadimage, or to print it to an 8-bit output device, or to display it on a
  441. non-X display, or to process it's color table for color table cycling, or to
  442. use it as an alpha mask in a paint program or rendering system, then use of
  443. Xloadimage is certainly not going to work.  In these cases one must convert the
  444. image back to 8-bit with 256 or fewer colors.  "ppmquant" becomes necessary
  445. and slows down the procedure in PBMPlus.
  446.  
  447. The example in my posting was to compare two solutions to a generic goal:
  448. rotate an 8-bit image and give back an 8-bit image.  In such a comparison,
  449. the PBMPlus package solution requires more time and hassle than equivalent
  450. actions in the SDSC Image Tools.  I consider this a representative task
  451. for comparison purposes.
  452.  
  453. You are, of course, free to make your own comparisons in your own real-world
  454. situations.
  455.  
  456.  
  457. > Next time, a more objective comparison would be a lot nicer and increase your
  458. > credibility.
  459.  
  460. You, or anyone else, are certainly encouraged to do so.  Others have.  I
  461. would, however, ask that reviwers of the two packages read both the PBMPlus
  462. and the SDSC Image Tools documentation and papers first.  This will insure
  463. that opinions formed are accurate.
  464.  
  465.  
  466. Dave Nadeau                        nadeau@sdsc.edu
  467. Advanced Scientific Visualization Laboratory        (619) 534-5062
  468. San Diego Supercomputer Center
  469. P.O. Box 85608   San Diego, CA   92186-9784
  470.  
  471.