c++ - 如何从边缘起点和终点数组构造多边形?

标签 c++ objective-c maps polygon voronoi

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

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

最佳答案

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

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

关于c++ - 如何从边缘起点和终点数组构造多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678712/

相关文章:

c++ - 迭代时如何知道我在树的末尾?

javascript - 谷歌地图 : Finding polygon by Id

react-native - react 本地 map 聚类

c++ - 为什么这个输出?

c++ - 如何在 Qt 5.4 程序中的文件之间共享 OpenGL 3.3+ 函数和上下文

objective-c - 小图标应用程序 ListView osx

ios - CoreData - 在后台上下文中删除对象时的不一致行为(附加测试项目)

iOS UIView 不调整 subview 的大小?

JAVA : Point in polygon? 如何检查用户的位置是否在 kml 多边形内?

c++ - 为什么我的 SFML 游戏只能在终端中运行?