From: <mk...@us...> - 2003-08-13 12:23:57
|
Update of /cvsroot/csp/APPLICATIONS/CSPSim/Tools/Terrain/tile In directory sc8-pr-cvs1:/tmp/cvs-serv11339 Modified Files: Makefile tile.cpp Log Message: Index: Makefile =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/CSPSim/Tools/Terrain/tile/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Makefile 26 Jul 2003 21:35:01 -0000 1.3 --- Makefile 13 Aug 2003 11:47:07 -0000 1.4 *************** *** 1,5 **** all: csptile csptile: tile.cpp ! g++ -O2 -g $^ -o $@ -I/usr/include/python2.2 -lSimData -lz --- 1,9 ---- + PYTHONLIB = /usr/lib/python2.2/site-packages + PYTHONINC = /usr/include/python2.2 + all: csptile csptile: tile.cpp ! g++ -O2 -g $^ -o $@ -I$(PYTHONINC) -L$(PYTHONLIB)/SimData -lSimData -lz ! Index: tile.cpp =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/CSPSim/Tools/Terrain/tile/tile.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tile.cpp 26 Jul 2003 21:35:01 -0000 1.3 --- tile.cpp 13 Aug 2003 11:47:08 -0000 1.4 *************** *** 64,71 **** public: GeodesicRestriction(double lat0, double lon0, double lat1, double lon1) { ! _lat0 = DegreesToRadians(lat0); ! _lon0 = DegreesToRadians(lon0); ! _lat1 = DegreesToRadians(lat1); ! _lon1 = DegreesToRadians(lon1); assert(lat1 >= lat0); assert(lon1 >= lon0); --- 64,71 ---- public: GeodesicRestriction(double lat0, double lon0, double lat1, double lon1) { ! _lat0 = simdata::toRadians(lat0); ! _lon0 = simdata::toRadians(lon0); ! _lat1 = simdata::toRadians(lat1); ! _lon1 = simdata::toRadians(lon1); assert(lat1 >= lat0); assert(lon1 >= lon0); *************** *** 316,331 **** READI(zone); gzread(fp, buffer, 4*sizeof(int)); ! READD(cor0.x); ! READD(cor1.x); ! READD(cor2.x); ! READD(cor3.x); ! READD(cor0.y); ! READD(cor1.y); ! READD(cor2.y); ! READD(cor3.y); ! //std::cout << cor0.x << ", " << cor0.y << " utm\n"; ! READD(res.x); ! READD(res.y); ! READD(res.z); READI(gnd_units); READI(elev_units); --- 316,331 ---- READI(zone); gzread(fp, buffer, 4*sizeof(int)); ! READD(cor0.x()); ! READD(cor1.x()); ! READD(cor2.x()); ! READD(cor3.x()); ! READD(cor0.y()); ! READD(cor1.y()); ! READD(cor2.y()); ! READD(cor3.y()); ! //std::cout << cor0.x() << ", " << cor0.y() << " utm\n"; ! READD(res.x()); ! READD(res.y()); ! READD(res.z()); READI(gnd_units); READI(elev_units); *************** *** 336,340 **** int n_col; READI(n_col); ! if (res.x != 30.0 || res.y != 30.0 || res.z != 1.0) { //std::cout << "10m\n"; //gzclose(fp); --- 336,340 ---- int n_col; READI(n_col); ! if (res.x() != 30.0 || res.y() != 30.0 || res.z() != 1.0) { //std::cout << "10m\n"; //gzclose(fp); *************** *** 354,361 **** std::cout << " > " << i << " of " << n_col << "\n"; std::cout << " > " << filename << "\n"; ! std::cout << " > " << res.x << " " << res.y << " " << res.z << "\n"; } if (n > 0) { ! //std::cout << "ROWS = " << n << " " << d.E << " " << res.x << "\n"; d.setSize(n); gzread(fp, d.elev, n * sizeof(unsigned short)); --- 354,361 ---- std::cout << " > " << i << " of " << n_col << "\n"; std::cout << " > " << filename << "\n"; ! std::cout << " > " << res.x() << " " << res.y() << " " << res.z() << "\n"; } if (n > 0) { ! //std::cout << "ROWS = " << n << " " << d.E << " " << res.x() << "\n"; d.setSize(n); gzread(fp, d.elev, n * sizeof(unsigned short)); *************** *** 378,384 **** gscale = 1.0; if (gnd_units == 1) gscale *= 12 * 0.0254; ! if (fabs(cols.begin()->E - cor0.x) >= 500.0) { std::cout << "Problem with DAT input for quad " << filename << "\n"; ! std::cout << "Corner0.x = " << cor0.x << "\n"; std::cout << "Cols[0].E = " << cols.begin()->E << "\n"; std::cout << "Differ by more than 500 m, possible zone mismatch?\n"; --- 378,384 ---- gscale = 1.0; if (gnd_units == 1) gscale *= 12 * 0.0254; ! if (fabs(cols.begin()->E - cor0.x()) >= 500.0) { std::cout << "Problem with DAT input for quad " << filename << "\n"; ! std::cout << "Corner0.x = " << cor0.x() << "\n"; std::cout << "Cols[0].E = " << cols.begin()->E << "\n"; std::cout << "Differ by more than 500 m, possible zone mismatch?\n"; *************** *** 401,410 **** */ int addNearest(std::vector<DEMcol>::iterator &i, UTM const &utm, ElevationFinder &finder) { ! double fN = (utm.northing() - i->N) / (res.y*gscale); double dN, dE = (utm.easting() - i->E); //std::cout << gscale << " " << fN << " " << dE << " <----\n"; int idx = int(fN); //std::cout << ":\n"; ! if (idx < -10 || idx >= i->n+10 || fabs(dE) > 10.0*res.x) { //std::cout << "OUT_OF_RANGE " << dE << "dE " << idx << " " << i->E << "E " << utm.asString() << "\n"; if (idx < -10) return -1; --- 401,410 ---- */ int addNearest(std::vector<DEMcol>::iterator &i, UTM const &utm, ElevationFinder &finder) { ! double fN = (utm.northing() - i->N) / (res.y()*gscale); double dN, dE = (utm.easting() - i->E); //std::cout << gscale << " " << fN << " " << dE << " <----\n"; int idx = int(fN); //std::cout << ":\n"; ! if (idx < -10 || idx >= i->n+10 || fabs(dE) > 10.0*res.x()) { //std::cout << "OUT_OF_RANGE " << dE << "dE " << idx << " " << i->E << "E " << utm.asString() << "\n"; if (idx < -10) return -1; *************** *** 413,421 **** } if (idx < 0) { ! int xside = cor0.x + cor3.x - 2.0*utm.easting() > 0 ? -1 : 1; //std::cout << "DOWN\n"; finder.setHint(0, -1); finder.setHint(xside, -1); ! dN = fN * res.y * gscale; //std::cout << "C- " << fN << " " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[0]), dE*dE + dN*dN); --- 413,421 ---- } if (idx < 0) { ! int xside = cor0.x() + cor3.x() - 2.0*utm.easting() > 0 ? -1 : 1; //std::cout << "DOWN\n"; finder.setHint(0, -1); finder.setHint(xside, -1); ! dN = fN * res.y() * gscale; //std::cout << "C- " << fN << " " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[0]), dE*dE + dN*dN); *************** *** 424,439 **** if (idx >= i->n-1) { //std::cout << "UP\n"; ! int xside = cor0.x + cor3.x - 2.0*utm.easting() > 0 ? -1 : 1; finder.setHint(0, +1); finder.setHint(xside, +1); ! dN = (fN - (i->n-1)) * res.y * gscale; //std::cout << "C+ " << (fN - (i->n-1)) << "|" << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[i->n-1]), dE*dE + dN*dN); return +1; } ! dN = (fN - idx) * res.y * gscale; //std::cout << "CA " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[idx]), dE*dE + dN*dN); ! dN = (fN - idx - 1.0) * res.y * gscale; //std::cout << "CB " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[idx+1]), dE*dE + dN*dN); --- 424,439 ---- if (idx >= i->n-1) { //std::cout << "UP\n"; ! int xside = cor0.x() + cor3.x() - 2.0*utm.easting() > 0 ? -1 : 1; finder.setHint(0, +1); finder.setHint(xside, +1); ! dN = (fN - (i->n-1)) * res.y() * gscale; //std::cout << "C+ " << (fN - (i->n-1)) << "|" << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[i->n-1]), dE*dE + dN*dN); return +1; } ! dN = (fN - idx) * res.y() * gscale; //std::cout << "CA " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[idx]), dE*dE + dN*dN); ! dN = (fN - idx - 1.0) * res.y() * gscale; //std::cout << "CB " << dN << " " << dE << std::endl; finder.setPartialElevation(_scale(i->elev[idx+1]), dE*dE + dN*dN); *************** *** 445,449 **** */ inline double _scale(double elevation) { ! double scale = res.z; if (elev_units == 1) scale *= 12*0.0254; // feet to meters return (elevation - bias) * scale; --- 445,449 ---- */ inline double _scale(double elevation) { ! double scale = res.z(); if (elev_units == 1) scale *= 12*0.0254; // feet to meters return (elevation - bias) * scale; *************** *** 475,479 **** t_idx++; } ! int yside = cor0.y + cor1.y - 2.0*utm.northing() > 0 ? -1 : 1; if (i == j) { //std::cout << "END\n"; --- 475,479 ---- t_idx++; } ! int yside = cor0.y() + cor1.y() - 2.0*utm.northing() > 0 ? -1 : 1; if (i == j) { //std::cout << "END\n"; *************** *** 560,567 **** } virtual void setExtentDegrees(double left, double right, double bottom, double top) { ! _left = RadiansToDegrees(left); ! _right = RadiansToDegrees(right); ! _bottom = RadiansToDegrees(bottom); ! _top = RadiansToDegrees(top); } virtual void setExtentMeters(double left, double right, double bottom, double top) { --- 560,567 ---- } virtual void setExtentDegrees(double left, double right, double bottom, double top) { ! _left = simdata::toDegrees(left); ! _right = simdata::toDegrees(right); ! _bottom = simdata::toDegrees(bottom); ! _top = simdata::toDegrees(top); } virtual void setExtentMeters(double left, double right, double bottom, double top) { *************** *** 978,983 **** tile_dy = tile_height / (tile_y_size-overlap); Matrix3 Ry, Rz; ! Rz = RotationZMatrix3(center.longitude()); ! Ry = RotationYMatrix3(-center.latitude()); R_center = Rz * Ry; R = 6371010.0; // nominal radius of the earth --- 978,983 ---- tile_dy = tile_height / (tile_y_size-overlap); Matrix3 Ry, Rz; ! Rz.makeRotate(center.longitude(), Vector3::ZAXIS); ! Ry.makeRotate(-center.latitude(), Vector3::YAXIS); R_center = Rz * Ry; R = 6371010.0; // nominal radius of the earth *************** *** 996,1000 **** void prepareSampling() { ! Gauss g(0.0, 1.0); int i; double avg_x = 0.0; --- 996,1001 ---- void prepareSampling() { ! simdata::random::Gauss g; ! g->setDistribution(0.0, 1.0); int i; double avg_x = 0.0; *************** *** 1002,1007 **** if (subsamples < 1) subsamples = 1; for (i = 0; i < subsamples; i++) { ! double x = g.newRand(); ! double y = g.newRand(); x_subsamples.push_back(x); y_subsamples.push_back(y); --- 1003,1008 ---- if (subsamples < 1) subsamples = 1; for (i = 0; i < subsamples; i++) { ! double x = g.sample(); ! double y = g.sample(); x_subsamples.push_back(x); y_subsamples.push_back(y); *************** *** 1157,1163 **** void project(double x, double y, double &lat, double &lon) { Vector3 pos(R, x, y); ! pos = Normalized(R_center * pos); ! lon = atan2(pos.y, pos.x); ! lat = asin(pos.z); } --- 1158,1164 ---- void project(double x, double y, double &lat, double &lon) { Vector3 pos(R, x, y); ! pos = (R_center * pos).normalized(); ! lon = atan2(pos.y(), pos.x()); ! lat = asin(pos.z()); } *************** *** 1168,1173 **** */ DEM* getDEM(double lat, double lon) { ! lat *= 180.0/G_PI; ! lon *= 180.0/G_PI; int index = int((lat+90)*8)*10000 + int((lon+180)*8); //std::cout << lat << " " << lon << " " << index << std::endl; --- 1169,1174 ---- */ DEM* getDEM(double lat, double lon) { ! lat *= 180.0/simdata::PI; ! lon *= 180.0/simdata::PI; int index = int((lat+90)*8)*10000 + int((lon+180)*8); //std::cout << lat << " " << lon << " " << index << std::endl; *************** *** 1177,1185 **** // double check indexing UTM corner; ! corner.set(d->cor0.x, d->cor0.y, d->zone, 'X'); LLA cor0(corner, GeoRef::NAD27); ! corner.set(d->cor2.x, d->cor2.y, d->zone, 'X'); LLA cor2(corner, GeoRef::NAD27); ! if (!d->isZero() && !(lon+0.0001 >= cor0.longitude()*180.0/G_PI && lon-0.0001 <= cor2.longitude()*180.0/G_PI)) { std::cout << cor0.asString() << cor2.asString() << "\n"; std::cout << lat << " " << lon << "\n"; --- 1178,1186 ---- // double check indexing UTM corner; ! corner.set(d->cor0.x(), d->cor0.y(), d->zone, 'X'); LLA cor0(corner, GeoRef::NAD27); ! corner.set(d->cor2.x(), d->cor2.y(), d->zone, 'X'); LLA cor2(corner, GeoRef::NAD27); ! if (!d->isZero() && !(lon+0.0001 >= cor0.longitude()*180.0/simdata::PI && lon-0.0001 <= cor2.longitude()*180.0/simdata::PI)) { std::cout << cor0.asString() << cor2.asString() << "\n"; std::cout << lat << " " << lon << "\n"; *************** *** 1221,1225 **** while (finder.getHint(dx, dy)) { //std::cout << dx << " | " << dy << std::endl; ! dem = getDEM(lat + dy * 0.125 * G_PI / 180.0, lon + dx * 0.125 * G_PI / 180.0); //std::cout << "Looking for more " << lon << " - " << dx << ":" << dy << "\n"; dem->getElevation(finder); --- 1222,1226 ---- while (finder.getHint(dx, dy)) { //std::cout << dx << " | " << dy << std::endl; ! dem = getDEM(lat + dy * 0.125 * simdata::PI / 180.0, lon + dx * 0.125 * simdata::PI / 180.0); //std::cout << "Looking for more " << lon << " - " << dx << ":" << dy << "\n"; dem->getElevation(finder); |