Example #1
0
	void NavMesh::logNavMesh() const
	{
		std::stringstream logStream;
		logStream.precision(std::numeric_limits<float>::max_digits10);

		logStream<<"Mav mesh:"<<std::endl;

		for(unsigned int i=0; i<getPolygons().size(); ++i)
		{
			const std::shared_ptr<NavPolygon> &polygon = getPolygons()[i];
			logStream<<" - Polygon "<<i<<": "<<polygon->getName()<<std::endl;

			for(unsigned int j=0; j<polygon->getTriangles().size(); ++j)
			{
				const std::shared_ptr<NavTriangle> &triangle = polygon->getTriangle(j);
				logStream<<"  - Triangle "<<j<<": "
                         <<"{"<<triangle->getIndex(0)<<": "<<polygon->getPoint(triangle->getIndex(0))
						 <<"}, {"<<triangle->getIndex(1)<<": "<<polygon->getPoint(triangle->getIndex(1))
						 <<"}, {"<<triangle->getIndex(2)<<": "<<polygon->getPoint(triangle->getIndex(2))<<"}"
						 <<" {"<<triangle->getNeighbor(0)<<", "<<triangle->getNeighbor(1)<<", "<<triangle->getNeighbor(2)<<"}"<<std::endl;
			}
		}

		Logger::logger().log(Logger::INFO, logStream.str());
	}
Example #2
0
std::vector<GUIGlID>
GUIShapeContainer::getPolygonIDs() const {
    AbstractMutex::ScopedLocker locker(myLock);
    std::vector<GUIGlID> ret;
    const std::map<std::string, SUMO::Polygon*>& polygons = getPolygons().getMyMap();
    for (std::map<std::string, SUMO::Polygon*>::const_iterator it = polygons.begin(); it != polygons.end(); ++it) {
        ret.push_back(static_cast<GUIPolygon*>(it->second)->getGlID());
    }
    return ret;
}
Example #3
0
void
CQXYValsCanvas::
keyPressEvent(QKeyEvent *ke)
{
  if      (ke->key() == Qt::Key_Delete) {
    // clear grid
    valueData_.ipolygons .clear();
    valueData_.iqpolygons.clear();

    updatePolygons();

    update();
  }
  else if (ke->key() == Qt::Key_C) {
    valueData1_ = valueData_;

    // combine connected cells
    valueData_.xyvals.combineInside();

    valueData_.xyvals.setPolygonInsideValues();

    getPolygons();

    update();
  }
  else if (ke->key() == Qt::Key_F) {
    valueData1_ = valueData_;

    // fill
    valueData_.xyvals.fill();

    getPolygons();

    update();
  }
  else if (ke->key() == Qt::Key_H) {
    valueData1_ = valueData_;

    // fill disconnected rows
    valueData_.xyvals.fillDisconnectedRows();

    valueData_.xyvals.setPolygonInsideValues();

    getPolygons();

    update();
  }
  else if (ke->key() == Qt::Key_V) {
    valueData1_ = valueData_;

    // fill disconnected columns
    valueData_.xyvals.fillDisconnectedColumns();

    valueData_.xyvals.setPolygonInsideValues();

    getPolygons();

    update();
  }
  else if (ke->key() == Qt::Key_S) {
    // display smallest
    CXYValsInside::InsideValue i = valueData_.xyvals.findSmallest();

    std::cerr << i << "(" << valueData_.xyvals.valueArea(i) << ")" << std::endl;
  }
  else if (ke->key() == Qt::Key_P) {
    // print
    valueData_.xyvals.print(std::cerr); std::cerr << std::endl;
  }
  else if (ke->key() == Qt::Key_R) {
    // replace input polygons with extracted polygons
    valueData_.ipolygons  = valueData_.opolygons;
    valueData_.iqpolygons = valueData_.oqpolygons;

    updatePolygons();

    update();
  }
  else if (ke->key() == Qt::Key_U) {
    valueData_ = valueData1_;

    update();
  }
}