osg::Matrix om(toOsg(q));
osg::Vec3 v(0,0,9.81);
gravity = om.preMult(v);
+ // NOTE: THIS WIND COMPUTATION DOESN'T SEEM TO AFFECT PARTICLES
const osg::Vec3& zUpWind = Particles::getWindVector();
- osg::Vec3 w(zUpWind.y(), zUpWind.x(), - zUpWind.z());
+ osg::Vec3 w(zUpWind.y(), zUpWind.x(), -zUpWind.z());
wind = om.preMult(w);
- //SG_LOG(SG_GENERAL, SG_ALERT, "wind vector:"<<w[0]<<","<<w[1]<<","<<w[2]<<"\n");
+ // SG_LOG(SG_GENERAL, SG_ALERT,
+ // "wind vector:" << w[0] << "," <<w[1] << "," << w[2]);
}
* magnitude is the velocity in meters per second.
*/
static void setWindVector(const osg::Vec3& wind) { _wind = wind; }
+ static void setWindFrom(const double from_deg, const double speed_kt) {
+ double map_rad = -from_deg * SG_DEGREES_TO_RADIANS;
+ double speed_mps = speed_kt * SG_KT_TO_MPS;
+ _wind[0] = cos(map_rad) * speed_mps;
+ _wind[1] = sin(map_rad) * speed_mps;
+ _wind[2] = 0.0;
+ }
static const osg::Vec3& getWindVector() { return _wind; }
protected:
float shooterExtraRange;