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 周年)。


