Merge branch 'mathias/math'
This commit is contained in:
commit
054b1bb46c
3 changed files with 4 additions and 50 deletions
|
@ -39,6 +39,7 @@
|
||||||
#include <simgear/misc/sgstream.hxx>
|
#include <simgear/misc/sgstream.hxx>
|
||||||
#include <simgear/misc/strutils.hxx>
|
#include <simgear/misc/strutils.hxx>
|
||||||
#include <simgear/structure/exception.hxx>
|
#include <simgear/structure/exception.hxx>
|
||||||
|
#include <simgear/bucket/newbucket.hxx>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,10 @@
|
||||||
#include <boost/algorithm/string/case_conv.hpp>
|
#include <boost/algorithm/string/case_conv.hpp>
|
||||||
#include <boost/algorithm/string/predicate.hpp>
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
|
|
||||||
#include <simgear/math/sg_geodesy.hxx>
|
|
||||||
#include <simgear/timing/timestamp.hxx>
|
#include <simgear/timing/timestamp.hxx>
|
||||||
#include <simgear/debug/logstream.hxx>
|
#include <simgear/debug/logstream.hxx>
|
||||||
#include <simgear/structure/exception.hxx>
|
#include <simgear/structure/exception.hxx>
|
||||||
#include <simgear/math/SGBox.hxx>
|
#include <simgear/math/SGGeometry.hxx>
|
||||||
|
|
||||||
#include "positioned.hxx"
|
#include "positioned.hxx"
|
||||||
|
|
||||||
|
@ -55,27 +54,6 @@ namespace Octree
|
||||||
const double LEAF_SIZE = SG_NM_TO_METER * 8.0;
|
const double LEAF_SIZE = SG_NM_TO_METER * 8.0;
|
||||||
const double LEAF_SIZE_SQR = LEAF_SIZE * LEAF_SIZE;
|
const double LEAF_SIZE_SQR = LEAF_SIZE * LEAF_SIZE;
|
||||||
|
|
||||||
typedef SGBox<double> SGBoxd;
|
|
||||||
|
|
||||||
template<typename T1, typename T2>
|
|
||||||
inline bool
|
|
||||||
intersects(const SGVec3<T1>& v, const SGBox<T2>& box)
|
|
||||||
{
|
|
||||||
if (v[0] < box.getMin()[0])
|
|
||||||
return false;
|
|
||||||
if (box.getMax()[0] < v[0])
|
|
||||||
return false;
|
|
||||||
if (v[1] < box.getMin()[1])
|
|
||||||
return false;
|
|
||||||
if (box.getMax()[1] < v[1])
|
|
||||||
return false;
|
|
||||||
if (v[2] < box.getMin()[2])
|
|
||||||
return false;
|
|
||||||
if (box.getMax()[2] < v[2])
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decorate an object with a double value, and use that value to order
|
* Decorate an object with a double value, and use that value to order
|
||||||
* items, for the purpoises of the STL algorithms
|
* items, for the purpoises of the STL algorithms
|
||||||
|
@ -156,28 +134,11 @@ public:
|
||||||
|
|
||||||
double distSqrToNearest(const SGVec3d& aPos) const
|
double distSqrToNearest(const SGVec3d& aPos) const
|
||||||
{
|
{
|
||||||
return distSqr(aPos, getClosestPoint(aPos));
|
return distSqr(aPos, _box.getClosestPoint(aPos));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void insert(FGPositioned* aP) = 0;
|
virtual void insert(FGPositioned* aP) = 0;
|
||||||
|
|
||||||
SGVec3d getClosestPoint(const SGVec3d& aPos) const
|
|
||||||
{
|
|
||||||
SGVec3d r;
|
|
||||||
|
|
||||||
for (unsigned int i=0;i<3; ++i) {
|
|
||||||
if (aPos[i] < _box.getMin()[i]) {
|
|
||||||
r[i] = _box.getMin()[i];
|
|
||||||
} else if (aPos[i] > _box.getMax()[i]) {
|
|
||||||
r[i] = _box.getMax()[i];
|
|
||||||
} else {
|
|
||||||
r[i] = aPos[i];
|
|
||||||
}
|
|
||||||
} // of axis iteration
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void visit(const SGVec3d& aPos, double aCutoff,
|
virtual void visit(const SGVec3d& aPos, double aCutoff,
|
||||||
FGPositioned::Filter* aFilter,
|
FGPositioned::Filter* aFilter,
|
||||||
FindNearestResults& aResults, FindNearestPQueue&) = 0;
|
FindNearestResults& aResults, FindNearestPQueue&) = 0;
|
||||||
|
@ -728,12 +689,6 @@ FGPositioned::createUserWaypoint(const std::string& aIdent, const SGGeod& aPos)
|
||||||
return new FGPositioned(WAYPOINT, aIdent, aPos, true);
|
return new FGPositioned(WAYPOINT, aIdent, aPos, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
SGBucket
|
|
||||||
FGPositioned::bucket() const
|
|
||||||
{
|
|
||||||
return SGBucket(mPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
SGVec3d
|
SGVec3d
|
||||||
FGPositioned::cart() const
|
FGPositioned::cart() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <simgear/structure/SGSharedPtr.hxx>
|
#include <simgear/structure/SGSharedPtr.hxx>
|
||||||
#include <simgear/bucket/newbucket.hxx>
|
#include <simgear/math/SGMath.hxx>
|
||||||
|
|
||||||
class FGPositioned;
|
class FGPositioned;
|
||||||
|
|
||||||
|
@ -88,8 +88,6 @@ public:
|
||||||
*/
|
*/
|
||||||
SGVec3d cart() const;
|
SGVec3d cart() const;
|
||||||
|
|
||||||
SGBucket bucket() const;
|
|
||||||
|
|
||||||
double latitude() const
|
double latitude() const
|
||||||
{ return mPosition.getLatitudeDeg(); }
|
{ return mPosition.getLatitudeDeg(); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue