1 #ifndef EmbreeShapeModel_h 2 #define EmbreeShapeModel_h 29 #include <embree2/rtcore.h> 67 std::vector<double> lookDirection);
69 const std::vector<double> &observerPos,
70 const bool &backCheck =
true);
72 const std::vector<double> &observerPos,
73 const bool &backCheck =
true);
77 virtual bool isDEM()
const;
94 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
95 const std::vector<double> lookDirection);
This class defines a body-fixed surface point.
virtual Distance localRadius(const Latitude &lat, const Longitude &lon)
Determine radius at a given lat/lon grid point.
virtual void clearSurfacePoint()
Flag that the ShapeModel does not have a surface point or normal.
QVector< RayHitInformation > sortHits(RTCMultiHitRay &ray, LinearAlgebra::Vector &observer)
Sort all intersections by a ray based on distance to a point.
virtual void calculateSurfaceNormal()
Return the surface normal of the ellipsoid.
RTCMultiHitRay pointToRay(const SurfacePoint &point) const
Given a surface point, create a ray that goes from the origin of the target to the surface point...
virtual void calculateLocalNormal(QVector< double *> cornerNeighborPoints)
Compute the normal for a local region of surface points.
virtual ~EmbreeShapeModel()
Destructor that notifies the target shape manager that the target shape is no longer in use...
double m_tolerance
!< This manages EmbreeTargetShapes to allow for sharing of them between EmbreeShapeModels and deletes...
void setTolerance(const double &tolerance)
Set the tolerance used when checking if the stored surface point is visible.
Struct for capturing multiple intersections when using embree::rtcintersectscene. ...
QString m_shapeFile
!< Tolerance for checking visibility.
This class is designed to encapsulate the concept of a Latitude.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
EmbreeShapeModel()
Default constructor sets type to a TIN.
Distance measurement, usually in meters.
double getTolerance() const
Get the tolerance used when checking if the stored surface point is visible.
Class for managing the construction and destruction of EmbreeTargetShapes.
This class is designed to encapsulate the concept of a Longitude.
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
RTCMultiHitRay latlonToRay(const Latitude &lat, const Longitude &lon) const
Given a latitude and longitude, create a ray that goes from the origin of the target through that lat...
virtual bool intersectSurface(std::vector< double > observerPos, std::vector< double > lookDirection)
This method computes an intercept point given an observer location and look direction using the Embre...
Embree Target Shape for planetary bodies.
Container for cube-like labels.
This class is used to create and store valid Isis3 targets.
Define shapes and provide utilities for Isis3 targets.
virtual bool isDEM() const
Indicates that this shape model is not from a DEM.
virtual bool isVisibleFrom(const std::vector< double > observerPos, const std::vector< double > lookDirection)
Check if the current internalized surface point is visible from an observer position and look directi...
Namespace for ISIS/Bullet specific routines.
virtual void calculateDefaultNormal()
Return the surface normal of the ellipsoid as the default.
QVector< double > ellipsoidNormal()
Compute the true surface normal vector of an ellipsoid.
virtual double incidenceAngle(const std::vector< double > &uB)
Computes and returns incidence angle, in degrees, given the illuminator position. ...
EmbreeTargetManager * m_targetManager
!< The target body and Embree objects for intersection.
void updateIntersection(const RayHitInformation hitInfo)
Update the ShapeModel given an intersection and normal.
General purpose Embree ray tracing model.