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:
parent
c913f00d21
commit
b92ebca928
@ -60,7 +60,7 @@ class OSGTERRAIN_EXPORT EllipsoidLocator : public osgTerrain::Locator
|
|||||||
public:
|
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);
|
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; }
|
double getHeight() const { return _height; }
|
||||||
|
|
||||||
|
void setEllipsoidModel(osg::EllipsoidModel* em) { _em=em; }
|
||||||
osg::EllipsoidModel* getEllipsoidModel() { return _em.get(); }
|
osg::EllipsoidModel* getEllipsoidModel() { return _em.get(); }
|
||||||
const osg::EllipsoidModel* getEllipsoidModel() const { return _em.get(); }
|
const osg::EllipsoidModel* getEllipsoidModel() const { return _em.get(); }
|
||||||
|
|
||||||
|
@ -80,13 +80,12 @@ bool Locator::computeLocalBounds(Locator& source, osg::Vec3d& bottomLeft, osg::V
|
|||||||
//
|
//
|
||||||
// EllipsoidLocator
|
// 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);
|
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)
|
void EllipsoidLocator::setExtents(double longitude, double latitude, double deltaLongitude, double deltaLatitude, double height, double heightScale)
|
||||||
{
|
{
|
||||||
_longitude = longitude;
|
_longitude = longitude;
|
||||||
|
Loading…
Reference in New Issue
Block a user