Delaunay Mesh: A triangulation of a set of points where no point lies inside the circumcircle of any triangle, avoiding skinny triangles by maximizing the minimum angle.
Voronoi Mesh: A partitioning of space into regions (Voronoi cells), each associated with one point, containing all locations closer to that point than to any other.
Duality Relationship -- Voronoi Mesh and Delaunay Mesh encode the same information in complementary ways:
◼
  • Delaunay vertices ↔ Voronoi cells.
  • ◼
  • Delaunay edges ↔ Voronoi edges (orthogonal).
  • ◼
  • Delaunay triangles ↔ Voronoi vertices (each Voronoi vertex is the circumcenter of its corresponding Delaunay triangle).
  • Define a Strauss Point Process, which is a type of spatial point process used in statistical mechanics and spatial statistics.
    μ=10000;(*Intensity*)​​γ=0.001;(*Interactionparameter,0≤γ≤1*)​​rs=0.05;(*Interactionradius*)​​d=2;(*Dimension*)​​​​SeedRandom[7];
    straussProcess=StraussPointProcess[μ,γ,rs,d];
    Define the region where the point process will be simulated. The region is a rectangle with corners at (0, 0) and (3, 3).
    region=Rectangle[{0,0},3{1,1}];
    Generate a random point configuration using the previously defined Strauss Point Process within the specified region. The points are obtained using a Markov Chain Monte Carlo (MCMC) method with a specified run length.
    points=RandomPointConfiguration[straussProcess,region,Method->{"MCMC","LengthOfRun"50000}]["Points"];
    Define a function that computes a circular path based on a given radius and center. This function will be used to create circular orbits for each point in the configuration.
    In[]:=
    ClearAll[cir]​​cir[r_,{a_,b_}][t_]:=a+
    r/2
    +
    r
    Cos[2Pit],b+
    r/2
    +
    r
    Sin[2Pit]
    Define function to calculate orbits for each point in the configuration. The orbits are influenced by the distance of each point from the center of the region (1.5, 1.5) and a scaling factor `s`.
    In[]:=
    ClearAll[orbs]​​orbs[s_,t_]=cir[.01,#][t+2PiNorm[#-{1.5,1.5}]/s]&/@points;
    Use Manipulate to display a dynamic visualization of the orbits. The visualization includes both Delaunay and Voronoi meshes.
    In[]:=
    Manipulate[​​Show[​​HighlightMesh[DelaunayMesh[orbs[s,-t]],{​​Style[0,White,PointSize[.01]],Style[1,Dotted,White,Opacity[.9]],Style[2,None]},Background->Black],​​HighlightMesh[VoronoiMesh[orbs[s,-t],{3{0,1},3{0,1}}],​​{Style[0,None],Style[1,Directive[
    ,Thickness[.003]]],Style[2,None]},Background->Black],​​PlotRange->r+(3-2r){{0,1},{0,1}},ImageSize->550],​​{t,0,1},{s,.5,10},{r,.2,1.3},SaveDefinitions->True,FrameMargins0]
    Create a video from the interactive visualization using ManipulateVideo.
    ManipulateVideo[​​Show[​​HighlightMesh[DelaunayMesh[orbs[s,-t]],{​​Style[0,White,PointSize[.01]],Style[1,Dotted,Directive[White,Thickness[.003]],Opacity[1]],Style[2,None]},Background->Black],​​HighlightMesh[VoronoiMesh[orbs[s,-t],{3{0,1},3{0,1}}],​​{Style[0,None],Style[1,Directive[
    ,Thickness[.003]]],Style[2,None]},Background->Black],​​PlotRange->r+(3-2r){{0,1},{0,1}},ImageSize->550],​​​​{t,<|0->0,14->.4×14,15->.4×14+.2,20->.4×14+.2×5,21->.4×14+.2×5+.4,35->7+.4×14|>},​​{s,<|0->3.36,2->3.36,3->6,7->6,8->2,21->2,23->8,25->8,32->8,35->3.36|>},​​{r,<|0->.2,10->.2,14->1,17->1,18->.77,25->.77,30->1.3,31->.77,32->.77,35->.2|>},​​FrameMargins0,RasterSize->1080{1,1}];
    Out[]=

    CITE THIS NOTEBOOK

    Animating Voronoi-Delaunay mesh dynamics with circular orbits on Strauss point process​
    by Vitaliy Kaurov​
    Wolfram Community, STAFF PICKS, April 16, 2025
    ​https://community.wolfram.com/groups/-/m/t/3444884