本文整理汇总了C++中CoordBox类的典型用法代码示例。如果您正苦于以下问题:C++ CoordBox类的具体用法?C++ CoordBox怎么用?C++ CoordBox使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CoordBox类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: grid
virtual void grid(GridBase<CELL, 3> *ret)
{
CoordBox<3> box = ret->boundingBox();
for (CoordBox<3>::Iterator i = box.begin(); i != box.end(); ++i) {
ret->at(*i) = CELL(*i);
}
}
示例2: grid
virtual void grid(GridType *grid)
{
CoordBox<2> box = grid->boundingBox();
grid->setEdge(ContainerCellType());
for (CoordBox<2>::Iterator i = box.begin(); i != box.end(); ++i) {
// IDs are derived from a counter. Resetting it ensures
// that the initializer will use the same ID for a
// particle on each node for any given container cell:
counter = 1 + i->toIndex(box.dimensions) * numCells;
ContainerCellType cell = grid->get(*i);
cell.clear();
grid->set(*i, cell);
if (*i == Coord<2>(0, 0)) {
// add a single cell with an influx of 1. this will
// make the whole system heat up over time.
addHeater(grid, Coord<2>(0, 0), FloatCoord<2>(0, 0), 0, 1);
}
addRandomCells(grid, *i, numCells);
}
fillGeometryData(grid);
}
示例3: scaledImg
void Initializer::grid(LibGeoDecomp::GridBase<Cell, 2> *ret)
{
using LibGeoDecomp::CoordBox;
using LibGeoDecomp::FloatCoord;
boost::gil::rgb8_image_t img;
boost::gil::png_read_image(VANDOUKEN_DATA_DIR VANDOUKEN_INITIALIZER_IMG, img);
boost::gil::rgb8_image_t scaledImg(gridDimensions().x(), gridDimensions().y());
boost::gil::resize_view(
boost::gil::const_view(img)
, boost::gil::view(scaledImg)
, boost::gil::bilinear_sampler()
);
boost::gil::rgb8_image_t::const_view_t imgView = boost::gil::const_view(scaledImg);
CoordBox<2> box = ret->boundingBox();
for (CoordBox<2>::Iterator i = box.begin(); i != box.end(); ++i) {
bool setForce = false;
FloatCoord<2> force;
for (std::size_t j = 0; j < shapes.size(); ++j) {
shapes[j]->initCell(&force, &setForce, *i);
}
// force alpha channel to 0xff to ensure all particles are opaque
boost::gil::rgb8_image_t::value_type pixel = imgView(i->x(), i->y());
unsigned color = 0xff000000 +
(pixel[0] << 16) +
(pixel[1] << 8) +
(pixel[2] << 0);
ret->set(*i, Cell(color, *i, setForce, force, rand() % Cell::MAX_SPAWN_COUNTDOWN));
}
std::cout << "done ...\n";
}
示例4: QDialog
bool DirtyListDescriber::showChanges(QWidget* aParent)
{
QDialog* dlg = new QDialog(aParent);
Ui.setupUi(dlg);
dlg->setWindowFlags(dlg->windowFlags() & ~Qt::WindowContextHelpButtonHint);
theListWidget = Ui.ChangesList;
runVisit();
CoordBox bbox = theDocument->getDirtyOrOriginLayer()->boundingBox();
QString bboxComment = QString("BBOX:%1,%2,%3,%4")
.arg(QString::number(bbox.bottomLeft().x(), 'f', 2))
.arg(QString::number(bbox.bottomLeft().y(), 'f', 2))
.arg(QString::number(bbox.topRight().x(), 'f', 2))
.arg(QString::number(bbox.topRight().y(), 'f', 2));
QString statComment = QString("ADD:%1 UPD:%2 DEL:%3").arg(glbAdded).arg(glbUpdated).arg(glbDeleted);
glbChangeSetComment = bboxComment + " " + statComment;
Ui.edChangesetComment->setText(glbChangeSetComment);
Ui.edChangesetComment->selectAll();
bool ok = (dlg->exec() == QDialog::Accepted);
if (!Ui.edChangesetComment->text().isEmpty())
glbChangeSetComment = Ui.edChangesetComment->text();
else
glbChangeSetComment = "-";
Task = Ui.ChangesList->count();
SAFE_DELETE(dlg)
return ok;
}
示例5: grid
virtual void grid(GridBase<CELL_TYPE, 1> *ret)
{
CoordBox<1> boundingBox = ret->boundingBox();
for (CoordBox<1>::Iterator i = boundingBox.begin(); i != boundingBox.end(); ++i) {
CELL_TYPE cell(i->x() % width(), i->x() / width());
ret->set(*i, cell);
}
}
示例6: clearNoSnap
void ScaleInteraction::snapMousePressEvent(QMouseEvent * anEvent, Feature* aLast)
{
QList<Feature*> sel;
if (view()->isSelectionLocked()) {
if (theMain->properties()->selection(0))
sel.append(theMain->properties()->selection(0));
else
sel.append(aLast);
} else {
sel = theMain->properties()->selection();
if (!sel.size() && aLast)
sel.append(aLast);
}
Radius = 1.0;
clearNoSnap();
Scaling.clear();
OriginalPosition.clear();
if (!sel.size())
return;
view()->setInteracting(true);
StartDragPosition = XY_TO_COORD(anEvent->pos());
OriginNode = NULL;
NodeOrigin = false;
CoordBox selBB = sel[0]->boundingBox();
for (int j=0; j<sel.size(); j++) {
selBB.merge(sel[j]->boundingBox());
if (CHECK_WAY(sel[j])) {
Way* R = STATIC_CAST_WAY(sel[j]);
for (int i=0; i<R->size(); ++i)
if (std::find(Scaling.begin(),Scaling.end(),R->get(i)) == Scaling.end())
Scaling.push_back(R->getNode(i));
addToNoSnap(R);
} else if (CHECK_NODE(sel[j])) {
if (!OriginNode && !NodeOrigin) {
OriginNode = STATIC_CAST_NODE(sel[j]);
NodeOrigin = true;
} else {
NodeOrigin = false;
}
}
}
if (Scaling.size() > 1) {
if (NodeOrigin) {
ScaleCenter = COORD_TO_XY(OriginNode->position());
} else {
ScaleCenter = COORD_TO_XY(selBB.center());
}
for (int i=0; i<Scaling.size(); ++i)
{
OriginalPosition.push_back(Scaling[i]->position());
addToNoSnap(Scaling[i]);
}
} else
Scaling.clear();
}
示例7: setBoundingBox
void NativeRenderDialog::setBoundingBox(CoordBox aBBox)
{
ui.sbMinLat->setValue(aBBox.bottomLeft().y());
ui.sbMaxLat->setValue(aBBox.topLeft().y());
ui.sbMinLon->setValue(aBBox.topLeft().x());
ui.sbMaxLon->setValue(aBBox.topRight().x());
prtW->updatePreview();
}
示例8: stepFinished
void stepFinished(const GridType& grid, unsigned step, WriterEvent event)
{
avrgTemperature = 0;
CoordBox<2> box = grid.boundingBox();
for (CoordBox<2>::Iterator i = box.begin(); i != box.end(); ++i) {
avrgTemperature += grid.get(*i).temperature;
}
avrgTemperature /= box.dimensions.prod();
std::cout << "averageTemperature(" << step << ") = " << avrgTemperature << "\n";
}
示例9: downloadOSM
bool downloadOSM(QWidget* aParent, const QString& aWeb, const QString& aUser, const QString& aPassword, const CoordBox& aBox , Document* theDocument, Layer* theLayer)
{
if (checkForConflicts(theDocument))
{
QMessageBox::warning(aParent,QApplication::translate("Downloader","Unresolved conflicts"), QApplication::translate("Downloader","Please resolve existing conflicts first"));
return false;
}
Downloader Rcv(aUser, aPassword);
QString URL = Rcv.getURLToMap();
URL = URL.arg(aBox.bottomLeft().x(), 0, 'f').arg(aBox.bottomLeft().y(), 0, 'f').arg(aBox.topRight().x(), 0, 'f').arg(aBox.topRight().y(), 0, 'f');
QUrl theUrl(aWeb+URL);
return downloadOSM(aParent, theUrl, aUser, aPassword, theDocument, theLayer);
}
示例10: downloadTracksFromOSM
bool downloadTracksFromOSM(QWidget* Main, const QString& aWeb, const QString& aUser, const QString& aPassword, const CoordBox& aBox , Document* theDocument)
{
Downloader theDownloader(aUser, aPassword);
QList<TrackLayer*> theTracklayers;
//TrackMapLayer* trackLayer = new TrackMapLayer(QApplication::translate("Downloader","Downloaded tracks"));
//theDocument->add(trackLayer);
IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(Main);
if (!aProgressWindow)
return false;
QProgressDialog* dlg = aProgressWindow->getProgressDialog();
dlg->setWindowTitle(QApplication::translate("Downloader","Parsing..."));
QProgressBar* Bar = aProgressWindow->getProgressBar();
Bar->setTextVisible(false);
Bar->setMaximum(11);
QLabel* Lbl = aProgressWindow->getProgressLabel();
Lbl->setText(QApplication::translate("Downloader","Parsing XML"));
if (dlg)
dlg->show();
theDownloader.setAnimator(dlg,Lbl,Bar,true);
for (int Page=0; ;++Page)
{
Lbl->setText(QApplication::translate("Downloader","Downloading trackpoints %1-%2").arg(Page*5000+1).arg(Page*5000+5000));
QString URL = theDownloader.getURLToTrackPoints();
URL = URL.arg(aBox.bottomLeft().x()).
arg(aBox.bottomLeft().y()).
arg(aBox.topRight().x()).
arg(aBox.topRight().y()).
arg(Page);
QUrl theUrl(aWeb+URL);
if (!theDownloader.go(theUrl))
return false;
if (theDownloader.resultCode() != 200)
return false;
int Before = theTracklayers.size();
QByteArray Ar(theDownloader.content());
bool OK = importGPX(Main, Ar, theDocument, theTracklayers, true);
if (!OK)
return false;
if (Before == theTracklayers.size())
break;
theTracklayers[theTracklayers.size()-1]->setName(QApplication::translate("Downloader", "Downloaded track - nodes %1-%2").arg(Page*5000+1).arg(Page*5000+5000));
}
return true;
}
示例11: QString
bool DrawingLayer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress)
{
bool OK = true;
stream.writeStartElement(metaObject()->className());
Layer::toXML(stream, asTemplate, progress);
if (!asTemplate) {
stream.writeStartElement("osm");
stream.writeAttribute("version", "0.6");
stream.writeAttribute("generator", QString("%1 %2").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)));
if (p->Features.size()) {
stream.writeStartElement("bound");
CoordBox layBB = boundingBox();
QString S = QString().number(layBB.bottomLeft().y(),'f',6) + ",";
S += QString().number(layBB.bottomLeft().x(),'f',6) + ",";
S += QString().number(layBB.topRight().y(),'f',6) + ",";
S += QString().number(layBB.topRight().x(),'f',6);
stream.writeAttribute("box", S);
stream.writeAttribute("origin", QString("http://www.openstreetmap.org/api/%1").arg(M_PREFS->apiVersion()));
stream.writeEndElement();
}
QList<MapFeaturePtr>::iterator it;
for(it = p->Features.begin(); it != p->Features.end(); it++)
(*it)->toXML(stream, progress);
stream.writeEndElement();
QList<CoordBox> downloadBoxes = p->theDocument->getDownloadBoxes(this);
if (downloadBoxes.size() && p->theDocument->getLastDownloadLayerTime().secsTo(QDateTime::currentDateTime()) < 12*3600) { // Do not export downloaded areas if older than 12h
stream.writeStartElement("DownloadedAreas");
QListIterator<CoordBox>it(downloadBoxes);
while(it.hasNext()) {
it.next().toXML("DownloadedBoundingBox", stream);
}
stream.writeEndElement();
}
}
stream.writeEndElement();
return OK;
}
示例12: grid
virtual void grid(GridBase<BushFireCell, 2> *ret)
{
Random::seed(4711);
CoordBox<2> box = ret->boundingBox();
Grid<double> humidityGrid = createUnwarpedPlasmaField(gridDimensions(), 0.5);
Grid<double> fuelGrid = createUnwarpedPlasmaField(gridDimensions(), 0.01);
for (CoordBox<2>::Iterator i = box.begin(); i != box.end(); ++i) {
ret->set(*i, BushFireCell(humidityGrid[*i], 1.0 + fuelGrid[*i]));
}
CoordBox<2> seatOfFire(Coord<2>(100, 100), Coord<2>(10, 10));
for (CoordBox<2>::Iterator i = seatOfFire.begin(); i != seatOfFire.end(); ++i) {
if (box.inBounds(*i)) {
ret->set(*i, BushFireCell(0, 10.0, 200.0, BushFireCell::BURNING));
}
}
}
示例13: grid
virtual void grid(GridBase<ConwayCell, 2> *ret)
{
CoordBox<2> rect = ret->boundingBox();
std::vector<Coord<2> > startCells;
// start with a single glider...
// x
// x
// xxx
startCells +=
Coord<2>(11, 10),
Coord<2>(12, 11),
Coord<2>(10, 12), Coord<2>(11, 12), Coord<2>(12, 12);
// ...add a Diehard pattern...
// x
// xx
// x xxx
startCells +=
Coord<2>(55, 70), Coord<2>(56, 70), Coord<2>(56, 71),
Coord<2>(60, 71), Coord<2>(61, 71), Coord<2>(62, 71),
Coord<2>(61, 69);
// ...and an Acorn pattern:
// x
// x
// xx xxx
startCells +=
Coord<2>(111, 30),
Coord<2>(113, 31),
Coord<2>(110, 32), Coord<2>(111, 32),
Coord<2>(113, 32), Coord<2>(114, 32), Coord<2>(115, 32);
for (std::vector<Coord<2> >::iterator i = startCells.begin();
i != startCells.end();
++i) {
if (rect.inBounds(*i)) {
ret->set(*i, ConwayCell(true));
}
}
}
示例14: boundingBox
CoordBox Layer::boundingBox()
{
if(p->Features.size()==0) return CoordBox(Coord(0,0),Coord(0,0));
CoordBox Box;
bool haveFirst = false;
for (int i=0; i<p->Features.size(); ++i) {
if (p->Features.at(i)->isDeleted())
continue;
if (p->Features.at(i)->notEverythingDownloaded())
continue;
if (p->Features.at(i)->boundingBox().isNull())
continue;
if (haveFirst)
Box.merge(p->Features.at(i)->boundingBox());
else {
Box = p->Features.at(i)->boundingBox();
haveFirst = true;
}
}
return Box;
}
示例15: downloadOSM
bool downloadOSM(QWidget* aParent, const QString& aWeb, const QString& aUser, const QString& aPassword, const CoordBox& aBox , Document* theDocument, Layer* theLayer)
{
if (checkForConflicts(theDocument))
{
QMessageBox::warning(aParent,QApplication::translate("Downloader","Unresolved conflicts"), QApplication::translate("Downloader","Please resolve existing conflicts first"));
return false;
}
Downloader Rcv(aUser, aPassword);
QString URL = Rcv.getURLToMap();
if ((fabs(aBox.bottomLeft().x()) < 180.0 && fabs(aBox.topRight().x()) > 180.0)
|| (fabs(aBox.bottomLeft().x()) > 180.0 && fabs(aBox.topRight().x()) < 180.0)) {
/* Check for +-180 meridian, and split query in two if necessary */
int sign = (aBox.bottomLeft().x() > 0) ? 1 : -1;
CoordBox q1 = aBox, q2 = aBox;
if (aBox.bottomLeft().x() > 0) {
q1.setRight(180*sign);
q2.setLeft(-180*sign);
q2.setRight(q2.right()-360);
} else {
q1.setLeft(180*sign);
q2.setRight(-180*sign);
q2.setLeft(q2.left()+360);
}
return downloadOSM(aParent, aWeb, aUser, aPassword, q1, theDocument, theLayer)
&& downloadOSM(aParent, aWeb, aUser, aPassword, q2, theDocument, theLayer);
} else {
/* Normal code path */
URL = URL.arg(aBox.bottomLeft().x(), 0, 'f').arg(aBox.bottomLeft().y(), 0, 'f').arg(aBox.topRight().x(), 0, 'f').arg(aBox.topRight().y(), 0, 'f');
QUrl theUrl(aWeb+URL);
return downloadOSM(aParent, theUrl, aUser, aPassword, theDocument, theLayer);
}
}