This code was written on a Linux machine but should compile fine with minor adjustments. To run the code, your input file should have three values for each pixel (x-velocity, y-velocity and 0 or pressure for 2D or z-velocity for 3D). You can easily change the code so that you only take two values per pixel. It's a basic file stream reader. The program assumes that the file name is called velocity.dat, but you can change this at the command line. Of course, you need a random field to run the LIC, and this can be done by making the 'rand' program and running it to create the proper sized random input. You can set the code up for 3-D by defining THREE_D in the makefile. It's defaulted to 2D, especially since there is no volume renderer here, not to mention the issues surrounding HOW to properly show this 3D scalar data. You can also define an intersection object of one kind or another. I have a cylinder in there for the 101 x 101 case. You can blank these pixels out by defining CYLINDER. Recent adjustments to the code have made this unnecessary, however. You can play with it, and see what you think. General Usage: main options: -in fileIn.dat : Designates image in file. Defaults to rand.dat -out fileOut.dat : Designates output image. Defaults to out.dat (Currently pgm format) There is no file out if THREE_D defined. Instead OpenGL is used to project the image -vel VelocityIn.dat : Designates input velocity. Defaults to velocity.dat. Format is ux uy uz velocities per line (uz only used if THREE_D defined) -L FILTERLENGTH : Designates filter length. Defaults to 15 (forward and backward, so total = 15) -W WIDTH : Designates WIDTH (width of the input and output images - defaults to SIZE1 in LIC.h) -H HEIGHT : Designates HEIGHT (height of the input and output images - defaults to SIZE2 in LIC.h) -D DEPTH : Designates DEPTH when THREE_D is defined (depth of the input and output images - defaults to SIZE3 in LIC.h) The usage above is the same for 'rand' which outputs rand.dat. Example usage: %home%> ./main -in rand2.dat -out output.pgm -vel velocity_test.dat -L 15 -W 1280 -H 640 You can test different filter lengths as well to see what works best for your field. By the way, you'll see from the code that I still have alot of things I'm fixing. If you make any adjustments that work great for you, let me know if possible. Harper Langston harper@cat.nyu.edu http://cat.nyu.edu/~harper