gpt4 book ai didi

c++ - 淡化库 Delaunay Triangulation 站点邻居

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:08 25 4
gpt4 key购买 nike

在使用 Fade 库的 Delaunay 三角剖分中,可以访问站点的事件三角形并访问其邻居,如下所述:http://www.geom.at/example2-traversing/

我不知道如何利用事件三角形及其邻居来遍历站点邻居站点。我应该在每次迭代中访问哪个三角形邻居来完成这个?

在下面的例子中,主要站点在蓝色圆圈中,我想将所有在红色圆圈中的邻居站点保存在某个数组中。 .

example

最佳答案

我是 Fade2D 的作者。当您使用 TriangleAroundVertexIterator 或 Fade_2D::getIncidentTriangles() 方法时会容易得多,请参见下面的演示函数:它创建一个随机三角剖分,为某个点提取周围的顶点并绘制结果:

2D Delaunay triangulation, extract incident vertices

vector<Point2> vRandomPoints;
generateRandomPoints(50,0,1000,vRandomPoints,1);

Fade_2D dt;
vector<Point2*> vVertexHandles;
dt.insert(vRandomPoints,vVertexHandles);

// Your point index to be checked and the corresponding pointer
size_t pointToCheck=5;
Point2* pVertexToCheck(vVertexHandles[pointToCheck]);

// Fetch the incident triangles
std::vector<Triangle2*> vIncidentTriangles;
dt.getIncidentTriangles(pVertexToCheck,vIncidentTriangles);

// Extract the vertices
set<Point2*> sResultVertices;
for(std::vector<Triangle2*>::iterator it(vIncidentTriangles.begin());
it!=vIncidentTriangles.end();++it)
{
Triangle2* pIncidentT(*it);
int intraTriangleIndex(pIncidentT->getIntraTriangleIndex(pVertexToCheck));
sResultVertices.insert(pIncidentT->getCorner((intraTriangleIndex+1)%3));
sResultVertices.insert(pIncidentT->getCorner((intraTriangleIndex+2)%3));
}
cout<<"number of points: "<<sResultVertices.size()<<endl;

// Verify: Postscript Visualization
Visualizer2 vis("result.ps");
dt.show(&vis,false);
vis.addObject(Label(*pVertexToCheck,"base"),Color(CGREEN));
for(set<Point2*>::iterator it(sResultVertices.begin());it!=sResultVertices.end();++it)
{
vis.addObject(Label(**it,"VTX"),Color(CRED));
}
vis.writeFile();

关于c++ - 淡化库 Delaunay Triangulation 站点邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com