15#define OSGSIM_SECTOR 1
38 virtual const char *
className()
const {
return "Sector"; }
56 _cosFadeAngle(-1.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) {}
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;
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) {}
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) {}
295 virtual float operator() (
const osg::Vec3& eyeLocal)
const;
virtual ~AzimElevationSector()
Definition Sector:197
AzimElevationSector(const AzimElevationSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:184
META_Object(osgSim, AzimElevationSector)
AzimElevationSector(float minAzimuth, float maxAzimuth, float minElevation, float maxElevation, float fadeAngle=0.0f)
AzimElevationSector()
Definition Sector:179
AzimRange()
Definition Sector:52
float _cosAzim
Definition Sector:73
float _cosFadeAngle
Definition Sector:76
float azimSector(const osg::Vec3 &eyeLocal) const
Definition Sector:62
void getAzimuthRange(float &minAzimuth, float &maxAzimuth, float &fadeAngle) const
void setAzimuthRange(float minAzimuth, float maxAzimuth, float fadeAngle=0.0f)
float _sinAzim
Definition Sector:74
float _cosAngle
Definition Sector:75
virtual ~AzimSector()
Definition Sector:146
AzimSector(const AzimSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:134
META_Object(osgSim, AzimSector)
AzimSector(float minAzimuth, float maxAzimuth, float fadeAngle=0.0f)
AzimSector()
Definition Sector:130
ConeSector(const osg::Vec3 &axis, float angle, float fadeangle=0.0f)
META_Object(osgSim, ConeSector)
void setAngle(float angle, float fadeangle=0.0f)
virtual ~ConeSector()
Definition Sector:235
ConeSector(const ConeSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:211
osg::Vec3 _axis
Definition Sector:237
float _cosAngle
Definition Sector:238
void setAxis(const osg::Vec3 &axis)
float getFadeAngle() const
float _cosAngleFade
Definition Sector:239
ConeSector()
Definition Sector:205
const osg::Vec3 & getAxis() const
float getFadeAngle() const
float getVertLobeAngle() const
float _cosVertAngle
Definition Sector:307
DirectionalSector(const osg::Vec3 &direction, float horizLobeAngle, float vertLobeAngle, float lobeRollAngle, float fadeAngle=0.0f)
void setFadeAngle(float angle)
const osg::Vec3 & getDirection() const
void setDirection(const osg::Vec3 &direction)
DirectionalSector(const DirectionalSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:261
float getHorizLobeAngle() const
DirectionalSector()
Definition Sector:252
virtual ~DirectionalSector()
Definition Sector:301
float _rollAngle
Definition Sector:304
void setVertLobeAngle(float angle)
osg::Vec3 _direction
Definition Sector:303
float _cosHorizFadeAngle
Definition Sector:308
osg::Matrix _local_to_LP
Definition Sector:305
float _cosHorizAngle
Definition Sector:306
void setLobeRollAngle(float angle)
META_Object(osgSim, DirectionalSector)
float getLobeRollAngle() const
float _cosVertFadeAngle
Definition Sector:309
void setHorizLobeAngle(float angle)
ElevationRange()
Definition Sector:85
float getMaxElevation() const
float getMinElevation() const
float getFadeAngle() const
float _cosMaxFadeElevation
Definition Sector:123
float _cosMaxElevation
Definition Sector:122
float _cosMinFadeElevation
Definition Sector:121
float _cosMinElevation
Definition Sector:120
void setElevationRange(float minElevation, float maxElevation, float fadeAngle=0.0f)
float elevationSector(const osg::Vec3 &eyeLocal) const
Definition Sector:99
ElevationSector(float minElevation, float maxElevation, float fadeAngle=0.0f)
ElevationSector()
Definition Sector:155
ElevationSector(const ElevationSector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:159
virtual ~ElevationSector()
Definition Sector:171
META_Object(osgSim, ElevationSector)
virtual const char * className() const
Definition Sector:38
virtual bool isSameKindAs(const osg::Object *obj) const
Definition Sector:39
Sector()
Definition Sector:32
virtual const char * libraryName() const
Definition Sector:37
virtual ~Sector()
Definition Sector:45
Sector(const Sector ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Definition Sector:34
virtual float operator()(const osg::Vec3 &) const =0
@ SHALLOW_COPY
Definition CopyOp:47
Object()
Definition Object:69
value_type & z()
Definition Vec3f:82
value_type & y()
Definition Vec3f:81
value_type & x()
Definition Vec3f:80
value_type length() const
Definition Vec3f:176
Definition BlinkSequence:27
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
T square(T v)
Definition Math:107
#define OSGSIM_EXPORT
Definition osgSim/Export:38