115 CEAngle::operator double()
124 CEAngle::operator double()
const
182 std::vector<double> hms_d =
HmsVect();
203 std::vector<int> HMS_i(4);
207 iauA2tf(9,
angle_, &pm, &HMS_i[0]);
210 std::vector<double> HMS_d(HMS_i.size());
212 HMS_d[0] = double(HMS_i[0]);
213 HMS_d[1] = double(HMS_i[1]);
214 HMS_d[2] = double(HMS_i[2]);
215 HMS_d[3] = double(HMS_i[3])/1.0e9;
217 if (pm ==
'-') HMS_d[0] *= -1;
274 std::vector<double> dms_d =
DmsVect();
296 std::vector<int> DMS_i(4, 0.0);
299 iauA2af(9,
angle_, &sign, &DMS_i[0]);
302 std::vector<double> DMS_d(4, 0.0);
303 DMS_d[0] = DMS_i[0] * (sign ==
'-' ? -1.0 : 1.0);
306 DMS_d[3] = DMS_i[3] * 1.0e-9;
384 "CEAngle::SetAngle(const double&, const CEAngleType&)",
385 "[ERROR] Method cannot be called with the provided CEAngleType");
407 SetAngle(std::stod(angle_str), angle_type);
414 std::vector<std::string> angle_vec;
415 angle_vec.reserve(4);
424 if (angle_vec.size() < 3) {
426 "CEAngle::SetAngle(const string&, const CEAngleType&, const char&)",
427 "Could not find specified delimiter: " + std::string(1,delim));
431 std::vector<double> angle_dbl;
432 for (
auto& ang : angle_vec) {
433 angle_dbl.push_back(std::stod(ang));
439 else if (delim == 0) {
442 std::vector<char> delim_list = {
':',
' '};
445 for (
char d : delim_list) {
447 if (std::string(angle_str).find(d) != std::string::npos) {
481 "CEAngle::SetAngle(const std::vector<double>&, const CEAngleType&)",
482 "[ERROR] Unknown angle type");
500 char pm = (angle[0] >= 0.0) ?
'+' :
'-';
504 double sec = (angle.size() == 4) ? angle[2]+angle[3] : angle[2];
505 int err = iauTf2a(pm, std::abs(angle[0]),
int(angle[1]), sec, &ang);
509 std::string msg =
"[ERROR] ";
513 msg +=
"Hour value \'" + std::to_string(angle[0]) +
"\' not in range 0-23";
517 msg +=
"Minutes value \'" + std::to_string(angle[1]) +
"\' not in range 0-59";
521 msg +=
"Seconds value \'" + std::to_string(sec) +
"\' not in range 0-59.999...";
545 char sign = (angle[0] < 0.0) ?
'-' :
'+';
549 double sec = (angle.size() == 4) ? angle[2]+angle[3] : angle[2];
552 int err = iauAf2a(sign,
int(angle[0]),
int(angle[1]), sec, &ang);
556 std::string msg =
"[ERROR] ";
560 msg +=
"Degree value \'" + std::to_string(angle[0]) +
"\' not in range 0-359";
564 msg +=
"Arcmin value \'" + std::to_string(angle[1]) +
"\' not in range 0-59";
568 msg +=
"Arcsec value \'" + std::to_string(sec) +
"\' not in range 0-59.999...";