18 #include <osg/Referenced>
19 #include <osg/BoundingBox>
20 #include <osg/BoundingSphere>
22 #include <osgUtil/CullVisitor>
47 , myCameraResolution( 1.0 )
48 , myTerrainRadius( 1.0 )
49 , myScalingFlag( true )
50 , myScaleFactor( 1.0 )
51 , myClampedPixelSize( 1.0 )
52 , myCameraMagnification( 1.0 )
54 , myCoordinateSystemChanged( false )
60 void setCameraMagnification(
double mag )
62 myCameraMagnification = mag;
65 inline double cameraMagnification()
const
67 return myCameraMagnification;
71 void setCameraResolution(
double factor)
73 myCameraResolution = factor;
77 inline double cameraResolution()
const
79 return myCameraResolution;
83 void setTerrainRadius(
double rad)
85 myTerrainRadius = rad;
89 void setAltitude2D(
double altitude )
91 myAltitude2D = altitude;
94 double altitude2D()
const
100 inline double terrainRadius()
const
102 return myTerrainRadius;
106 void setOrthoCulling(
bool ortho)
112 inline bool orthoCulling()
const
117 inline void setSkyRendering(
bool renderSky)
119 mySkyFlag = renderSky;
123 inline bool skyRendering()
const
129 void setScaling(
bool scaling )
131 myScalingFlag = scaling;
135 inline bool scaling()
const
137 return myScalingFlag;
141 void setScaleFactor(
double scaleFactor )
143 myScaleFactor = scaleFactor;
147 inline double scaleFactor()
const
149 return myScaleFactor;
153 void setCoordinateSystemChanged(
bool changed )
155 myCoordinateSystemChanged = changed;
159 inline bool coordinateSystemChanged()
const
161 return myCoordinateSystemChanged;
167 myScaleType = scaleType;
176 inline double calculateFixedScale(
double basempp,
double mpp )
178 return mpp / basempp;
181 inline double calculateScaleFromDistance(
double distance,
double r )
183 double distsqr = distance *
distance;
184 double scaleDistRatio = 250 - 2.0 * myScaleFactor;
185 double scaleBasedOnDistance = sqrt(distsqr)/scaleDistRatio;
195 double scaleScale = 6.0 / r;
196 scaleBasedOnDistance *= scaleScale;
199 if (scaleBasedOnDistance < 1.0)
201 scaleBasedOnDistance = 1.0;
204 return scaleBasedOnDistance;
207 void setClampedPixelSize(
double d)
209 myClampedPixelSize = d;
212 double clampedPixelSize()
const
214 return myClampedPixelSize;
238 : myFixedPixelSize( 1.0 )
252 void setFixedPixelSize(
double d)
254 myFixedPixelSize = d;
257 double fixedPixelSize()
const
259 return myFixedPixelSize;
262 void setDimensions(
double length,
double width,
double height)
264 myLength = length; myWidth = width; myHeight = height;
267 inline double length()
const
272 inline double width()
const
277 inline double height()
const
282 inline void calculateScaleFactors(
const osgUtil::CullVisitor& visitor,
284 double& scaleFactorX,
double& scaleFactorY,
double& scaleFactorZ)
const
287 visitor.clampedPixelSize( sphere.center(), info->
terrainRadius() );
290 calculateScaleFactors( sphere, *info, scaleFactorX,
291 scaleFactorY, scaleFactorZ );
295 double& scaleFactorX,
double& scaleFactorY,
double& scaleFactorZ)
const
297 scaleFactorX = scaleFactorY = scaleFactorZ = 1.0;
300 double curPixels = myWidth / metersPerPixel;
304 scaleFactorX = myFixedPixelSize / curPixels;
309 scaleFactorY = scaleFactorX;
318 void setScaleX(
bool b)
323 inline bool scaleX()
const
328 void setScaleXY(
bool b)
333 inline bool scaleY()
const
338 void setScaleZ(
bool b)
343 inline bool scaleZ()
const