istream& BipartiteGraph<VT>::get(istream& in) { this->clear(); getVertexes(in); getEdges(in); return in; }
void Graph::search(SearchType searchType) { vector<Vertex *> vertexes = getVertexes(); for (vector<Vertex *>::iterator it = vertexes.begin(); it != vertexes.end(); it++) { Vertex *vertex = *it; vertex->setVisited(false); } for (vector<Vertex *>::iterator it = vertexes.begin(); it != vertexes.end(); it++) { Vertex *vertex = *it; if (!vertex->getVisited()) { switch (searchType) { case DEPTH: depthFirstSearch(vertex); break; case BREADTH: breadthFirstSearch(vertex); break; case WEIGHT: updateAllWeight(vertex); } } } }
string Graph::currentGraphType() { int count = 0; bool weighted = false; bool directional = false; bool pseudoGraph = false; string graphTypes = "This graph is: "; vector<Vertex *> vertexes = getVertexes(); for (vector<Vertex *>::iterator it = vertexes.begin(); it != vertexes.end(); it++) { Vertex *vertex = *it; vector<Adjacency *> adjacencies = vertex->getAdjacencies(); for (vector<Adjacency *>::iterator secondIt = adjacencies.begin(); secondIt != adjacencies.end(); secondIt++) { Adjacency *adjacency = *secondIt; Corner *corner = adjacency->getCorner(); Vertex *convergent = corner->getConvergent(); Vertex *divergent = corner->getDivergent(); if (!weighted && corner->getWeight() != -1) { weighted = true; } if (!pseudoGraph && corner->isCycle()) { pseudoGraph = true; } if (!directional && (convergent == nullptr || divergent == nullptr)) { directional = true; } count++; } } if (directional) { graphTypes += " -> directional"; } if (!directional && count != 0) { graphTypes += " -> not directional"; } if (weighted) { graphTypes += " -> weighted"; } if (pseudoGraph) { graphTypes += " -> pseudoGraph"; } if (count == 0) { graphTypes += " -> null graph"; } return graphTypes; }
void Graph::showVertexes() { vector<Vertex *> vertexes = getVertexes(); for (vector<Vertex *>::iterator it = vertexes.begin(); it != vertexes.end(); it++) { Vertex *vertex = *it; cout << vertex->getValue() << endl; } }
Pt3dr cTriangle::getNormale(bool normalize) const { vector <Pt3dr> vPts; getVertexes(vPts); if (normalize) { Pt3dr p1 = vunit(vPts[1]-vPts[0]); Pt3dr p2 = vunit(vPts[2]-vPts[0]); return vunit(p1^p2); } else return (vPts[1]-vPts[0])^(vPts[2]-vPts[0]); }
vector<Vertex *> Graph::searchVertex(int value) { vector<Vertex *> vertexes = getVertexes(); vector<Vertex *> foundedVertexes; for (vector<Vertex *>::iterator it = vertexes.begin(); it != vertexes.end(); it++) { Vertex *vertex = *it; if (vertex->getValue() == value) { foundedVertexes.push_back(vertex); } } return foundedVertexes; }
unsigned GfxBody::getVertexesWithChildren (void) const { return getVertexes() + GfxFertileNode::getVertexesWithChildren(); }