GDI+Win32Visual Studio 2008.NET 3.0Windows XP.NET 2.0.NET 3.5C# 2.0初学者C# 3.0开发Visual StudioWindows.NETC#
使用 2D Voronoi 图创建温度图






4.79/5 (10投票s)
二维 Voronoi 图的一个实际应用。
引言
Voronoi 图是一种有用的数学抽象,具有许多应用。你可以在这里和这里了解更多信息。你也可以在这里看到一些例子:二维 Voronoi 图和 Delaunay 三角剖分的可视化和 C# 实现的 Fortune 算法。
背景
昨天,我解决了一个问题:我们有许多气象中心,每个气象中心都有坐标 (X, Y) 和当前的温度值 (T)。我们解决方案的目标是创建温度图。
使用代码
结构体 TemperatureLocation
存储关于气象中心的数据:坐标 X, Y 和温度值。
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));
}
}
类 VoronoiTemparature
被设计用来创建温度图。我们加载关于气象中心的数据、图像参数(冷热温度的颜色),并获得地图的图像。为了获得更真实的地图(没有精确的 Voronoi 单元),可以使用简单的平滑效果。测试创建地图的结果如图 1 所示。
图 1. 温度图。
关注点
创建温度图实际上是气象学中的一个问题。为了获得良好的映射,我们必须使用插值算法(用于平滑等温线)。这是 Voronoi 图的众多应用之一(Voronoi 正好在 11-19-1908 逝世 100 周年)。