summaryrefslogtreecommitdiffstats
path: root/src/parameters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parameters.cpp')
-rw-r--r--src/parameters.cpp45
1 files changed, 36 insertions, 9 deletions
diff --git a/src/parameters.cpp b/src/parameters.cpp
index f08736b..fdcefd1 100644
--- a/src/parameters.cpp
+++ b/src/parameters.cpp
@@ -1,9 +1,32 @@
1// 凡无特殊说明的函数,全部返回弧度制
2
1#include "parameters.h" 3#include "parameters.h"
2#include "calendar.h" 4#include "calendar.h"
3#include <utility> 5#include <utility>
4using namespace std; 6using namespace std;
5 7
6//凡无特殊说明的函数,全部返回弧度制 8void radToDMS(const char *message, int lowerBound, int upperBound,
9 double radians) {
10 // Convert radians to degrees
11 double degrees = radians * 180.0 / M_PI;
12
13 while (degrees < lowerBound)
14 degrees += (upperBound - lowerBound);
15 while (degrees >= upperBound)
16 degrees -= (upperBound - lowerBound);
17
18 bool flag = degrees < 0;
19 if (flag)
20 degrees = -degrees;
21 // Calculate degrees, minutes, and seconds
22 int deg = static_cast<int>(degrees);
23 double min_sec = (degrees - deg) * 60.0;
24 int min = static_cast<int>(min_sec);
25 double sec = (min_sec - min) * 60.0;
26
27 // Output the result
28 printf("%s: %c%d°%d'%06.3f''\n", message, flag ? '-' : ' ', deg, min, sec);
29}
7 30
8// 计算地球日心黄经 31// 计算地球日心黄经
9double parameter::get_longitude(vector<double> l, double t) { 32double parameter::get_longitude(vector<double> l, double t) {
@@ -222,13 +245,17 @@ double parameter::moon_longitude(double t) {
222 return L; 245 return L;
223} 246}
224 247
225double parameter::getHourAngle(double julianKiloTime, double longitude, 248double parameter::getHourAngle(double julianKiloYear, double longitude,
226 double latitude, double alpha) { 249 double latitude, double alpha) {
227 double t = 100 * 365.25 * julianKiloTime; 250 double T = julianKiloYear * 10;
228 // 该时刻的格林尼治恒星时 251 double GST = 280.46061837 + 360.98564736629 * 36525 * T +
229 double GST = 6.697374558 + 2400.051336 * t + 0.000025862333 * t * t - 252 0.000387933 * T * T - T * T * T / 38710000;
230 0.000000001722222 * t * t * t; 253 GST *= M_PI / 180;
231 return GST * M_PI / 12 + longitude - alpha; 254 return GST + longitude - alpha; // 返回弧度制
232 // double GST = 241.654320 + 360.9856473840 * t * 1000 * 36525; 255}
233 // return GST * M_PI / 180 + longitude - alpha; 256
257double parameter::get_epsilon(double T) {
258 double epsilon = 23.439291111 - 0.01300416667 * T -
259 (1.638888889e-7) * T * T + (5.036111111e-7) * T * T * T;
260 return epsilon * M_PI / 180;
234} \ No newline at end of file 261} \ No newline at end of file