|
Isis 3 Programmer Reference
|
1 #ifndef EmbreeShapeModel_h
2 #define EmbreeShapeModel_h
9 #include "ShapeModel.h"
13 #include <embree2/rtcore.h>
19 #include "EmbreeTargetShape.h"
20 #include "EmbreeTargetManager.h"
21 #include "SurfacePoint.h"
51 std::vector<double> lookDirection);
53 const std::vector<double> &observerPos,
54 const bool &backCheck =
true);
56 const std::vector<double> &observerPos,
57 const bool &backCheck =
true);
61 virtual bool isDEM()
const;
78 virtual bool isVisibleFrom(
const std::vector<double> observerPos,
79 const std::vector<double> lookDirection);
double getTolerance() const
Get the tolerance used when checking if the stored surface point is visible.
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...
This class is designed to encapsulate the concept of a Latitude.
virtual bool isDEM() const
Indicates that this shape model is not from a DEM.
General purpose Embree ray tracing model.
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...
Container for cube-like labels.
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...
QVector< double > ellipsoidNormal()
Compute the true surface normal vector of an ellipsoid.
EmbreeTargetManager * m_targetManager
!< The target body and Embree objects for intersection.
Distance measurement, usually in meters.
This class is designed to encapsulate the concept of a Longitude.
virtual Distance localRadius(const Latitude &lat, const Longitude &lon)
Determine radius at a given lat/lon grid point.
virtual void calculateSurfaceNormal()
Return the surface normal of the ellipsoid.
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
Class for managing the construction and destruction of EmbreeTargetShapes.
virtual void calculateDefaultNormal()
Return the surface normal of the ellipsoid as the default.
Struct for capturing multiple intersections when using embree::rtcintersectscene.
virtual double incidenceAngle(const std::vector< double > &uB)
Computes and returns incidence angle, in degrees, given the illuminator position.
virtual ~EmbreeShapeModel()
Destructor that notifies the target shape manager that the target shape is no longer in use.
QVector< RayHitInformation > sortHits(RTCMultiHitRay &ray, LinearAlgebra::Vector &observer)
Sort all intersections by a ray based on distance to a point.
void updateIntersection(const RayHitInformation hitInfo)
Update the ShapeModel given an intersection and normal.
virtual void clearSurfacePoint()
Flag that the ShapeModel does not have a surface point or normal.
double m_tolerance
!< This manages EmbreeTargetShapes to allow for sharing of them between EmbreeShapeModels and deletes...
virtual void calculateLocalNormal(QVector< double * > cornerNeighborPoints)
Compute the normal for a local region of surface points.
Embree Target Shape for planetary bodies.
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.
Define shapes and provide utilities for Isis targets.
EmbreeShapeModel()
Default constructor sets type to a TIN.
void setTolerance(const double &tolerance)
Set the tolerance used when checking if the stored surface point is visible.
This is free and unencumbered software released into the public domain.
QString m_shapeFile
!< Tolerance for checking visibility.
This class is used to create and store valid Isis targets.
This class defines a body-fixed surface point.
This is free and unencumbered software released into the public domain.