File indexing completed on 2024-04-21 14:46:45
0001 /* 0002 SPDX-FileCopyrightText: 2006 Jason Harris <kstarss@30doradus.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "skyline.h" 0008 0009 #include "kstarsdata.h" 0010 #include "ksnumbers.h" 0011 0012 #include <QDebug> 0013 0014 SkyLine::~SkyLine() 0015 { 0016 clear(); 0017 } 0018 0019 void SkyLine::clear() 0020 { 0021 qDeleteAll(m_pList); 0022 m_pList.clear(); 0023 } 0024 0025 void SkyLine::append(SkyPoint *p) 0026 { 0027 m_pList.append(new SkyPoint(*p)); 0028 } 0029 0030 void SkyLine::setPoint(int i, SkyPoint *p) 0031 { 0032 if (i < 0 || i >= m_pList.size()) 0033 { 0034 qDebug() << Q_FUNC_INFO << "SkyLine index error: no such point: " << i; 0035 return; 0036 } 0037 *m_pList[i] = *p; 0038 } 0039 0040 dms SkyLine::angularSize(int i) const 0041 { 0042 if (i < 0 || i + 1 >= m_pList.size()) 0043 { 0044 qDebug() << Q_FUNC_INFO << "SkyLine index error: no such segment: " << i; 0045 return dms(); 0046 } 0047 0048 SkyPoint *p1 = m_pList[i]; 0049 SkyPoint *p2 = m_pList[i + 1]; 0050 double dalpha = p1->ra().radians() - p2->ra().radians(); 0051 double ddelta = p1->dec().radians() - p2->dec().radians(); 0052 0053 double sa = sin(dalpha / 2.); 0054 double sd = sin(ddelta / 2.); 0055 0056 double hava = sa * sa; 0057 double havd = sd * sd; 0058 0059 double aux = havd + cos(p1->dec().radians()) * cos(p2->dec().radians()) * hava; 0060 0061 dms angDist; 0062 angDist.setRadians(2 * fabs(asin(sqrt(aux)))); 0063 0064 return angDist; 0065 } 0066 0067 void SkyLine::update(KStarsData *d, KSNumbers *num) 0068 { 0069 foreach (SkyPoint *p, m_pList) 0070 { 0071 if (num) 0072 p->updateCoords(num); 0073 p->EquatorialToHorizontal(d->lst(), d->geo()->lat()); 0074 } 0075 }