POV-Ray : Newsgroups : povray.newusers : What ARE isosurfaces? Server Time
5 Nov 2024 09:26:01 EST (-0500)
  What ARE isosurfaces? (Message 1 to 4 of 4)  
From: Mark M  Wilson
Subject: What ARE isosurfaces?
Date: 30 Jul 2001 11:58:46
Message: <3B6585B5.C69CEC1B@ncsl.dcr.state.nc.us>
Could someone explain them to a new user, not just to POV-Ray, but
raytracing and any type of computer graphics at all? In more-or-less
plain English?
--Mark M. Wilson


Post a reply to this message

From: Christoph Hormann
Subject: Re: What ARE isosurfaces?
Date: 30 Jul 2001 13:00:50
Message: <3B65934E.BC5FA4A3@gmx.de>
"Mark M. Wilson" wrote:
> 
> Could someone explain them to a new user, not just to POV-Ray, but
> raytracing and any type of computer graphics at all? In more-or-less
> plain English?

Isosurfaces are equipotential surfaces of 3D mathematical functions,
usually written in the form:

f(x, y, z)

This means that all points in space (x, y, z) where the function has a
certain value (0 by default in Povray) form a surface.  

This is of course quite mathematical, but that's life... For details see a
good math book. :-)

The raytracer now has to find the intersection of a line (ray) with the
object - not a trivial task since you only have the (possibly complicated)
function.  Povray directly traces the isosurfaces which involves a lot of
evaluations of the function and is quite critical when the function value
changes very fast (high gradient).  Another method would be tesselating
the isosurface first and rendering the resulting mesh.

Christoph

-- 
Christoph Hormann <chr### [at] gmxde>
IsoWood include, radiosity tutorial, TransSkin and other 
things on: http://www.schunter.etc.tu-bs.de/~chris/


Post a reply to this message

From: Tom Melly
Subject: Re: What ARE isosurfaces?
Date: 31 Jul 2001 04:52:07
Message: <3b6671b7$1@news.povray.org>
"Mark M. Wilson" <mmw### [at] ncsldcrstatencus> wrote in message
news:3B6585B5.C69CEC1B@ncsl.dcr.state.nc.us...
> Could someone explain them to a new user, not just to POV-Ray, but
> raytracing and any type of computer graphics at all? In more-or-less
> plain English?
> --Mark M. Wilson

Probably the simplest iso-surface is a plane. The function for it would be y -
i.e. "create a surface at all points where y=0"

A sphere is still pretty straight forward: sqr(x) + sqr(y) + sqr(z) - 1, i.e.
"create a surface where the square of x plus the square of y plus the square of
z minus 1 = 0".

If you're a math-idiot like me, the best way to understand why this works is to
do the math on a few easy points, for example (1,0,0), (-1,0,0), (0,1,0), etc.


Post a reply to this message

From: Chris Huff
Subject: Re: What ARE isosurfaces?
Date: 31 Jul 2001 11:18:24
Message: <chrishuff-2A35A7.10160631072001@netplex.aussie.org>
In article <3b6671b7$1@news.povray.org>,
 "Tom Melly" <tom### [at] tomandlucouk> wrote:

> A sphere is still pretty straight forward: sqr(x) + sqr(y) + sqr(z) - 1, i.e.
> "create a surface where the square of x plus the square of y plus the square 
> of z minus 1 = 0".

Actually, you may want to use "sqrt(sqr(x) + sqr(y) + sqr(z)) - Radius". 
This one is easier to describe as well: sqrt(sqr(x) + sqr(y) + sqr(z)) 
equals the distance from the origin, so the surface of this function is 
created by all the points where the distance from the origin minus a 
radius value equals 0...in other words, all points where the distance 
from the origin equals the radius.
Your function might be a little faster, since it doesn't have a sqrt() 
call...but it also returns the square of the distance instead of the 
distance. Because the square of 1 is 1, it still works for a sphere of 
radius 1, but you will have to square the radius to use other radii, and 
it won't give the expected results if you alter the surface with other 
functions ("displacement mapping").
Note that this function starts out with a value of -Radius at the 
origin, increases to 0 at the surface of the sphere, and continues to 
increase beyond that. If you want it to start out positive and drop 
(like the spherical pattern), switch the radius and distance portions 
around:
function {Radius - sqrt(sqr(x) + sqr(y) + sqr(z))}
Note: To really mimic the spherical pattern, you would have to prevent 
it from going negative by putting it in a call to max().


Basically, POV takes a mathematical function that takes xyz coordinates 
and returns a smoothly changing float value. It then steps its way along 
each ray passing through the container object for the isosurface, 
searching for points where the function is equal (or very close to) the 
threshold value, resulting in a surface.

I tend to visualize the functions as density fields, or groups of 
density fields that interact. After working with them a while, you will 
learn that some functions create specific "shapes" and be able to mix 
them together. You don't need to know any trigonometry or calculus, 
simple algebra is enough, but it is very helpful to know the graphs of 
the trig functions, because these are usually used to change the shapes 
of isosurfaces.

-- 
Christopher James Huff - chr### [at] maccom, http://homepage.mac.com/chrishuff/
TAG: chr### [at] tagpovrayorg, http://tag.povray.org/

<><


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.