15 #define OSGSIM_SECTOR 1
17 #include <osgSim/Export>
38 virtual const char *
className()
const {
return "Sector"; }
56 _cosFadeAngle(-1.0f) {}
58 void setAzimuthRange(
float minAzimuth,
float maxAzimuth,
float fadeAngle=0.0f);
59 void getAzimuthRange(
float& minAzimuth,
float& maxAzimuth,
float& fadeAngle)
const;
64 float dotproduct = eyeLocal.
x()*_sinAzim+eyeLocal.
y()*_cosAzim;
66 if (dotproduct<_cosFadeAngle*length)
return 0.0f;
67 if (dotproduct>=_cosAngle*length)
return 1.0f;
68 return (dotproduct-_cosFadeAngle*length)/((_cosAngle-_cosFadeAngle)*length);
86 _cosMinElevation(-1.0f),
87 _cosMinFadeElevation(-1.0f),
88 _cosMaxElevation(1.0),
89 _cosMaxFadeElevation(1.0) {}
91 void setElevationRange(
float minElevation,
float maxElevation,
float fadeAngle=0.0f);
93 float getMinElevation()
const;
95 float getMaxElevation()
const;
97 float getFadeAngle()
const;
101 float dotproduct = eyeLocal.
z();
102 float length = eyeLocal.
length();
103 if (dotproduct>_cosMaxFadeElevation*length)
return 0.0f;
104 if (dotproduct<_cosMinFadeElevation*length)
return 0.0f;
105 if (dotproduct>_cosMaxElevation*length)
108 return (dotproduct-_cosMaxFadeElevation*length)/((_cosMaxElevation-_cosMaxFadeElevation)*length);
110 if (dotproduct<_cosMinElevation*length)
113 return (dotproduct-_cosMinFadeElevation*length)/((_cosMinElevation-_cosMinFadeElevation)*length);
138 AzimSector(
float minAzimuth,
float maxAzimuth,
float fadeAngle=0.0f);
142 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
163 ElevationSector(
float minElevation,
float maxElevation,
float fadeAngle=0.0f);
167 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
189 AzimElevationSector(
float minAzimuth,
float maxAzimuth,
float minElevation,
float maxElevation,
float fadeAngle=0.0f);
193 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
207 _axis(0.0f,0.0f,1.0f),
209 _cosAngleFade(-1.0f) {}
214 _cosAngle(copy._cosAngle),
215 _cosAngleFade(copy._cosAngleFade) {}
225 void setAngle(
float angle,
float fadeangle=0.0f);
227 float getAngle()
const;
229 float getFadeAngle()
const;
231 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
254 _direction(0.0f, 0.0f, 1.0f),
256 _cosHorizAngle(-1.0f),
257 _cosVertAngle(-1.0f),
258 _cosHorizFadeAngle(-1.0f),
259 _cosVertFadeAngle(-1.0f) {computeMatrix();}
263 _direction(copy._direction),
264 _rollAngle(copy._rollAngle),
265 _local_to_LP(copy._local_to_LP),
266 _cosHorizAngle(copy._cosHorizAngle),
267 _cosVertAngle(copy._cosVertAngle),
268 _cosHorizFadeAngle(copy._cosHorizFadeAngle),
269 _cosVertFadeAngle(copy._cosVertFadeAngle) {}
271 DirectionalSector(
const osg::Vec3& direction,
float horizLobeAngle,
float vertLobeAngle,
float lobeRollAngle,
float fadeAngle=0.0f);
275 void setDirection(
const osg::Vec3& direction);
279 void setHorizLobeAngle(
float angle);
281 float getHorizLobeAngle()
const;
283 void setLobeRollAngle(
float angle);
285 float getLobeRollAngle()
const;
287 void setVertLobeAngle(
float angle);
289 float getVertLobeAngle()
const;
291 void setFadeAngle(
float angle);
293 float getFadeAngle()
const;
295 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
297 void computeMatrix() ;
Sector(const Sector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
ElevationSector(const ElevationSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual bool isSameKindAs(const osg::Object *obj) const
virtual float operator()(const osg::Vec3 &) const =0
DirectionalSector(const DirectionalSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual ~AzimElevationSector()
float azimSector(const osg::Vec3 &eyeLocal) const
#define META_Object(library, name)
AzimElevationSector(const AzimElevationSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
AzimSector(const AzimSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
float _cosMinFadeElevation
ConeSector(const ConeSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual ~DirectionalSector()
float _cosMaxFadeElevation
virtual ~ElevationSector()
float elevationSector(const osg::Vec3 &eyeLocal) const
virtual const char * className() const
value_type length() const
virtual const char * libraryName() const