An implicit surface in three-dimensional space is defined
as a level surface of a function *f(x,y,z)*. That is, the
surface consists of the set of points *(x,y,z)* such
that *f(x,y,z)=k*, where *k* is a constant. As
a simple example, the unit sphere can be defined as an
implicit surface using the function *f(x,y,z)* =
*x ^{2}+y^{2}+z^{2}* and the
constant

An implicit surface can be unbounded, but 3D-XplorMath-J will
show only the part of a surface that lies within a specified
sphere centered at the origin. The radius of this sphere is
given by the exhibit parameter *Radius of Search Sphere*.
Recall that the value of this parameter, like all exhibit
parameters, can be set using the "Set Parameters" command in
the "Settings" menu.

3D-XplorMath-J provides two different visual representations
of an implicit surface: as a *dot-cloud* and as a
*ray-traced* image. The default representation is a
dot-cloud rendered in the Anaglyph Stereo Vision. The user
can select between these two representation using the
"Use Point Cloud Rendering" and "Use Ray-traced Rendering"
options in the "Actions" menu.

In the dot-cloud rendering, the implicit surface represented by a random
scattering of points on the surface. The points are generated
by selecting lines at random and calculating the points where
those lines intersect the surface. (It is an interesting fact that --
provided the correct probability distribution is used on the set of
lines -- the points chosen in this way are scattered *evenly*
on the surface; that is, the number of points in a given piece of
the surface is proportional to the area of that piece.)
The number of desired surface points is specified by the parameter named
"Number of Points in Point Cloud." The maximum number of random lines
that will be checked is specified by the "Number of Random
Lines" parameter. The program generates lines and computes intersection
points until it has either found the desired number of points or
checked the specified maximum number of lines.

In the ray-traced rendering, the representation of the surface is created by "casting rays": For each pixel in the image, consider the line from the viewpoint through that pixel. Determine the first point, if any, where this line intersects the surface. That point is the point that is visible at the given pixel, and the pixel should be colored to represent that point on the surface. The actual color that is used is computed using the normal vector to the surface at that point and the properties of the lights that are illuminating the surface. (The lighting properties can be set using the "Light Settings" command in the "Settings" menu). Ray-tracing produces a very realistic looking image.

Note that it can take some time to compute the full ray-traced image. When a ray-traced rendering first appears, a rough, low-resolution image is shown. The full-resolution rendering is then filled in progressively, as it is computed. The low-resolution image is also used when a ray-traced surface is being rotated or dragged.

(The Implicit Surfaces gallery is a sub-gallery of the Surfaces gallery, but it is quite a bit different from the other sub-galleries of that galleries.)