15,177,127 members
Articles / Desktop Programming / Win32
Article
Posted 20 Nov 2008

60.7K views
1.5K downloads
31 bookmarked

# Create temperature maps with 2D Voronoi diagrams

Rate me:
4.79/5 (11 votes)
20 Nov 2008CPOL1 min read
A practicle application of 2D Voronoi diagrams.

## Introduction

Voronoi Diagram is a useful mathematic abstraction which has many applications. You can read about it here and here. You can also see some examples here: Visualization of the 2D Voronoi Diagram and the Delaunay Triangulation and Fortune's Voronoi algorithm implemented in C#.

## Background

Yesterday, I solved a problem: we have many weather centers and each weather center has coordinates (X, Y) and current temperature value (T). The goal of our solution was to create a temperature map.

## Using the code

The structure `TemperatureLocation` stores data about the weather center: coordinates X, Y, and the temperature value.

C#
```public struct TemperatureLocation
{
private double x;

public double X
{
get { return x; }
set { x = value; }
}
private double y;

public double Y
{
get { return y; }
set { y = value; }
}
private double t;

public double T
{
get { return t; }
set { t = value; }
}

public TemperatureLocation(double x, double y, double t)
{
this.x = x;
this.y = y;
this.t = t;
}

public double GetDistance(TemperatureLocation tl)
{
return Math.Sqrt((this.x - tl.x) * (this.x - tl.x) +
(this.y - tl.y) * (this.y - tl.y));
}
}```

The class `VoronoiTemparature` is designed to create temperature maps. We load data about weather center, the parameters of the image (the color of cold and hot temperatures), and get the image of the map. For a more realistic map (without accurate Voronoi cells), use a simple smooth effect. The result of the test creation map can be seen on Figure 1.

Figure 1. Temperature map.

## Points of interest

Creating temperature maps is really a problem in meteorology. For a good mapping, we must use interpolation algorithms (for a smooth isotherm). It is one of many Voronoi diagram applications (Voronoi died exactly 100 years ago, on 11-19-1908).

## License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

## About the Author

 Software Developer Russian Federation
Hello! My name is Maxim Subbotin.

Now I work in sphere of web-development. I'm interesting researches in SEO field.
If you interesting, you can see this tool:

KeywordCompetitor

## Comments and Discussions

 First Prev Next
 pls help daskan8-Aug-09 0:35 daskan 8-Aug-09 0:35
 implementation in SharMap agelospanagiotakis15-Feb-09 4:23 agelospanagiotakis 15-Feb-09 4:23
 Re: implementation in SharMap Maxim_Barsuk15-Feb-09 22:49 Maxim_Barsuk 15-Feb-09 22:49
 Re: implementation in SharMap agelospanagiotakis16-Feb-09 3:04 agelospanagiotakis 16-Feb-09 3:04
 Re: implementation in SharMap agelospanagiotakis16-Feb-09 3:09 agelospanagiotakis 16-Feb-09 3:09
 Re: implementation in SharMap Maxim_Barsuk16-Feb-09 23:35 Maxim_Barsuk 16-Feb-09 23:35
 Re: implementation in SharMap agelospanagiotakis6-Mar-09 13:11 agelospanagiotakis 6-Mar-09 13:11
 Black areas are missing? nnononnnon14-Dec-08 8:26 nnononnnon 14-Dec-08 8:26
 Re: Black areas are missing? Maxim_Barsuk16-Dec-08 19:56 Maxim_Barsuk 16-Dec-08 19:56
 Interesting... Paul Conrad20-Nov-08 10:47 Paul Conrad 20-Nov-08 10:47
 Date overflow laserbaronen20-Nov-08 2:50 laserbaronen 20-Nov-08 2:50
 Copy Code `Creating temperature maps is really problem of meteorology. For good mapping we must use interpolation algorithms (for smooth isotherm). Its one of many Voronoi diagram applications (Voronoi died exactly 100 years ago, on 11-19-1908).` There are not 19 months Copy Code ```betonglasermur.FeedDwarf(pur_is, 17); ProcessStartupInfo.AintNotCreateNoWindow = (false && !true) != (true || false) ? false == true ? true : false : (true != false && false);``` Morgonen är tröttmans mecka
 Re: Date overflow Maxim_Barsuk20-Nov-08 5:26 Maxim_Barsuk 20-Nov-08 5:26
 Re: Date overflow Skymir20-Jul-09 5:25 Skymir 20-Jul-09 5:25
 Last Visit: 31-Dec-99 19:00     Last Update: 25-Jan-22 18:37 Refresh 1

General    News    Suggestion    Question    Bug    Answer    Joke    Praise    Rant    Admin

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.