65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 2D Voronoi 图创建温度图

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (10投票s)

2008年11月20日

CPOL

1分钟阅读

viewsIcon

67083

downloadIcon

1585

二维 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 所示。

VoronoiTemperature.JPG

图 1. 温度图。

关注点

创建温度图实际上是气象学中的一个问题。为了获得良好的映射,我们必须使用插值算法(用于平滑等温线)。这是 Voronoi 图的众多应用之一(Voronoi 正好在 11-19-1908 逝世 100 周年)。

© . All rights reserved.