chasman@athena.mit.edu (David Chasman) (03/15/91)
Umm, I've never read or posted to either of these groups. What I am looking
for is some code to take the function zz = f(x,y,z) and render the 3-D surface
which corresponds to this.
Ideally, I'd like C-code for a silicon graphics machine.
My current technique is to evaluate f(x,y,z) for all discretized
(x,y,z) inside of a cube - and to light up a point
if :
| f(x,y,z) - constant | < Epsilon
if you have any ideas - please help.
--David Chasman
chasman@athena.mit.edu
krogh@talon.ncsa.uiuc.edu (Mike Krogh) (03/15/91)
This type of surface is known as an isosurface. You can get some public domain software from NCSA's anonymous ftp server (ftp.ncsa.uiuc.edu or 128.174.20.50 [this may change to 141.142.20.50 any day now]). After logging into the server, go into the directory 'isovis' and get the stuff in there, which includes binaries, source, and documentation. This code will work on most machines, but has a option for displaying the output on an SGI workstation. You can also find a lot of other visualization tools on our server. Mike Krogh NCSA krogh@ncsa.uiuc.edu In article <1991Mar14.234739.15281@athena.mit.edu>, chasman@athena.mit.edu (David Chasman) writes: > Umm, I've never read or posted to either of these groups. What I am looking > for is some code to take the function zz = f(x,y,z) and render the 3-D surface > which corresponds to this. > > Ideally, I'd like C-code for a silicon graphics machine. > > My current technique is to evaluate f(x,y,z) for all discretized > (x,y,z) inside of a cube - and to light up a point > if : > | f(x,y,z) - constant | < Epsilon > > if you have any ideas - please help. > > --David Chasman > chasman@athena.mit.edu
foo@erfordia.rice.edu (Mark Hall) (03/15/91)
In article <1991Mar14.234739.15281@athena.mit.edu> chasman@athena.mit.edu (David Chasman) writes: )What I am looking )for is some code to take the function zz = f(x,y,z) and render the 3-D surface )which corresponds to this. see @Article{WMW:soft, author = "Geoff Wyvill and Craig McPheeters and Brian Wyvill", title = "Data Structure for {\it Soft} Objects", journal = viscomp, year = 1986, volume = 2, number = 4, month = "August", pages = "227--234" } @Article{Upson:Amorphous, author = "Craig Upson", title = "The Visual Simulation of Amorphous Phenomena", journal = viscomp, volume = 2, number = 5, month = "September", year = 1986, pages = "321--326" } @Article{LC:MCubes, author = "W. Lorenson and H. Cline", title = "Marching Cubes: A High Resolution 3D Surface Construction Alg$ journal = siggraph, year = 1987, month = "August", volume = 21, number = 4, pages = "163--169" } @Article{Bloom:ImpSurf, author = "Jules Bloomenthal", title = "Polygonalization of Implicit Surfaces", journal = cagd, year = 1988, volume = 5, pages = "341--355" } Also, there is a very brief summary in the book "Graphics Gems", the article is "Defining Surfaces from Sampled Data". - mark
okeefe@cs.Buffalo.EDU (Paul O'Keefe) (03/16/91)
In article <1991Mar14.234739.15281@athena.mit.edu>, chasman@athena.mit.edu (David Chasman) writes: |> What I am looking |> for is some code to take the function zz = f(x,y,z) and render the 3-D surface |> which corresponds to this. |> |> Ideally, I'd like C-code for a silicon graphics machine. |> In addition to those already cited: One) apE from OSU has a module Onion which implements Lorenson and Cline's Marching Cubes alogorithm. It comes with SGI binaries and source. Since apE is a complete environment, it can render the results. However, apE also comes with a $75.00 price and some license restrictions which differ for academic and non-academic users. Info on apE is available via anonymous ftp at apE.osgp.osc.edu (128.146.18.18). Two) There is a C code implementation of Marching Cubes by Steve Lamont formerly of the NC SuperComputer Center. It's available via anonymous ftp at szechuan.ncsc.org. Three) Although Marc Levoy is most famous for his volume rendering algorithm, he also has an iso-value surface rendering algorithm. @Article{LC:, author = "Levoy, Marc", title = "Display of Surfaces from Volume Data", journal = IEEE Computer Graphics and Applications, year = 1988, month = "May", volume = 8, number = 3, pages = "29-37" } -Paul O'Keefe
jk87377@cc.tut.fi (Juhana Kouhia) (03/16/91)
In article <1991Mar14.234739.15281@athena.mit.edu> chasman@athena.mit.edu (David Chasman) writes: > >My current technique is to evaluate f(x,y,z) for all discretized >(x,y,z) inside of a cube - and to light up a point >if : > | f(x,y,z) - constant | < Epsilon Try use a ray tracing (hopefully you know that method): 1. ray from eye through a pixel to the world Ray = Eye+t*normalize(Pixel-Eye) ; t is distance from eye 2. calculate an intersection points of cube and ray --> t1, t2 3. for (t = t1; t < t2; t = t + small_step) { Ray = Eye+t*Direction; F = f(Ray); if (abs(F-constant) < Epsilon) return Ray; /* point is found */ } /* point is not found */ Rest of this home exam is your job. I use something similar to calculate 4D Mandelbrot. Similarly you can make this algorithm much faster, because you have a mathematical function. Juhana Kouhia jk87377@cs.tut.fi ^^^