From Maria Ten, "The constructor method of the EllipsoidLocator of osgTerrain assumes

that the terrain is always the Earth planet. I changed the constructor
method to accept the Equator radius and the Polar radius like
parameters. By default, it assumes the Earth radius for the
EllipsoidLocator. I added a setEllipsoidModel method, too.

Now, we are developing some libraries for a GIS applicacion, and our
libraries can visualize terrains of planets like Mars. I think that is
a interesting change."
This commit is contained in:
Robert Osfield 2007-06-01 21:33:29 +00:00
parent c913f00d21
commit b92ebca928
2 changed files with 4 additions and 4 deletions

View File

@ -60,7 +60,7 @@ class OSGTERRAIN_EXPORT EllipsoidLocator : public osgTerrain::Locator
public:
EllipsoidLocator(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height=0.0, double heightScale = 1.0f);
EllipsoidLocator(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height=0.0, double heightScale = 1.0f, double radiusEquator = osg::WGS_84_RADIUS_EQUATOR, double radiusPolar = osg::WGS_84_RADIUS_POLAR);
void setExtents(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height=0.0, double heightScale = 1.0f);
@ -72,6 +72,7 @@ class OSGTERRAIN_EXPORT EllipsoidLocator : public osgTerrain::Locator
double getHeight() const { return _height; }
void setEllipsoidModel(osg::EllipsoidModel* em) { _em=em; }
osg::EllipsoidModel* getEllipsoidModel() { return _em.get(); }
const osg::EllipsoidModel* getEllipsoidModel() const { return _em.get(); }

View File

@ -80,13 +80,12 @@ bool Locator::computeLocalBounds(Locator& source, osg::Vec3d& bottomLeft, osg::V
//
// EllipsoidLocator
//
EllipsoidLocator::EllipsoidLocator(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height, double heightScale)
EllipsoidLocator::EllipsoidLocator(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height, double heightScale, double radiusEquator, double radiusPolar)
{
setExtents(longitude, latitude, deltaLongitude, deltaLatitude, height, heightScale);
_em = new osg::EllipsoidModel;
_em = new osg::EllipsoidModel(radiusEquator, radiusPolar);
}
void EllipsoidLocator::setExtents(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height, double heightScale)
{
_longitude = longitude;