diff --git a/simgear/math/SGRay.hxx b/simgear/math/SGRay.hxx index afd7b041..eef28cc4 100644 --- a/simgear/math/SGRay.hxx +++ b/simgear/math/SGRay.hxx @@ -47,6 +47,12 @@ public: SGVec3 getNormalizedDirection() const { return normalize(getDirection()); } + SGVec3 getClosestPointTo(const SGVec3& point) + { + SGVec3 u(getNormalizedDirection()), + v(point - _origin); + return (dot(u, v) * u) + _origin; + } private: SGVec3 _origin; SGVec3 _direction; diff --git a/simgear/scene/model/particles.cxx b/simgear/scene/model/particles.cxx index 08037900..acac7dfc 100644 --- a/simgear/scene/model/particles.cxx +++ b/simgear/scene/model/particles.cxx @@ -62,11 +62,13 @@ void GlobalParticleCallback::operator()(osg::Node* node, osg::NodeVisitor* nv) 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:"<