<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" 
               "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
  <!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
]>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="../../../comsci/css/s011.css"/>
<link rel='SHORTCUT ICON' href='../../../comsci/images/FrameHome.ico' />
<style type="text/css">
</style>
<title> Delaunay Triangulations
 </title>
</head>
<body>

<div class="message_right">
  <a href="http://validator.w3.org/check/referer">
    <img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid
	XHTML 1.1!" height="31" width="88" />
  </a>

  <a href="http://jigsaw.w3.org/css-validator/">
    <img style="width:88px;height:31px"
       src="http://jigsaw.w3.org/css-validator/images/vcss" 
       alt="Valid CSS!" />
  </a>
  <br/>
  Created 2005-06-24 &nbsp; Modified 
<!--UPDATE_DATE_MODIFIED-->
<!--UPDATE_DATE_BEGIN-->
2007-01-14
<br/>
<a href="mailto:chelton.evans@yahoo.com">Chelton Evans</a>
<!--UPDATE_DATE_END-->
</div>


<h1> 
<a href="geom.html"> <img alt="proj" src="../../../comsci/images/compgeom.png" /></a>
Delaunay Triangulations
<a href="../../../../index.html">
<img alt="home" src="../../../comsci/images/Frame.gif" /> </a>
</h1>



<p>

<a href="#Properties">Properties</a><br/>

<a href="../../../misc/proj/delaunay2D/doc.xml">2D in C++ 
<math xmlns="&mathml;">
  <mi>O</mi>
  <mo>(</mo>
  <mi>n</mi>
  <msup>
    <mi></mi>
    <mrow><mi>4</mi></mrow>
  </msup>
  <mo>)</mo>
</math>
</a> <br/>

<a href="../../../misc/proj/delaunay3D/doc.html">3D in C++ 
<math xmlns="&mathml;">
  <mi>O</mi>
  <mo>(</mo>
  <mi>n</mi>
  <msup>
    <mi></mi>
    <mrow><mi>5</mi></mrow>
  </msup>
  <mo>)</mo>
</math>
</a> <br/>




<a href="#Discussion_of_the_Voronoi_Diagram">
  Discussion of the Voronoi Diagram </a><br/>

<a href="#Simplest_DT_Algorithm">Simplest DT Algorithm</a><br/>

<a href="#&lt;TODO&gt;">&lt;TODO&gt;</a>

</p>




<div class="float25">

<a id="Properties"></a>
<h2>Properties</h2>

<p>V refers to the Voronoi diagram, D the Delaunay triangulation.</p>

<ol>
<li> V=dual(D), D=dual(V)</li>
<li> face(D)--point(V) </li>
<li>edge(D)--edge(V)</li>
<li>point(D)--region(V)</li>
<li>boundary(D) is the convex hull of the points in D</li>
<li>interior of face(D) has no points in D</li>
<li>region(V) is convex</li>
<li>region(V) is unbounded if on convex hull</li>
<li>point(V)--circle(D) where circle(D) has no points inside it from D</li>
<li>p<sub>i</sub> is nearest to p<sub>j</sub> then edge(p<sub>i</sub>,p<sub>j</sub>) is an edge of D</li>
<li> if circle through p<sub>i</sub>,p<sub>j</sub> contains no other points
 then edge(p<sub>i</sub>,p<sub>j</sub>) is an edge of D</li>


</ol>




</div>

<div class="float25">
<a id="Discussion_of_the_Voronoi_Diagram"></a>
<h2>Discussion of the Voronoi Diagram</h2>

<p>Here is a Voronoi diagram with my strict Voronoi polygons.</p>

<img src="diagg03101.png" alt="diagg031.png" />

<p>
I have spent several hours looking at the Voronoi diagrams.
 The mathematics seems a little unfriendly so I did the usual thing and look at the
 properties to get a better feel and still I was not satisfied.  So I implemented the
 algorithm and found a few interesting things.
</p>

<p>
Firstly consider only tessellation points inside the mesh and look at their associated
 Voronoi polygon.  Iterating around the vertex produces this polygon and their is a
 one to one association with the triangle and the Voronoi point.
</p>

<p>
This was not mentioned in J.O'Rouke's detailed properties of DT in Computational Geometry in C.
 Indeed what got me interested was looking at Voronoi diagrams as they appeared slightly
 incorrect.  
</p>

<p>Lets define a strict Voronoi polygon to have the same number of points as the number of triangles
 rotated about the associated DT point.  Then looking at Voronoi diagrams you realize that
 the polygons with vertexes on the boundary have one more edge than their number of triangles.
</p>

<p>
If we use my strict Voronoi polygon the outer regions overlap.  What people do is consider where
 the two lines meet and create a new line from there extending out and in the middle of
 the other two. This lets the space be uniquely partitioned into Voronoi regions.
</p>

</div>


<div class="float25">
<a id="Simplest_DT_Algorithm"></a>
<h2>Simplest DT Algorithm</h2>

<p>It was suggested to me that I should implement the simplest 
 DT where you go through all the combination of points
 that make a triangle and verify that no other point is inside the circle through the triangle.
</p>

<p>This is generalized in 3D to find the sphere through four points and if no other point in the tessellation
 is inside the sphere then the four points make a tetrahedron that is in the DT tessellation.
</p>

<p>See <a href="g027.xml#Sphere_Through_Four_Points">
  Sphere Through Four Points</a> on the maths.
</p>

</div>
 

<div class="float25">
<a id="&lt;TODO&gt;"></a>
<h2>&lt;TODO&gt;</h2>

<ul>

<li>Broken links, did I accidently delete the source code? Fix.</li>

</ul>


</div>


</body>
</html>




