int ConnectivityTester::computeConnectivity(NodeArray<NodeArray<int>> &Connectivity) { node v = m_graph->firstNode(); int result = m_graph->numberOfNodes(); if(m_graphCopied) { v = ((GraphCopy*)m_graph)->original().firstNode(); } for (; v != nullptr; v = v->succ()) { Connectivity[v][v] = 0; for (node u = v->succ(); u != nullptr; u = u->succ()) { Connectivity[v][u] = computeConnectivity(copyOf(v, true), copyOf(u)); result = min(result, Connectivity[v][u]); if (m_directed) { Connectivity[u][v] = computeConnectivity(copyOf(u, true), copyOf(v)); result = min(result, Connectivity[u][v]); } else { Connectivity[u][v] = Connectivity[v][u]; } } } return result; }
void MeshWithConnectivity::fromMesh( const Mesh<VertexPNC>& m ) { positions.resize(m.numVertices()); normals.resize(m.numVertices()); colors.resize(m.numVertices()); for (int i = 0; i < m.numVertices(); ++i) { positions[i] = m.vertex(i).p; normals[i] = m.vertex(i).n; colors[i] = m.vertex(i).c.getXYZ(); } indices.reserve(m.numTriangles()); // move indices for (int i = 0; i < m.numSubmeshes(); ++i) for (int t = 0; t < m.indices(i).getSize(); ++t) indices.push_back(m.indices(i)[t]); computeConnectivity(); }