Lunar surface
When modeling surfaces of atmosphereless bodies, one needs a realistic
crater model. In addition to heavily cratered landscapes, Moon has also
quite flat areas where lava has filled the fresh craters. The top layer of
the surface is called regolith, which is composed of irregular, gray dust
particles. When observing the lunar surface from a satellite, the scattered
Sun light depends on both the light scattering properties of the particles,
and the scattering geometry. Light scattering can be described by a
disk-resolved photometric model: I(ι,ε,α)=ϖF/4 cos
ι/(cos ι+cos ε) F_s(ι,ε) P_11(α) +
F_m(ιε,α; ϖ, P_11),
where ι is the angle of incidence, ε the angle of emergence,
α the phase angle, ϖ the single scattering albedo, πF is the
incident solar flux, F_s the single scattering function that depends on the
surface roughness and porosity, P_11 is the single scattering phase function,
and $F_m$ is the multiple scattering function typically approximated by
Chandrasekhar's H-functions derived from the radiative transfer theory.
I/F is sometimes called the bidirectional reflectance. There have been several
semi-empirical models that define F_s and F_m with physically based
parameters. The factor 1/(cos ι+cos ε) is called the
Lommel-Seeliger scattering law, which holds for isotropic single scattering.
It has been shown that the lunar surface obeys this law very closely.
Scattering model
In the lunar surface model, a simplified scattering law is used to speed up
computatations. First, any multiple scattering is neglected. For non-icy
surfaces, this is a feasible approximation. Second, surface roughness is
modeled only in a macroscopic (image pixel) level. A random fractal model is
used to produce realistic looking macroscopic roughness. The incident flux
density factor πF/4 is set to unity. One parameter is the albedo of the
surface element, which is the product of ϖ and P_11.
The surface is illuminated for each surface element separately. Before
illumination, the surface is triangulated so that each image pixel consists
of two triangles. The scattering is computed for each triangle with a simple
ray-tracing model that determines, whether the surface element is in shadow.
If not, a gray image pixel value is generated according to the local angles
of emergence and incidence, which depend on the orientation of the surface
normal. Because each image pixel consists of two triangles, these are averaged.
Crater model
There are no two identical craters on the lunar surface, but the craters can
be classified into rough categories based on their actual size. The smallest,
low-energy impact craters are parabolic or conical in shape, while medium-sized
craters can have flat or slumped floors. Large craters can also have a central
peak. The largest craters can also have central rings. Several empirical laws
have been produced for the lunar craters to relate the diameter of the crater
to its depth, or the height of its rim. These are also used in the model.
The crater modeling is based on the model by S. M. Parkes and I. Martin (1999),
with some additional modifications for large craters.
Lunar surface simulator
The surface engine is coded with Fortran 90. The graphical user interface is
a Java application, which uses the Fortran codes as external executables
giving the parameters as command-line arguments. The user can control the
scattering geometry, surface type, surface resolution (scale), and add
additional craters. The application generates the surface, illuminates it, and
produces a raw image, a pgm image, and a png image, which is shown in the
application window.