我正在使用 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
}