本文整理汇总了C++中NBNode::getConnectionTo方法的典型用法代码示例。如果您正苦于以下问题:C++ NBNode::getConnectionTo方法的具体用法?C++ NBNode::getConnectionTo怎么用?C++ NBNode::getConnectionTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NBNode
的用法示例。
在下文中一共展示了NBNode::getConnectionTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getNamedNode
void
NIImporter_VISUM::parse_Turns() {
if (myLineParser.know("VSYSSET") && myLineParser.get("VSYSSET") == "") {
// no vehicle allowed; don't add
return;
}
// retrieve the nodes
NBNode* from = getNamedNode("VonKnot", "VonKnotNr");
NBNode* via = getNamedNode("UeberKnot", "UeberKnotNr");
NBNode* to = getNamedNode("NachKnot", "NachKnotNr");
if (from == 0 || via == 0 || to == 0) {
return;
}
// all nodes are known
std::string type = myLineParser.know("VSysCode")
? myLineParser.get("VSysCode")
: myLineParser.get("VSYSSET");
if (myVSysTypes.find(type) != myVSysTypes.end() && myVSysTypes.find(type)->second == "IV") {
// try to set the turning definition
NBEdge* src = from->getConnectionTo(via);
NBEdge* dest = via->getConnectionTo(to);
// check both
if (src == 0) {
// maybe it was removed due to something
if (OptionsCont::getOptions().isSet("keep-edges.min-speed")
||
OptionsCont::getOptions().isSet("keep-edges.explicit")) {
WRITE_WARNING("Could not set connection from node '" + from->getID() + "' to node '" + via->getID() + "'.");
} else {
if (OptionsCont::getOptions().getBool("visum.verbose-warnings")) {
WRITE_WARNING("There is no edge from node '" + from->getID() + "' to node '" + via->getID() + "'.");
}
}
return;
}
if (dest == 0) {
if (OptionsCont::getOptions().isSet("keep-edges.min-speed")
||
OptionsCont::getOptions().isSet("keep-edges.explicit")) {
WRITE_WARNING("Could not set connection from node '" + via->getID() + "' to node '" + to->getID() + "'.");
} else {
if (OptionsCont::getOptions().getBool("visum.verbose-warnings")) {
WRITE_WARNING("There is no edge from node '" + via->getID() + "' to node '" + to->getID() + "'.");
}
}
return;
}
// both edges found
// set them into the edge
src->addEdge2EdgeConnection(dest);
}
}
示例2: pos
void
NIImporter_VISUM::parse_EdgePolys() {
// get the from- & to-node and validate them
NBNode* from = getNamedNode("VonKnot", "VonKnotNr");
NBNode* to = getNamedNode("NachKnot", "NachKnotNr");
if (!checkNodes(from, to)) {
return;
}
bool failed = false;
int index;
SUMOReal x, y;
try {
index = TplConvert::_2int(myLineParser.get("INDEX").c_str());
x = getNamedFloat("XKoord");
y = getNamedFloat("YKoord");
} catch (NumberFormatException&) {
WRITE_ERROR("Error in geometry description from node '" + from->getID() + "' to node '" + to->getID() + "'.");
return;
}
Position pos(x, y);
if (!NILoader::transformCoordinates(pos)) {
WRITE_ERROR("Unable to project coordinates for node '" + from->getID() + "'.");
return;
}
NBEdge* e = from->getConnectionTo(to);
if (e != 0) {
e->addGeometryPoint(index, pos);
} else {
failed = true;
}
e = to->getConnectionTo(from);
if (e != 0) {
e->addGeometryPoint(-index, pos);
failed = false;
}
// check whether the operation has failed
if (failed) {
// we should report this to the warning instance only if we have removed
// some nodes or edges...
if (OptionsCont::getOptions().isSet("keep-edges.min-speed") || OptionsCont::getOptions().isSet("keep-edges.explicit")) {
WRITE_WARNING("Could not set geometry between node '" + from->getID() + "' and node '" + to->getID() + "'.");
} else {
// ... in the other case we report this to the error instance
if (OptionsCont::getOptions().getBool("visum.verbose-warnings")) {
WRITE_WARNING("There is no edge from node '" + from->getID() + "' to node '" + to->getID() + "'.");
}
}
}
}
示例3: NBEdge
void
NGNet::toNB() const {
std::vector<NBNode*> nodes;
for (NGNodeList::const_iterator i1 = myNodeList.begin(); i1 != myNodeList.end(); i1++) {
NBNode* node = (*i1)->buildNBNode(myNetBuilder);
nodes.push_back(node);
myNetBuilder.getNodeCont().insert(node);
}
for (NGEdgeList::const_iterator i2 = myEdgeList.begin(); i2 != myEdgeList.end(); i2++) {
NBEdge* edge = (*i2)->buildNBEdge(myNetBuilder);
myNetBuilder.getEdgeCont().insert(edge);
}
// now, let's append the reverse directions...
SUMOReal bidiProb = OptionsCont::getOptions().getFloat("rand.bidi-probability");
for (std::vector<NBNode*>::const_iterator i = nodes.begin(); i != nodes.end(); ++i) {
NBNode* node = *i;
EdgeVector incoming = node->getIncomingEdges();
for (EdgeVector::const_iterator j = incoming.begin(); j != incoming.end(); ++j) {
if (node->getConnectionTo((*j)->getFromNode()) == 0 && RandHelper::rand() <= bidiProb) {
NBEdge* back = new NBEdge("-" + (*j)->getID(), node, (*j)->getFromNode(),
"", myNetBuilder.getTypeCont().getSpeed(""), myNetBuilder.getTypeCont().getNumLanes(""),
myNetBuilder.getTypeCont().getPriority(""),
myNetBuilder.getTypeCont().getWidth(""), NBEdge::UNSPECIFIED_OFFSET);
myNetBuilder.getEdgeCont().insert(back);
}
}
}
}