53   TriangularPlate::TriangularPlate(
const NaifTriangle &plate, 
const int &plateId) : 
    55                                    m_plateId(plateId) { }
    57   TriangularPlate::~TriangularPlate() { }
    59   int TriangularPlate::id()
 const {
    64     return "TriangularPlate";
    82     double radius = qMax(qMax(vnorm_c(
m_plate[0]), vnorm_c(
m_plate[1])), 
    88     double radius = qMin(qMin(vnorm_c(
m_plate[0]), vnorm_c(
m_plate[1])), 
   107     double s1 = vnorm_c(&edge[0]);
   110     double s2 = vnorm_c(&edge[0]);
   113     double s3 = vnorm_c(&edge[0]);
   116     double S = (s1 + s2 + s3) / 2.0;
   117     double p_area = std::sqrt(S * (S - s1) * (S - s2) * (S - s3));
   142     ucrss_c(&edge1[0], &edge2[0], &norm[0]);
   148     double third(0.33333333333333331);
   173     double sepang = vsep_c(&norm[0], &raydir[0]);
   228     vminus_c(&obs[0], &raydir[0]);
   266     vminus_c(&obs[0], &raydir[0]);
   325     if ( (v < 0) || (v > 2) ) {
   326       QString msg = 
"Unable to get TriangularPlate vertex for index ["   327                     + 
toString(v) + 
"]. Valid index range is 0-2.";
   330     for ( 
int i = 0 ; i < 3 ; i++ ) {
   380     vsub_c(
m_plate[0], &obs[0], &e1[0]);
   381     vsub_c(
m_plate[1], &obs[0], &e2[0]);
   382     vsub_c(
m_plate[2], &obs[0], &e3[0]);
   386     vcrss_c(&e1[0], &e2[0], &tnorm12[0]);
   387     double tdot12 = vdot_c(&raydir[0], &tnorm12[0]);
   388     double en   = vdot_c(&e3[0], &tnorm12[0]);
   392     if ( qFuzzyCompare(en+1.0, 1.0) ) 
return (
false);
   395     if ( (en > 0.0) && (tdot12 < 0.0) ) 
return (
false);
   396     if ( (en < 0.0) && (tdot12 > 0.0) ) 
return (
false);
   401     vcrss_c(&e2[0], &e3[0], &tnorm23[0]);
   402     double tdot23 = vdot_c(&raydir[0], &tnorm23[0]);
   405     if ( (en > 0.0) && (tdot23 < 0.0) ) 
return (
false);
   406     if ( (en < 0.0) && (tdot23 > 0.0) ) 
return (
false);
   411     vcrss_c(&e3[0], &e1[0], &tnorm31[0]);
   412     double tdot31 = vdot_c(&raydir[0], &tnorm31[0]);
   415     if ( (en > 0.0) && (tdot31 < 0.0) ) 
return (
false);
   416     if ( (en < 0.0) && (tdot31 > 0.0) ) 
return (
false);
   420     double denom = tdot12 + tdot23 + tdot31;
   428     if ( qFuzzyCompare(denom+1.0, 1.0) ) 
return (
false);
   430     double scale = en / denom;
   432     vlcom_c(1.0, &obs[0], scale, &raydir[0], &xpt[0]);
 This class defines a body-fixed surface point. 
 
NaifVertex vertex(int v) const
Returns the vth point of the triangle. 
 
SurfacePoint * point(const Latitude &lat, const Longitude &lon) const
Determine the intercept point of a lat/lon location for the plate. 
 
Abstract interface to a TIN plate. 
 
NaifVector normal() const
Compute the surface normal of the plate. 
 
AbstractPlate * clone() const
Retrns a clone of the current plate. 
 
Namespace for the standard library. 
 
This class is designed to encapsulate the concept of a Latitude. 
 
The distance is being specified in kilometers. 
 
Distance minRadius() const
Gets the minimum radius. 
 
QString toString(bool boolToConvert)
Global function to convert a boolean to a string. 
 
int m_plateId
ID for this plate on the ShapeModel. 
 
Unless noted otherwise, the portions of Isis written by the USGS are public domain. 
 
This error is for when a programmer made an API call that was illegal. 
 
double kilometers() const
Get the distance in kilometers. 
 
Distance measurement, usually in meters. 
 
Angle separationAngle(const NaifVector &raydir) const
Computes the separation angle from the plate normal of a given vector. 
 
TNT::Array1D< SpiceDouble > NaifVector
Namespace to contain type definitions of NAIF DSK fundamentals. 
 
double area() const
Returns the area of the plate in km. 
 
This class is designed to encapsulate the concept of a Longitude. 
 
TNT::Array1D< SpiceDouble > NaifVertex
1-D Buffer[3] 
 
Distance maxRadius() const
Determines the maximum radius from all the vertices of the plate. 
 
#define _FILEINFO_
Macro for the filename and line number. 
 
QString name() const
Gets the name of this Plate type. 
 
Container for a intercept condition. 
 
Intercept * intercept(const NaifVertex &vertex, const NaifVector &raydir) const
Conpute the intercept point on a triangular plate. 
 
bool hasPoint(const Latitude &lat, const Longitude &lon) const
Determines the give lat/lon point intercept the triangular plate. 
 
bool hasIntercept(const NaifVertex &vertex, const NaifVector &raydir) const
Determines if a look direction from a point intercepts the plate. 
 
Defines an angle and provides unit conversions. 
 
Unless noted otherwise, the portions of Isis written by the USGS are public domain. 
 
void ToNaifArray(double naifOutput[3]) const
A naif array is a c-style array of size 3. 
 
void FromNaifArray(const double naifValues[3])
A naif array is a c-style array of size 3. 
 
Specification for an abstract triangular plate. 
 
Namespace for ISIS/Bullet specific routines. 
 
bool findPlateIntercept(const NaifVertex &obs, const NaifVector &raydir, NaifVertex &point) const
Determines of if given a vertex and look direction intercepts the plate. 
 
Radians are generally used in mathematical equations, 0-2*PI is one circle, however these are more di...
 
NaifTriangle m_plate
Tetrahedron, defined by the coordinate system origin and 3 vertices, used to represent the Triangular...
 
TNT::Array2D< SpiceDouble > NaifTriangle
3-D triangle[3][3] 
 
Unless noted otherwise, the portions of Isis written by the USGS are public domain.