sphere_grid


sphere_grid, a FORTRAN90 code which constructs a variety of sets of points over the surface of the unit sphere in 3D.

A grid on a sphere may mean a set of points, or a set of points and lines that connect them, or a set of points, lines that connect them, and the faces that are bounded by those lines.

A grid may be desired which simply organizes areas. In that case, something like the latitude and longitude lines on a globe may be sufficient, even though "evenly spaced" latitude and longitude lines result in grid cells that are close to rectangular near the equator, but become more asymmetric near the poles.

A grid may also be desired for sampling, that is, for choosing a set of points that are well spread across the sphere. A simple Monte Carlo approach can be used, although this means that the data is only well spread out in the long view; there may be local clusters and gaps.

Other grids are generated by drawing a spiral on the surface of the sphere, and choosing points at regular spacings along that line, or by projecting an icosahedron onto the surface of the sphere, which divides the surface into 20 congruent spherical triangles, and then dealing with the simpler issue of choosing points from the triangles.

The test program uses gnuplot() to make images of some of the grids.

Licensing:

The computer code and data files described and made available on this web page are distributed under the MIT license

Languages:

sphere_grid is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

CUBE_GRID, a FORTRAN90 code which computes a grid of points over the interior of a cube in 3D.

DISK_GRID, a FORTRAN90 code which computes a grid of points over the interior of a disk in 2D.

gnuplot_test, FORTRAN90 codes which write data and command files so that gnuplot() can create plots.

HYPERCUBE_GRID, a FORTRAN90 code which computes a grid of points over the interior of a hypercube in M dimensions.

LINE_GRID, a FORTRAN90 code which computes a grid of points over the interior of a line segment in 1D.

POLYGON_GRID, a FORTRAN90 code which generates a grid of points over the interior of a polygon in 2D.

PYRAMID_GRID, a FORTRAN90 code which computes a grid of points over the interior of the unit pyramid in 3D;

SIMPLEX_GRID, a FORTRAN90 code which generates a regular grid of points over the interior of a simplex in M dimensions.

SPHERE_CUBED_GRID, a FORTRAN90 code which uses the projection of a cube to create grids of points, lines, and quadrilaterals on the surface of the unit sphere in 3D.

SPHERE_FIBONACCI_GRID, a FORTRAN90 code which uses a Fibonacci spiral to create a grid of points on the surface of the unit sphere in 3D.

sphere_grid_test

SPHERE_INTEGRALS, a FORTRAN90 code which defines test functions for integration over the surface of the unit sphere in 3D.

SPHERE_LEBEDEV_RULE, a FORTRAN90 code which computes Lebedev quadrature rules for the unit sphere;

SPHERE_LLQ_GRID, a FORTRAN90 code which uses longitudes and latitudes to create grids of points, lines, and quadrilaterals on the surface of the unit sphere in 3D.

SPHERE_LLT_GRID, a FORTRAN90 code which uses longitudes and latitudes to create grids of points, lines, and triangles on the surface of the unit sphere in 3D.

SPHERE_STEREOGRAPH, a FORTRAN90 code which computes the stereographic mapping between points on the unit sphere and points on the plane Z = 1; a generalized mapping is also available.

SPHERE_TRIANGLE_QUAD, a FORTRAN90 code which estimates the integral of a function over a spherical triangle.

SPHERE_VORONOI, a FORTRAN90 code which computes and plots the Voronoi diagram of points on the unit sphere.

STRIPACK, a FORTRAN90 code which computes the Delaunay triangulation or Voronoi diagram of points over the surface of the unit sphere in 3D.

WEDGE_GRID, a FORTRAN90 code which computes a grid of points over the interior of the unit wedge in 3D.

XYZ_DISPLAY, a MATLAB program which reads XYZ information defining points in 3D, and displays an image in the MATLAB graphics window.

XYZ_DISPLAY_OPENGL, a C++ program which reads XYZ information defining points in 3D, and displays an image using OpenGL.

Reference:

  1. Edward Saff, Arno Kuijlaars,
    Distributing Many Points on a Sphere,
    The Mathematical Intelligencer,
    Volume 19, Number 1, 1997, pages 5-11.
  2. Richard Swinbank, James Purser,
    Fibonacci grids: A novel approach to global modelling,
    Quarterly Journal of the Royal Meteorological Society,
    Volume 132, Number 619, July 2006 Part B, pages 1769-1793.

Source Code:

To see the XYZ data files and images of the sphere grids created by this example program, go to the SPHERE_GRID dataset directory.


Last revised on 29 August 2020.