Files
2025-06-06 16:15:07 +08:00

63 lines
1.6 KiB
C++

#include <iostream>
#include "map.h"
#include "harray2d.h"
using namespace std;
using namespace GMapping;
struct SimpleCell{
int value;
SimpleCell(int v=0){value=v;}
static const SimpleCell& Unknown();
static SimpleCell* address;
};
SimpleCell* SimpleCell::address=0;
const SimpleCell& SimpleCell::Unknown(){
if (address)
return *address;
address=new SimpleCell(-1);
return *address;
}
typedef Map< SimpleCell, HierarchicalArray2D<SimpleCell> > CGrid;
int main (int argc, char ** argv){
CGrid g1(Point(0.,0.), 200, 200, 0.1);
CGrid g2(Point(10.,10.), 200, 200, 0.1);
{
HierarchicalArray2D<SimpleCell>::PointSet ps;
IntPoint pp=g1.world2map(Point(5.1,5.1));
cout << pp.x << " " << pp.y << endl;
ps.insert(pp);
g1.storage().setActiveArea(ps,false);
g1.storage().allocActiveArea();
g1.cell(Point(5.1,5.1)).value=5;
cout << "cell value" << (int) g1.cell(Point(5.1,5.1)).value << endl;
g1.resize(-150, -150, 150, 150);
cout << "cell value" << (int) g1.cell(Point(5.1,5.1)).value << endl;
CGrid g3(g1);
g1=g2;
}
cerr << "copy and modify test" << endl;
CGrid *ap,* gp1=new CGrid(Point(0,0), 200, 200, 0.1);
CGrid* gp0=new CGrid(*gp1);
for (int i=1; i<10; i++){
ap=new CGrid(*gp1);
delete gp1;
gp1=gp0;
gp0=ap;
IntPoint pp=gp0->world2map(Point(5.1,5.1));
HierarchicalArray2D<SimpleCell>::PointSet ps;
ps.insert(pp);
gp1->storage().setActiveArea(ps,false);
gp1->storage().allocActiveArea();
gp1->cell(Point(5.1,5.1)).value=i;
cout << "cell value" << (int) gp1->cell(Point(5.1,5.1)).value << endl;
}
delete gp0;
delete gp1;
return 0;
}