Esempio n. 1
0
    void PrintMatchKeys(string key, const VertexSet& s) 
    {
        vector<string> tokens;
        split((char*)key.c_str(), "_", tokens);
        if (tokens.size() == 0) {
            return;
        }
        cout << "MATCH,"; 

        vector<int> pivots;
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i].size() > 0) {
                int u = atoi(tokens[i].c_str());
                cout << GetLabel(gSearch__, u) << ", ";
                pivots.push_back(u);
            }
        }
        for (unordered_set<uint64_t>::const_iterator s_it = s.begin();
                s_it != s.end(); s_it++) {
            cout << GetLabel(gSearch__, *s_it) << ", ";
        }
        cout << endl;
/*
        for (unordered_set<uint64_t>::const_iterator s_it = s.begin();
                s_it != s.end(); s_it++) {
            for (int j = 0; j < pivots.size(); j++) {
                GephiStreamingClient::GetInstance().PostEdge(*s_it, pivots[j]);
            }
        }
*/
    }
Esempio n. 2
0
void Geometry::Face2Polygon(const TopoDS_Face &f, pcl::PlanarPolygon<PointT>& poly) {
    VertexSet vertices;
    GetVertices(f,vertices);
    PointCloud cloud;
    for (VertexSet::iterator it=vertices.begin();it!=vertices.end();++it ){
        PointT p;
        Vertex2Point(*it,p);
        cloud.push_back(p);
    }
    poly.setContour(cloud);
}
void ShGraph<G>::vertexHeight(const VertexSet &roots, HeightMap &heights) {
  heights.clear();
  VertexPairMap<int> dist;
  NegativeWeigher<G> weigher;
  typename VertexSet::const_iterator U, V;

  floydWarshall(weigher, dist);
  for(U = verts.begin(); U != verts.end(); ++U) {
    for(V = roots.begin(); V != roots.end(); ++V) {
      heights[*U] = std::max(heights[*U], -dist(*V, *U));
    }
  }
}
	void Delaunay::Triangulate(const VertexSet& vertices, TriangleSet& output)
	{
		if (vertices.size() < 3)
		{
			return;
		}

		cVertexIterator iterVertex = vertices.begin();

		double xMin = iterVertex->GetX();
		double yMin = iterVertex->GetY();
		double xMax = xMin;
		double yMax = yMin;

		++iterVertex;

		for (; iterVertex != vertices.end(); ++iterVertex)
		{
			xMax = iterVertex->GetX();
			double y = iterVertex->GetY();

			if (y < yMin)
			{
				yMin = y;
			}
			if (y > yMax)
			{
				yMax = y;
			}
		}

		double dx = xMax - xMin;
		double dy = yMax - yMin;

		double ddx = dx * 0.01;
		double ddy = dy * 0.01;

		xMin -= ddx;
		xMax += ddx;
		dx += 2 * ddx;

		yMin -= ddy;
		yMax += ddy;
		dy += 2 * ddy;

		Vertex vSuper[3];
		vSuper[0] = Vertex(xMin - dy * sqrt3 / 3.0, yMin);
		vSuper[1] = Vertex(xMax + dy * sqrt3 / 3.0, yMin);
		vSuper[2] = Vertex((xMin + xMax) * 0.5, yMax + dx * sqrt3 * 0.5);

		TriangleSet workset;
		workset.insert(Triangle(vSuper));

		for (iterVertex = vertices.begin(); iterVertex != vertices.end(); ++iterVertex)
		{
			TriangleIsCompleted pred1(iterVertex, output, vSuper);
			TriangleSet::iterator iter = workset.begin();

			while (iter != workset.end())
			{
				if (pred1(*iter))
				{
					iter = workset.erase(iter);
				}
				else
				{
					++iter;
				}
			}

			EdgeSet edges;

			VertexIsInCircumstanceCircle pred2(iterVertex, edges);
			iter = workset.begin();

			while (iter != workset.end())
			{
				if (pred2(*iter))
				{
					iter = workset.erase(iter);
				}
				else
				{
					++iter;
				}
			}

			for (EdgeIterator edgeIter = edges.begin(); edgeIter != edges.end(); ++edgeIter)
			{
				workset.insert(Triangle(edgeIter->m_pv0, edgeIter->m_pv1, &(*iterVertex)));
			}
		}

		TriangleIterator where = output.begin();
		TriangleHasVertex pred(vSuper);
		for (auto t : workset)
		{
			if (!pred(t))
			{
				output.insert(output.begin(), t);
			}
		}
	}