CVT_CORN is a MATLAB program which studies a 2D model of the growth of a corn kernel.
The program treats the surface and interior biological cells as points to be organized by a Centroidal Voronoi Tessellation (CVT) with a nonuniform density; during a sequence of growth steps, new biological cells are randomly added to the surface and interior.
Here are two photomicrographs of a radial slice and a transverse slice through a corn kernel. These pictures were an inspiration for the study done here.
The program models the corn kernel as a circle. There is a layer of surface cells on the circumference of the circle, and a collection of interior cells within the circle. Each cell is marked, that is, it knows what kind of cell it is, and this marker is never changed. Each cell is modeled by a single geometric point. The extent of a surface cell is the set of circumference points closer to it than to any other circumference cell. The extent of an interior cell is the set of interior points closer to it than to any other interior cell.
Cells may move. Surface cells may move along the circumference. Interior cells may move within the interior.
We presume that the cells adjust their positions in accordance with the energy minimization principle. Briefly, this means that each cell's preferred location is the centroid of its extent. Surface cells may only move to the projection of their centroid on the circumference.
If we move each cell to its centroid, the extent of the cell changes, and hence the centroid changes. An iteration can be carried out in which we compute centroids and move cells to their centroids. This iteration will in general approach what is known as a Centroidal Voronoi Tessellation (CVT).
By the specification of a nonuniform density function, the calculation of the centroid can be influenced in such a way that cells tend to cluster preferentially in certain regions. For the corn kernel, we can apply such a density function which will tend to push cells away from the circle center.
As a rough model of growth, once we have completed a CVT iteration, we may begin a new step by allowing cells to "bud". Surface and cells are each given a probability of budding. We then compute which cells have budded. Surface cells can give birth to another surface cell, or to an interior cell. Once the new cells have been created, and positioned very close to their parents, another CVT iteration is carried out.
The program uses some parameters which the user can monitor or set:
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
CVT_CORN is available in a MATLAB version.
CVT, a MATLAB library which can compute a CVT.
CVT, a dataset directory which contains a variety of examples of CVT datasets.
CVT_1D_LLOYD, a MATLAB program which computes an N-point Centroidal Voronoi Tessellation (CVT) within the interval [0,1], under a uniform density.
CVT_1D_NONUNIFORM, a MATLAB program which constructs a CVT in one dimension, under a nonuniform density function.
CVT_1D_SAMPLING, a MATLAB program which computes an N-point Centroidal Voronoi Tessellation (CVT) within the interval [0,1], under a uniform density, using sampling to estimate the Voronoi regions.
CVT_2D_SAMPLING, a MATLAB program which computes an N-point Centroidal Voronoi Tessellation (CVT) within the unit square [0,1]x[0,1], under a uniform density, using sampling to estimate the Voronoi regions.
CVT_CIRCLE_UNIFORM, a MATLAB program which calculates a Centroidal Voronoi Tessellation (CVT) over a circle with uniform density.
CVT_DEMO, a MATLAB program which is an interactive graphic demonstration of a CVT calculation.
CVT_SQUARE_NONUNIFORM, a MATLAB program which iteratively calculates a Centroidal Voronoi Tessellation (CVT) over a square, with a nonuniform density.
CVTM_1D, a MATLAB program which estimates a mirror-periodic centroidal Voronoi Tessellation (CVTM) in the periodic interval [0,1], using a version of Lloyd's iteration.
CVTP_1D, a MATLAB program which estimates a periodic centroidal Voronoi Tessellation (CVTP) in the periodic interval [0,1], using a version of Lloyd's iteration.
FLORIDA_CVT_GEO, MATLAB programs which explore the creation of a centroidal Voronoi Tessellation (CVT) of the state of Florida, based solely on geometric considerations.
The following images are snapshots from a run of the program with the default parameter settings:
You can go up one level to the MATLAB source codes.