如何从一组边的起点和终点构造多边形?

How do I construct polygons from an array of edge start points and end points?

本文关键字:终点 起点 多边形 一组      更新时间:2023-10-16

我使用Voronoi多边形来布置我的地图,并有一个函数返回多边形的边缘列表,所以当绘制边缘时看起来像这样,这是我的目标。然而,我需要存储关于每个单独多边形的信息,比如它包含什么类型的地形,但为此我需要只给出边缘列表来构建多边形。我的问题是我如何从边缘列表构建这些多边形?

我对伪代码、c++或Objective-C持开放态度

可以遍历列表并取每个顶点的点积。沿着结果最低的向量继续前进,一旦你循环回到你开始搜索的点,你就找到了你的多边形。

我的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
}