function value = voxels_dist_l1_nd ( dim_num, p1, p2 )

%*****************************************************************************80
%
%% voxels_dist_l1_nd() computes the L1 distance between voxels in ND.
%
%  Discussion:
%
%    A voxel is generally a point in 3D space with integer coordinates.
%    There's no reason to stick with 3D, so this routine will handle any dimension.
%
%    We can imagine that, in traveling from P1 to P2, we are allowed to 
%    increment or decrement just one coordinate at a time.  The minimum number 
%    of such changes required is the L1 distance. 
%
%    More formally,
%
%      DIST_L1 ( P1, P2 ) = sum ( 1 <= I <= N ) | P1(I) - P2(I) |
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    23 May 2005
%
%  Author:
%
%    John Burkardt
%
%  Input:
%
%    integer DIM_NUM, the spatial dimension.
%
%    integer P1(DIM_NUM), the voxel that begins the line.
%
%    integer P2(DIM_NUM), the voxel that ends the line.
%
%  Output:
%
%    integer VALUE, the L1 distance between the voxels.
%
  value = sum ( abs ( p1(1:dim_num) - p2(1:dim_num) ) );

  return
end
