本文整理汇总了C++中MESegment::getOccupancy方法的典型用法代码示例。如果您正苦于以下问题:C++ MESegment::getOccupancy方法的具体用法?C++ MESegment::getOccupancy怎么用?C++ MESegment::getOccupancy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MESegment
的用法示例。
在下文中一共展示了MESegment::getOccupancy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
SUMOReal
GUIEdge::getOccupancy() const {
SUMOReal occ = 0;
for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) {
occ += segment->getOccupancy();
}
return occ / (*myLanes)[0]->getLength() / (SUMOReal)(myLanes->size());
}
示例2: glPushName
void
GUIEdge::drawGL(const GUIVisualizationSettings& s) const {
if (s.hideConnectors && myFunction == MSEdge::EDGEFUNCTION_CONNECTOR) {
return;
}
if (MSGlobals::gUseMesoSim) {
glPushName(getGlID());
}
// draw the lanes
for (LaneWrapperVector::const_iterator i = myLaneGeoms.begin(); i != myLaneGeoms.end(); ++i) {
#ifdef HAVE_INTERNAL
if (MSGlobals::gUseMesoSim) {
setColor(s);
}
#endif
(*i)->drawGL(s);
}
#ifdef HAVE_INTERNAL
if (MSGlobals::gUseMesoSim) {
const GUIVisualizationTextSettings& nameSettings = s.vehicleName;
GUIMEVehicleControl* vehicleControl = GUINet::getGUIInstance()->getGUIMEVehicleControl();
if (vehicleControl != 0) {
// draw the meso vehicles
vehicleControl->secureVehicles();
size_t laneIndex = 0;
MESegment::Queue queue;
for (LaneWrapperVector::const_iterator l = myLaneGeoms.begin(); l != myLaneGeoms.end(); ++l, ++laneIndex) {
const PositionVector& shape = (*l)->getShape();
const std::vector<SUMOReal>& shapeRotations = (*l)->getShapeRotations();
const std::vector<SUMOReal>& shapeLengths = (*l)->getShapeLengths();
const Position& laneBeg = shape[0];
glPushMatrix();
glTranslated(laneBeg.x(), laneBeg.y(), 0);
glRotated(shapeRotations[0], 0, 0, 1);
// go through the vehicles
int shapeIndex = 0;
SUMOReal shapeOffset = 0; // ofset at start of current shape
SUMOReal segmentOffset = 0; // offset at start of current segment
for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this);
segment != 0; segment = segment->getNextSegment()) {
const SUMOReal length = segment->getLength();
if (laneIndex < segment->numQueues()) {
// make a copy so we don't have to worry about synchronization
queue = segment->getQueue(laneIndex);
const SUMOReal avgCarSize = segment->getOccupancy() / segment->getCarNumber();
const size_t queueSize = queue.size();
for (size_t i = 0; i < queueSize; i++) {
MSBaseVehicle* veh = queue[queueSize - i - 1];
setVehicleColor(s, veh);
SUMOReal vehiclePosition = segmentOffset + length - i * avgCarSize;
SUMOReal xOff = 0.f;
while (vehiclePosition < segmentOffset) {
// if there is only a single queue for a
// multi-lane edge shift vehicles and start
// drawing again from the end of the segment
vehiclePosition += length;
xOff += 0.5f;
}
while (shapeIndex < (int)shapeRotations.size() - 1 && vehiclePosition > shapeOffset + shapeLengths[shapeIndex]) {
glPopMatrix();
shapeOffset += shapeLengths[shapeIndex];
shapeIndex++;
glPushMatrix();
glTranslated(shape[shapeIndex].x(), shape[shapeIndex].y(), 0);
glRotated(shapeRotations[shapeIndex], 0, 0, 1);
}
glPushMatrix();
glTranslated(xOff, -(vehiclePosition - shapeOffset), GLO_VEHICLE);
glPushMatrix();
glScaled(1, avgCarSize, 1);
glBegin(GL_TRIANGLES);
glVertex2d(0, 0);
glVertex2d(0 - 1.25, 1);
glVertex2d(0 + 1.25, 1);
glEnd();
glPopMatrix();
glPopMatrix();
if (nameSettings.show) {
GLHelper::drawText(veh->getID(),
Position(xOff, -(vehiclePosition - shapeOffset)),
GLO_MAX, nameSettings.size / s.scale, nameSettings.color, 0);
}
}
}
segmentOffset += length;
}
glPopMatrix();
}
vehicleControl->releaseVehicles();
}
glPopName();
}
#endif
// (optionally) draw the name and/or the street name
const bool drawEdgeName = s.edgeName.show && myFunction == EDGEFUNCTION_NORMAL;
const bool drawInternalEdgeName = s.internalEdgeName.show && myFunction != EDGEFUNCTION_NORMAL;
const bool drawStreetName = s.streetName.show && myStreetName != "";
if (drawEdgeName || drawInternalEdgeName || drawStreetName) {
GUILaneWrapper* lane1 = myLaneGeoms[0];
GUILaneWrapper* lane2 = myLaneGeoms[myLaneGeoms.size() - 1];
//.........这里部分代码省略.........