anchor.diff:  !-------------------------------------------------------------------------------
   
   !===============================================================================
  +function st_barycentre(p)
  +!===============================================================================
  +!  Return the barycentre of an array of points, normalised to the radius of 1.
  +   type(point), intent(in), dimension(:) :: p
  +   type(point) :: st_barycentre
  +   integer :: n
  +   n = size(p)
  +   st_barycentre = point(sum(p%x), sum(p%y), sum(p%z))
  +   call st_norm_p(st_barycentre)
  +end function st_barycentre
  +!-------------------------------------------------------------------------------
  +
  +!===============================================================================
   function tolower(a) result(b)
   !===============================================================================
   !  Convert the uppercase characters in a string to lowercase
  
positive.code:    type(point), allocatable, dimension(:) :: p
     type(triangle), allocatable, dimension(:) :: t
     integer :: np, nt
  end type tesselation
  
  
  
negative.code: ! A tesselation of a sphere, with np vertices and nt triangles
  ! p contains all unique points in the tesselation
  ! t contains the indices of p which correspond to the vertices of each triangle
  ! b contains the barycentric coordinates of each triangle
  ! Hence to get the corners of triangle i, you can say:
  !     pt = tess%p(tess%t(i))
  !     x = pt%x;  y = pt%y;  z = pt%z
  