Added preliminary support for converting datasets into geocentric coords

This commit is contained in:
Robert Osfield
2004-03-31 22:31:46 +00:00
parent b67858f388
commit 9d2002f3c4
3 changed files with 121 additions and 25 deletions

View File

@@ -35,6 +35,9 @@ class EllipsodeTransform
_radiusEquator(radiusEquator),
_radiusPolar(radiusPolar) { computeCoefficients(); }
EllipsodeTransform(const EllipsodeTransform& et):
_radiusEquator(et._radiusEquator),
_radiusPolar(et._radiusPolar) { computeCoefficients(); }
void setRadiusEquator(double radius) { _radiusEquator = radius; computeCoefficients(); }
double getRadiusEquator() const { return _radiusEquator; }

View File

@@ -846,9 +846,20 @@ class DataSet : public osg::Referenced
void setDefaultColor(const osg::Vec4& defaultColor) { _defaultColor = defaultColor; }
const osg::Vec4& getDefaultColor() const { return _defaultColor; }
void setDestinationCoordinateSystem(const std::string& wellKnownText) { _coordinateSystem = new osgTerrain::CoordinateSystem(wellKnownText); }
void setDestinationCoordinateSystem(osgTerrain::CoordinateSystem* cs) { _coordinateSystem = cs; }
void setDestinationCoordinateSystem(const std::string& wellKnownText) { setDestinationCoordinateSystem(new osgTerrain::CoordinateSystem(wellKnownText)); }
void setDestinationCoordinateSystem(osgTerrain::CoordinateSystem* cs) { _destinationCoordinateSystem = cs; }
osgTerrain::CoordinateSystem* getDestinationCoordinateSystem() { return _destinationCoordinateSystem .get(); }
void setIntermediateCoordinateSystem(const std::string& wellKnownText) { setIntermediateCoordinateSystem(new osgTerrain::CoordinateSystem(wellKnownText)); }
void setIntermediateCoordinateSystem(osgTerrain::CoordinateSystem* cs) { _intermediateCoordinateSystem = cs; }
osgTerrain::CoordinateSystem* getIntermediateCoordinateSystem() { return _intermediateCoordinateSystem.get(); }
void setConvertFromGeographicToGeocentric(bool flag) { _convertFromGeographicToGeocentric = flag; }
bool getConvertFromGeographicToGeocentric() const { return _convertFromGeographicToGeocentric; }
void setEllipsodeTransform(const osgTerrain::EllipsodeTransform& et) { _ellipsodeTransform = et; }
osgTerrain::EllipsodeTransform& getEllipsodeTransform() { return _ellipsodeTransform; }
void setDestinationExtents(const osg::BoundingBox& extents) { _extents = extents; }
void setDestinationGeoTransform(const osg::Matrixd& geoTransform) { _geoTransform = geoTransform; }
@@ -926,7 +937,12 @@ class DataSet : public osg::Referenced
float _verticalScale;
osg::ref_ptr<osgTerrain::CoordinateSystem> _coordinateSystem;
osg::ref_ptr<osgTerrain::CoordinateSystem> _destinationCoordinateSystem;
osg::ref_ptr<osgTerrain::CoordinateSystem> _intermediateCoordinateSystem;
bool _convertFromGeographicToGeocentric;
osgTerrain::EllipsodeTransform _ellipsodeTransform;
osg::Matrixd _geoTransform;
osg::BoundingBox _extents;
std::string _tileBasename;