2017-04-17 18:03:04 +02:00
|
|
|
#include <QFile>
|
2018-01-08 23:47:45 +01:00
|
|
|
#include <QDebug>
|
2017-04-03 20:29:35 +02:00
|
|
|
#include "ellipsoid.h"
|
|
|
|
|
2017-04-17 18:03:04 +02:00
|
|
|
QMap<int, Ellipsoid> Ellipsoid::_ellipsoids;
|
|
|
|
QString Ellipsoid::_errorString;
|
|
|
|
int Ellipsoid::_errorLine = 0;
|
2017-04-03 20:29:35 +02:00
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
Ellipsoid::Ellipsoid(int id)
|
2017-04-03 20:29:35 +02:00
|
|
|
{
|
2017-04-17 18:03:04 +02:00
|
|
|
QMap<int, Ellipsoid>::const_iterator it = _ellipsoids.find(id);
|
|
|
|
|
|
|
|
if (it == _ellipsoids.end())
|
2018-01-08 23:47:45 +01:00
|
|
|
*this = Ellipsoid();
|
|
|
|
else
|
|
|
|
*this = it.value();
|
2017-04-03 20:29:35 +02:00
|
|
|
}
|
|
|
|
|
2017-04-17 18:03:04 +02:00
|
|
|
bool Ellipsoid::loadList(const QString &path)
|
2017-04-03 20:29:35 +02:00
|
|
|
{
|
2017-04-17 18:03:04 +02:00
|
|
|
QFile file(path);
|
|
|
|
bool res;
|
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
|
2017-04-17 18:03:04 +02:00
|
|
|
if (!file.open(QFile::ReadOnly)) {
|
|
|
|
_errorString = qPrintable(file.errorString());
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
_errorLine = 1;
|
|
|
|
_errorString.clear();
|
|
|
|
|
|
|
|
while (!file.atEnd()) {
|
|
|
|
QByteArray line = file.readLine();
|
|
|
|
QList<QByteArray> list = line.split(',');
|
|
|
|
if (list.size() != 4) {
|
|
|
|
_errorString = "Format error";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
int id = list[1].trimmed().toInt(&res);
|
2017-04-17 18:03:04 +02:00
|
|
|
if (!res) {
|
|
|
|
_errorString = "Invalid ellipsoid id";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
double radius = list[2].trimmed().toDouble(&res);
|
|
|
|
if (!res) {
|
|
|
|
_errorString = "Invalid ellipsoid radius";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
double flattening = list[3].trimmed().toDouble(&res);
|
|
|
|
if (!res) {
|
|
|
|
_errorString = "Invalid ellipsoid flattening";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
Ellipsoid e(radius, 1.0/flattening);
|
|
|
|
_ellipsoids.insert(id, e);
|
|
|
|
|
|
|
|
_errorLine++;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
2017-04-03 20:29:35 +02:00
|
|
|
}
|
2018-01-08 23:47:45 +01:00
|
|
|
|
|
|
|
QDebug operator<<(QDebug dbg, const Ellipsoid &ellipsoid)
|
|
|
|
{
|
|
|
|
dbg.nospace() << "Ellipsoid(" << ellipsoid.radius() << ", "
|
|
|
|
<< 1.0 / ellipsoid.flattening() << ")";
|
|
|
|
return dbg.space();
|
|
|
|
}
|