sphere_delaunay
sphere_delaunay,
an Octave code which
computes the Delaunay triangulation of points on the unit sphere.
According to Steven Fortune, it is possible to compute the Delaunay triangulation
of points on a sphere by computing their convex hull. If the sphere is the unit
sphere at the origin, the facet normals are the Voronoi vertices.
sphere_delaunay() uses this approach, by calling the convhulln()
function to generate the convex hull. The information defining the convex hull
is actually the desired triangulation of the points. Since this computation
is so easy, other parts of the program are designed to analyze the resulting
Delaunay triangulation and return other information, such as the areas of the
triangles and so on.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the MIT license
Languages:
sphere_delaunay is available in
a Fortran90 version and
a MATLAB version and
an Octave version.
Related Data and Programs:
sphere_delaunay_test
geometry,
an Octave code which
computes various geometric quantities, including grids on spheres.
sphere_cvt,
an Octave code which
creates a mesh of well-separated points on a unit sphere by applying the
centroidal voronoi tessellation (cvt) iteration.
sphere_grid,
an Octave code which
provides a number of ways of generating grids of points, or of
points and lines, or of points and lines and faces, over the unit sphere.
sphere_voronoi,
an Octave code which
computes the voronoi diagram of points on a sphere.
Reference:
-
Jacob Goodman, Joseph ORourke, editors,
Handbook of Discrete and Computational Geometry,
Second Edition,
CRC/Chapman and Hall, 2004,
ISBN: 1-58488-301-4,
LC: QA167.H36.
-
Robert Renka,
Algorithm 772:
STRIPACK:
Delaunay Triangulation and Voronoi Diagram on the Surface
of a Sphere,
ACM Transactions on Mathematical Software,
Volume 23, Number 3, September 1997, pages 416-434.
Source Code:
-
atan4.m,
computes the inverse tangent;
-
i4col_compare.m,
compares two columns of an I4COL;
-
i4col_sort_a.m,
ascending sorts the columns of an I4COL;
-
i4col_swap.m,
swaps two columns of an I4COL;
-
i4mat_transpose_print.m,
prints an I4MAT, transposed;
-
i4mat_transpose_print_some.m,
prints some of an I4MAT, transposed;
-
icos_shape.m,
returns the shape of an icosahedron.
-
icos_size.m,
returns size information for an icosahedron.
-
r8mat_transpose_print.m,
prints the transpose of an R8MAT;
-
r8mat_transpose_print_some.m,
prints some of the transpose of an R8MAT;
-
r8mat_uniform_01.m,
returns a unit pseudorandom R8MAT;
-
r8vec_normal_01.m,
returns unit pseudonormal R8VEC.
-
r8vec_polarize.m,
decomposes an R8VEC into normal and parallel components;
-
r8vec_print.m,
prints an R8VEC.
-
r8vec_uniform_01.m,
returns a unit pseudorandom R8VEC.
-
sort_heap_external.m,
external sorts a list of values into ascending order;
-
sphere_delaunay.m,
returns the Delaunay triangulation of points on the unit sphere.
-
sphere_grid_icos_size.m,
returns size information for an icosahedral grid on the sphere.
-
sphere_gridpoints_icos2.m,
returnspoints of an icosahedral grid on the sphere.
-
stri_angles_to_area.m,
computes the area of a spherical triangle;
-
stri_sides_to_angles.m,
computes the angles of a spherical triangle from its sides;
-
stri_vertices_to_area.m,
computes the area of a spherical triangle from its vertices;
-
stri_vertices_to_sides.m,
computes the sides of a spherical triangle from its sides;
-
triangulation_neighhbor_triangles.m,
determines triangle neighbors in a triangulation;
-
uniform_on_sphere01_map.m,
returns uniform random points on the unit sphere.
Last revised on 10 May 2023.