From 7905aa37b77928289d734d2a9523d7f06a0a0a8c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 5 May 2004 05:17:52 +0000 Subject: [PATCH] Increased the sampling of upper most tiles when doing a geocentric projection --- src/osgTerrain/DataSet.cpp | 46 ++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/osgTerrain/DataSet.cpp b/src/osgTerrain/DataSet.cpp index f4cb5d03d..0d6c59691 100644 --- a/src/osgTerrain/DataSet.cpp +++ b/src/osgTerrain/DataSet.cpp @@ -1794,8 +1794,15 @@ void DataSet::DestinationTile::optimizeResolution() { std::cout<<"******* We have a flat tile ******* "< 1.2) numRows = (unsigned int)ceilf((float)numRows*ratio_y_over_x); + else if (ratio_y_over_x < 0.8) numColumns = (unsigned int)ceilf((float)numColumns/ratio_y_over_x); + hf->allocate(numColumns,numRows); hf->setOrigin(osg::Vec3(_extents.xMin(),_extents.yMin(),0.0f)); @@ -1938,6 +1945,10 @@ osg::Node* DataSet::DestinationTile::createPolygonal() { std::cout<<"--------- DataSet::DestinationTile::createDrawableGeometry() ------------- "<getEllipsoidModel(); + bool mapLatLongsToXYZ = _dataSet->getConvertFromGeographicToGeocentric() && et; + bool useLocalToTileTransform = _dataSet->getUseLocalTileTransform(); + osg::ref_ptr grid = 0; if (_terrain.valid() && _terrain->_heightField.valid()) @@ -1947,12 +1958,32 @@ osg::Node* DataSet::DestinationTile::createPolygonal() } else { - unsigned int numCells = 8; + unsigned int minimumSize = 8; + unsigned int numColumns = minimumSize; + unsigned int numRows = minimumSize; + + if (mapLatLongsToXYZ) + { + float longitude_range = (_extents.xMax()-_extents.xMin()); + float latitude_range = (_extents.yMax()-_extents.yMin()); + + if (longitude_range>45.0) numColumns = (unsigned int)ceilf((float)numColumns*sqrtf(longitude_range/45.0)); + if (latitude_range>45.0) numRows = (unsigned int)ceilf((float)numRows*sqrtf(latitude_range/45.0)); + + std::cout<<"numColumns = "<