如何从一组边的起点和终点构造多边形?
How do I construct polygons from an array of edge start points and end points?
我使用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
}
相关文章:
- 是否可以在 OpenGL 中的同一调用中呈现两个具有不同索引起点的不同缓冲区?
- 定义/预设NURBS起点和终点的方向
- 如何设置QTreeView的起点目录?
- 如何在opengl中绘制具有给定起点的弧线?
- 如何调用具有不同字符串起点的函数?
- 没有htonl/ntohl的联盟和终点
- 从卷或区域中的起点向外迭代,而不对其进行排序
- 警告:控制可能达到非无效功能的终点?返课时
- 如何在给定起点和终点的字符串中查找子字符串的出现次数?
- 给定许多垂直或水平段及其终点的坐标(x1,x2,y1,y2),我们有多少个相交
- 控制达到非空隙功能的终点,C++
- 从一个起点遍历一个图形,并在起点C++处结束
- 牡丹SSL/TLS示例或起点
- ld:入口点(起点)未定义.通常在crt1.o中用于体系结构x86_64
- 起点和终点固定的多目的地最短路线
- 在.pdf中找到终点线
- 在三维中从起点和角度计算一条线
- 如何从一组边的起点和终点构造多边形?
- 定义为起点和长度+方向的线与定义为起点和终点的线不同-方向计算错误
- 如何使用ctime来标记程序的起点和终点