SPHERE_GRID is a FORTRAN77 library which constructs a variety of sets of points on the surface of the unit sphere.
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 computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
SPHERE_GRID is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.
DISTANCE_TO_POSITION_SPHERE, a MATLAB program which estimates the positions of cities on a sphere (such as the earth) based on a city-to-city distance table.
GEOMETRY, a FORTRAN77 library which performs geometric calculations in 2, 3 and N dimensional space.
SPHERE_CVT, a FORTRAN90 library which creates a mesh of well-separated points on a unit sphere using Centroidal Voronoi Tessellations.
SPHERE_DELAUNAY, a FORTRAN90 program which computes and plots the Delaunay triangulation of points on the unit sphere.
SPHERE_DESIGN_RULE, a FORTRAN90 library which returns point sets on the surface of the unit sphere, known as "designs", which can be useful for estimating integrals on the surface, among other uses.
SPHERE_GRID, a dataset directory which contains grids of points, lines, triangles or quadrilaterals on a sphere;
SPHERE_LEBEDEV_RULE, a FORTRAN77 library which computes Lebedev quadrature rules for the unit sphere;
SPHERE_QUAD, a FORTRAN77 library which approximates an integral over the surface of the unit sphere by applying a triangulation to the surface;
SPHERE_VORONOI, a FORTRAN90 program which computes and plots the Voronoi diagram of points on the unit sphere.
SPHERE_XYZ_DISPLAY, a MATLAB program which reads XYZ information defining points in 3D, and displays a unit sphere and the points in the MATLAB graphics window.
SPHERE_XYZ_DISPLAY_OPENGL, a C++ program which reads XYZ information defining points in 3D, and displays a unit sphere and the points, using OpenGL.
STRIPACK, a FORTRAN90 library which computes the Delaunay triangulation or Voronoi diagram of points on a unit sphere.
STRIPACK_INTERACTIVE, a FORTRAN90 program which reads a set of points on the unit sphere, computes the Delaunay triangulation, and writes it to a file.
STROUD, a FORTRAN77 library which defines quadrature rules for a variety of multidimensional regions.
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.
To see data files and images of the sphere grids created by this example program, go to the SPHERE_GRID dataset directory.
You can go up one level to the FORTRAN77 source codes.