If at least one user defined light source is inserted into the
scene (e.g., by simply passing the light objects as input parameters
to the plot command),
the automatic lights are switched off and the user defined lights
are used to illuminate the scene.

plot::SpotLight([px, py,
pz], [tx, ty,
tz], angle) creates a spot light
source at the point [px, py, pz]
emitting a light cone towards the point [tx, ty, tz].
In contrast to real life, the light flux of a spot light does not
decrease with the distance to the light source.

By default, white light is created. Other colours can be chosen
by the attribute LightColor.

When using the attribute CameraCoordinates = TRUE,
the light source is fixed to the camera. It moves automatically, when
the camera is moved.

Directed light such as plot::SpotLight create
shading effects that add depth to the picture.

Usually, you will use spot lights to highlight special details
of the scene. For the illumination of the entire scene you will usually
need additional undirected ambient light of type plot::AmbientLight,
too.

Note that all light sources create a homogeneous lighing effect
for a 3D triangle. Thus, realistic shading effects can only be achieved
for surfaces with a sufficiently fine triangulation. For function
graphs (plot::Function3d) and parametrized surfaces
(plot::Surface),
a fine triangulation is created by sufficiently high values of XMesh, YMesh or UMesh, VMesh,
respectively.