我如何从边缘起点和终点的数组构造多边形?

问题描述 投票:3回答:1

我正在使用Voronoi多边形来布局我的地图,并且具有一个返回多边形边缘列表的函数,因此绘制边缘时看起来像this,这是我的目标。但是,我需要存储有关每个单独多边形的信息,例如它所拥有的地形类型,但是为此,我只需要给定边列表就可以构造多边形。我的问题是如何从边缘列表构造这些多边形

我愿意接受伪代码,C ++或Objective-C

c++ objective-c maps polygon voronoi
1个回答
1
投票

您可以遍历列表并获取每个顶点的点积。跟随具有最低结果的向量并继续前进,一旦循环回到开始搜索的点,便找到了多边形。

我的C ++生锈了,因此我将根据您的问题为您提供一些伪代码。图案应基于一个点找到一个多边形。这些类型很容易解释:

class Point {int x, y;}
class Vector 
{
    Point StartPoint, EndPoint;
    Contains(Vector vector)
    {
        return StartPoint == vector || EndPoint == vector;
    }
}
class Polygon /*Array of Vectors */ 
{  
    TopVector /* Last vector to be added */
}

Polygon findPolygon(Vector startVector)
    Polygon returnValue = new Polygon(startVector);
    do
    {
        Polygon.Add(getLowestDotProduct(vector, getConnectingVectors(vector, vector.EndPoint)))
    } while (!Polygon.TopVector.Contains(startVector));
}

Point [] getConnectingVectors(Vector vector, endPoint)
{
    //find all vectors that start or end at endPoint
}

Vector getLowestDotProduct(Vector startVector, Vector[] connectedVectors)
{
    // get the lowest dot product
}
© www.soinside.com 2019 - 2024. All rights reserved.