40 #if defined(MAKE_THREAD_SAFE)
41 #include <QMutexLocker>
43 #include <QScopedPointer>
45 #include <dsk_proto.h>
68 NaifDskPlateModel::NaifDskPlateModel() : m_dsk(0) { }
76 QString mess =
"Could not open DSK file " + dskfile;
83 NaifDskPlateModel::~NaifDskPlateModel() { }
89 return ( !
m_dsk.isNull() );
112 return (
m_dsk->m_plates );
120 return (
m_dsk->m_vertices );
149 verify ( lat.
isValid(),
"Latitude parameter invalid in NaifDskPlateMode::point()" );
150 verify ( lon.
isValid(),
"Longitude parameter invalid in NaifDskPlateMode::point()" );
156 SpiceDouble lonlat[2];
161 SpiceInt plateId(-1);
163 #if defined(MAKE_THREAD_SAFE)
164 QMutexLocker lock(&
m_dsk->m_mutex);
167 llgrid_pl02(
m_dsk->m_handle, &
m_dsk->m_dladsc, npoints,
168 (ConstSpiceDouble (*)[2]) lonlat,
169 (SpiceDouble (*)[3]) &spoint[0], &plateId);
174 QString mess =
"Plateid = " + QString::number(plateId) +
" is invalid";
238 if ( !
isValid() )
return (
false);
239 return ( (plateid >= 1) && (plateid <= m_dsk->m_plates) );
266 verify(
validate(vertex),
"Invalid/bad dimensions on intercept source point");
267 verify(
validate(raydir),
"Invalid/bad dimensions on ray direction vector");
271 "Invalid point source data to determine intercept",
283 #if defined(MAKE_THREAD_SAFE)
284 QMutexLocker lock(&
m_dsk->m_mutex);
288 dskx02_c(
m_dsk->m_handle, &
m_dsk->m_dladsc, &vertex[0], &raydir[0],
289 &plateid, &xpt[0], &found);
292 if ( !found )
return (0);
321 QString mess =
"Plateid = " + QString::number(plateid) +
" is invalid";
329 #if defined(MAKE_THREAD_SAFE)
330 QMutexLocker lock(&
m_dsk->m_mutex);
334 dskp02_c(
m_dsk->m_handle, &
m_dsk->m_dladsc, plateid, 1, &nplates,
335 ( SpiceInt(*)[3] )(iplate));
341 for (
int i = 0 ; i < 3 ; i++) {
342 dskv02_c(
m_dsk->m_handle, &
m_dsk->m_dladsc, iplate[i], 1, &n,
343 ( SpiceDouble(*)[3] )(plate[i]));
373 if ( !dskFile.fileExists() ) {
374 QString mess =
"NAIF DSK file [" + dskfile +
"] does not exist.";
380 dsk->m_dskfile = dskfile;
382 dasopr_c( dskFile.expanded().toAscii().data(), &dsk->m_handle );
387 dlabfs_c( dsk->m_handle, &dsk->m_dladsc, &found );
390 QString mess =
"No segments found in DSK file " + dskfile ;
395 dskgd_c( dsk->m_handle, &dsk->m_dladsc, &dsk->m_dskdsc );
398 dskz02_c( dsk->m_handle, &dsk->m_dladsc, &dsk->m_vertices,
403 return ( dsk.take() );
412 if ( (
Throw == action ) && ( !test ) ) {
432 NaifDskPlateModel::NaifDskDescriptor::NaifDskDescriptor() : m_dskfile(), m_handle(-1),
433 m_dladsc(), m_dskdsc(), m_plates(0),
434 m_vertices(0), m_mutex() {
438 NaifDskPlateModel::NaifDskDescriptor::~NaifDskDescriptor() {