CVT
Centroidal Voronoi Tessellations


CVT is a library of MATLAB routines for creating Centroidal Voronoi Tessellation (CVT) datasets.

The generation of a CVT dataset is of necessity more complicated than for a quasirandom sequence. An iteration is involved, so there must be an initial assignment for the generators, and then a number of iterations. Moreover, in each iteration, estimates must be made of the volume and location of the Voronoi cells. This is typically done by Monte Carlo sampling. The accuracy of the resulting CVT depends in part on the number of sampling points and the number of iterations taken.

The library is mostly used to generate a dataset of points uniformly distributed in the unit hypersquare. However, a user may be interested in computations with other geometries or point densities. To do this, the user needs to replace the USER routine in the CVT library, and then specify the appropriate values init=3 and sample=3.

The USER routine returns a set of sample points from the region of interest. The default USER routine samples points uniformly from the unit circle. But other geometries are easy to set up. Changing the point density simply requires weighting the sampling in the region.

Related Data and Programs:

CCVT_BOX is a MATLAB program which constructs a modified CVT in which some points are forced to lie on the boundary.

CCVT_REFLECT is a MATLAB program which tries to construct a modified CVT in which some points are forced to lie on the boundary, using a reflection idea.

CVT is also available in a C++ version and a FORTRAN90 version.

CVT is a dataset directory which contains a variety of examples of CVT datasets.

CVT_1D_NONUNIFORM is a MATLAB program which constructs a CVT in one dimension, under a nonuniform density function.

CVT_DATASET is an interactive MATLAB program that can create a CVT dataset.

CVT_DEMO is an interactic MATLAB program which demonstrates a CVT calculation.

FAURE is a MATLAB library of routines which compute elements of a Faure quasirandom sequence.

GRID is a MATLAB library of routines which compute elements of a grid dataset.

HALTON is a MATLAB library of routines which compute elements of a Halton quasirandom sequence.

HAMMERSLEY is a MATLAB library of routines which compute elements of a Hammersley quasirandom sequence.

HEX_GRID is a MATLAB library of routines which compute elements of a hexagonal grid dataset.

IHS is a MATLAB library of routines which compute elements of an improved distributed Latin hypercube dataset.

LATIN_CENTER is a MATLAB library of routines which compute elements of a Latin Hypercube dataset, choosing center points.

LATIN_EDGE is a MATLAB library of routines which compute elements of a Latin Hypercube dataset, choosing edge points.

LATIN_RANDOM is a MATLAB library of routines which compute elements of a Latin Hypercube dataset, choosing points at random.

LCVT is a MATLAB library of routines which compute a latinized Centroidal Voronoi Tessellation.

NIEDERREITER2 is a MATLAB library of routines which compute elements of a Niederreiter quasirandom sequence with base 2.

SOBOL is a MATLAB library of routines which compute elements of a Sobol quasirandom sequence.

UNIFORM is a MATLAB library of routines which compute elements of a uniform pseudorandom sequence.

VAN_DER_CORPUT is a MATLAB library of routines which compute elements of a van der Corput quasirandom sequence.

Reference:

  1. Franz Aurenhammer,
    Voronoi diagrams - a study of a fundamental geometric data structure,
    ACM Computing Surveys,
    Volume 23, Number 3, September 1991, pages 345-405.
    ../../pdf/aurenhammer.pdf
  2. Paul Bratley, Bennett Fox, Linus Schrage,
    A Guide to Simulation,
    Second Edition,
    Springer, 1987,
    ISBN: 0387964673.
  3. John Burkardt, Max Gunzburger, Janet Peterson, Rebecca Brannon,
    User Manual and Supporting Information for Library of Codes for Centroidal Voronoi Placement and Associated Zeroth, First, and Second Moment Determination,
    Sandia National Laboratories Technical Report SAND2002-0099,
    February 2002.
    Online ordering
  4. Qiang Du, Vance Faber, Max Gunzburger,
    Centroidal Voronoi Tessellations: Applications and Algorithms,
    SIAM Review,
    Volume 41, Number 4, December 1999, pages 637-676.
  5. Bennett Fox,
    Algorithm 647: Implementation and Relative Efficiency of Quasirandom Sequence Generators,
    ACM Transactions on Mathematical Software,
    Volume 12, Number 4, December 1986, pages 362-376.
  6. John Halton,
    On the efficiency of certain quasi-random sequences of points in evaluating multi-dimensional integrals,
    Numerische Mathematik,
    Volume 2, Number 1, December 1960, pages 84-90.
  7. Lili Ju, Qiang Du, Max Gunzburger,
    Probabilistic methods for centroidal Voronoi tessellations and their parallel implementations,
    Parallel Computing,
    Volume 28, 2002, pages 1477-1500.

Source Code:

Examples and Tests:

You can go up one level to the MATLAB source codes.


Last revised on 10 January 2006.