|
Isis 3 Programmer Reference
|
1 #ifndef BulletShapeModel_h
2 #define BulletShapeModel_h
9 #include "ShapeModel.h"
16 #include "Intercept.h"
17 #include "BulletAllHitsRayCallback.h"
18 #include "BulletClosestRayCallback.h"
19 #include "BulletTargetShape.h"
20 #include "BulletWorldManager.h"
52 std::vector<double> lookDirection);
54 const std::vector<double> &observerPos,
55 const bool &checkOcclusion =
true);
57 const std::vector<double> &observerPos,
58 const bool &checkOcclusion =
true);
81 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
82 const std::vector<double> lookDirection);
88 QScopedPointer<BulletWorldManager> m_model;
96 btVector3
castLookDir(
const btVector3 &observer,
const btVector3 &lookdir)
const;
102 const btVector3 &sortPoint)
const;
104 const btVector3 &observer)
const;
void calculateSurfaceNormal()
compute the ellipsoid surface normal of the target
BulletShapeModel()
Default constructor that creates a shape model without any internal model.
BulletClosestRayCallback m_intercept
! Tolerance of occlusion check in kilometers.
This class is designed to encapsulate the concept of a Latitude.
virtual void clearSurfacePoint()
Clear the saved surface point and reset the saved intersection.
~BulletShapeModel()
Destructor.
bool isOccluded(const BulletClosestRayCallback &hit, const btVector3 &observer) const
Check if an intersection is occluded from an observer.
void updateShapeModel(const BulletClosestRayCallback &result)
Update shape model - carefully!!
btVector3 pointToVector(const SurfacePoint &point) const
Convert a surface point into a vector.
Bullet ray tracing callback to return all intersections along a ray's path.
void setLocalNormalFromIntercept()
Set the normal vector to the intercept point normal.
Container for cube-like labels.
btVector3 latlonToVector(const Latitude &lat, const Longitude &lon) const
Convert a pair of latitude and longitude values into a unit vector pointing from the origin of the bo...
Bullet World manager maintains a proper state for target bodies.
Distance measurement, usually in meters.
This class is designed to encapsulate the concept of a Longitude.
void setTolerance(const double &tolerance)
Sets the occlusion tolerance.
virtual bool isVisibleFrom(const std::vector< double > observerPos, const std::vector< double > lookDirection)
Check if the saved intercept is visible from a observer with a given look direction.
const BulletWorldManager & model() const
Returns a direct reference to the Bullet world that contains the target shape and can perform ray cas...
void calculateLocalNormal(QVector< double * > cornerNeighborPoints)
Compute the normal for a local region of surface points.
void calculateDefaultNormal()
Calculate the surface normal of the ellipsoid as the default.
btVector3 castLookDir(const btVector3 &observer, const btVector3 &lookdir) const
Compute the end point of a ray based on an observer and look direction.
QVector< double > ellipsoidNormal()
Compute the true surface normal vector of an ellipsoid.
Distance localRadius(const Latitude &lat, const Longitude &lon)
Compute the radius of the body at a lat/lon point.
bool isDEM() const
Indicates that this shape model is not from a DEM.
Define shapes and provide utilities for Isis targets.
SurfacePoint makeSurfacePoint(const btVector3 &point) const
Convert a vector into a surface point.
Bullet Target Shape for planetary bodies.
Shape model that uses the Bullet library to perform ray tracing.
double m_tolerance
! Bullet collision world that contains the representation of the body.
bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)
This method computes a DEM intercept point given an observer location and look direction using the Bu...
btScalar maxDistance() const
! The results of the last ray cast.
This is free and unencumbered software released into the public domain.
QVector< BulletClosestRayCallback > sortHits(const BulletAllHitsRayCallback &hits, const btVector3 &sortPoint) const
Sort the hits in an AllHitsRayCallback based on distance to a point.
Bullet ray tracing callback for closest hit on target surface.
double getTolerance() const
Returns the occlusion tolerance in kilometers.
This class is used to create and store valid Isis targets.
virtual void setSurfacePoint(const SurfacePoint &surfacePoint)
Set the internal surface point.
This class defines a body-fixed surface point.
This is free and unencumbered software released into the public domain.