-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsunarc.cpp
More file actions
52 lines (41 loc) · 2.07 KB
/
sunarc.cpp
File metadata and controls
52 lines (41 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*******************************************************************************
Copyright(c) 2021 Joachim Janz. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
The full GNU General Public License is included in this distribution in the
file called LICENSE.
This library version is adapted from the sunwait executable licencsed under
the GPLv3 and written by Dan Risacher based on codes by Paul Schlyter and
with contributions of others mentioned in the original code which can be
found in https://github.com/risacher/sunwait
*******************************************************************************/
#include "sunarc.hpp"
// The user-specified offset reduces the diurnal arc, at sunrise AND sunset.
// But make sure dawn aways is before dusk. The offset can mess that up.
double SunArc::diurnalArcWithOffset (const double pOffset)
{
double arcWithOffset = diurnalArc - pOffset - pOffset;
if (arcWithOffset >= 24.0) return 24.0;
if (arcWithOffset <= 0.0) return 0.0;
return arcWithOffset;
}
// What time, in hours UTC, is the offset sunrise?
double SunArc::getOffsetRiseHourUTC (const double pOffsetHour)
{
return southHourUTC - diurnalArcWithOffset (pOffsetHour) / 2.0;
}
// What time, in hours UTC, is the offset sunset?
double SunArc::getOffsetSetHourUTC (const double pOffsetHour)
{
return southHourUTC + diurnalArcWithOffset (pOffsetHour) / 2.0;
}