skyscapeR is an open source R package for data reduction, visualization and analysis in skyscape archaeology, archaeoastronomy and cultural astronomy. It is intended to be a fully-fledged, transparent and peer-reviewed package offering a robust set of quantitative methods while retaining simplicity of use.
It includes functions to transform horizontal (Az/Alt) to equatorial (Dec/RA) coordinates, create or download horizon profiles, plot them and overlay them with visible paths of common celestial objects/events for prehistoric or historic periods, as well as functions to test statistical significance and estimate stellar visibility and seasonality. It also includes the ability to easily construct azimuth polar plots and declination curvigrams. Future versions will add more data reduction and likelihood-based model selection facilities, as well as an easy-to-use Graphical User Interface.
Like all vignettes this is neither intended for those inexperienced in R nor a fully-fledged and detailed manual for skyscapeR. Neither will it be understandable to those unfamiliar with the terminology and methodologies of cultural astronomy, archaeoastronomy or skyscape archaeology.
This document is an entry-point to the package’s main functions and
sets out workflows of what you can do with it. More detail, as well as
more functions, can be found in the package’s manual pages. This is,
therefore, not meant to be an exhaustive description of what’s
available, but merely a simple introduction to skyscapeR
most important features.
If you are new to R then I recommend the online free short course Data Carpentry’s Data Analysis and Visualization in R for Ecologists. For those who are already familiar with R, I apologize in advance for any patronizing bits (such as the next two sections). With some basic R skills, guidance from this vignette and autonomous exploration of the package’s manual pages, anyone with prior training in skyscape archaeology can become a master skyscapeR.
The package requires that the latest version of R is installed first. See the R Project website for details. Also suggested is the installation of RStudio. With R installed, you can install the latest skyscapeR release directly from CRAN by doing:
install.packages('skyscapeR', repos='https://cloud.r-project.org')
This will install the package itself along with any dependencies.
Upon successful completion you should see a line saying
* DONE (skyscapeR)
. If this doesn’t happen then there
should be an error message explaining what went wrong.
If you rather install the latest development version (often unstable) you can do so directly from its GitHub repository by running:
install.packages('devtools', repos='https://cloud.r-project.org')
devtools::install_github('f-silva-archaeo/skyscapeR')
If you already have package devtools
installed you can
skip the first line above. At the end, you should see the same
successful completion line.
Also make sure to install the swephRdata
package as
follows:
install.packages("swephRdata", repos = "https://rstub.github.io/drat/", type = "source")
Every time you want to use the package it needs to be loaded. For this you need to type:
library(skyscapeR)
#> Loading required package: swephR
#> Replaced swephR stellar ephemeris file with skyscapeR version.
The output should be the same as seen above. If there are any errors or warnings they need to be checked and corrected as needed.
skyscapeR
uses the swephR
package for
ephemeris calculations. Users are recommended to familiarize themselves
with the Swiss
Ephemeris, as well as the swephR
package, before-hand.
In particular, note that Swiss Ephemeris is only accurate in the time
range 13,201 BC to 17,191 AD.
skyscapeR
implements some standards to make the
astronomical modelling easier to handle and use. This section introduces
those standards which are necessary prior to using its many
functions.
Locations and Georeferences Most skyscapeR
functions accept one or multiple locations to be entered in one of two
different formats: * as a numeric array including the latitude,
longitude and elevation of the site, in this order
(e.g. loc = c(51.17889, 1.826111, 10)
); * as a
skyscapeR.horizon
object, created using
createHor
, createHWT
or
downloadHWT
functions.
The latter, in particular, are especially useful, and often
necessary, in order to take full advantage of the analytical
capabilities of skyscapeR
(see sec. 2.4 below for more
detail).
Date, Time and Calendars Dates should be entered in the
following format YYYY/MM/DD
(e.g. 2021/10/25
).
The brackets and order are non-negotiable, i.e. if one inputs
2021-10-25
or 2021/25/10
instead (or any other
variation) the code will return an error.
If one needs to specify a date and time this should use format
YYYY/MM/DD HH:MM:SS
(e.g. ‘2021/10/25 14:15:00’). Seconds
can often be omitted.
Years and Epochs skyscapeR
uses the same epoch
standard as swephR
, in that the BC/AD western numbering is
mapped unto, respectively negative/positive numbers. However, it uses
the astronomical variation (found also in Stellarium) wherein year 0
exists. Therefore, one should keep in mind the following conversion
table: * skyscapeR
year 100 = 100 AD *
skyscapeR
year 99 = 99 AD * skyscapeR
year 1 =
1 AD * skyscapeR
year 0 = 1 BC * skyscapeR
year -1 = 2 BC * skyscapeR
year -99 = 100 BC *
skyscapeR
year -100 = 101 BC
If in doubt, use function BC.AD
to check what calendar
year corresponds to what year number.
BC.AD(1)
#> [1] "1 AD"
BC.AD(0)
#> [1] "1 BC"
BC.AD(-1)
#> [1] "2 BC"
BC.AD(-99)
#> [1] "100 BC"
BC.AD(-100)
#> [1] "101 BC"
Global Variables Most skyscapeR
functions let
you control parameters via input However, some parameters may be more
conveniently set globally, i.e. to work for all subsequent function
calls. These include: * timezone (e.g. ‘GMT’ or ‘Europe/London’). There
is no default to force user to enter one; * calendar (e.g. ‘G’ for
Gregorian, ‘J’ for Julian). Default is Gregorian; * refraction (whether
to take atmospheric refraction into account in astronomical
computations). Default is TRUE; * atm (atmospheric pressure for
refraction computation). Default is 1013.25 mbar; * temp (atmospheric
temperature for refraction computation). Default is 15 0b0; * dec
(whether functions should output geocentric or topocentric declination,
when location is available). Default is “topo”.
They can be set through the skyscapeR.vars
function as
follows:
skyscapeR.vars() # shows current values
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "Gregorian"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] TRUE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "Europe/London"
skyscapeR.vars(timezone='CET') # to set timezone to Central European Time
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "Gregorian"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] TRUE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "CET"
skyscapeR.vars(calendar='J') # to set calendar to Julian
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "J"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] TRUE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "CET"
skyscapeR.vars(refraction=F) # to switch refraction calculations off
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "J"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] FALSE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "CET"
We will now reset to the defaults for the remainder of this vignette.
skyscapeR.vars(timezone='GMT') # to set timezone to Central European Time
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "J"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] FALSE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "GMT"
skyscapeR.vars(calendar='G') # to set calendar to Julian
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "G"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] FALSE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "GMT"
skyscapeR.vars(refraction=T) # to switch refraction calculations off
#> $atm
#> [1] 1013.25
#>
#> $calendar
#> [1] "G"
#>
#> $cur.year
#> [1] 2024
#>
#> $dec
#> [1] "topo"
#>
#> $refraction
#> [1] TRUE
#>
#> $stars
#> [1] "skyscapeR"
#>
#> $temp
#> [1] 15
#>
#> $timezone
#> [1] "GMT"
Basic functionality is achieved using az2dec
to convert
from horizontal (az/alt) to equatorial (dec) coordinates.
On the other hand, the declination of key celestial targets for a given time can be easily obtained as follows:
# geocentric declination for june solstice at 2501 BC
jS(-2500)
#> No location given, therefore outputting geocentric declination.
#> [1] 23.97629
# topocentric declination for december solstice at 2501 BC from Stonehenge
dS(-2500, loc=c(51.17889,1.826111,10))
#> [1] -23.97803
# geocentric declination for northern minor lunar extreme at 3001 BC
nmnLX(-3000)
#> No location given, therefore outputting geocentric declination.
#> [1] 18.7336
# topocentric declination for northern minor lunar extreme at 3001 BC from Stonehenge
sMjLX(-3000, loc=c(51.17889,1.826111,10))
#> [1] -30.05531
# zenith sun for Teotihuacan
zenith(loc=c(19.6925,98.84389,200))
#> [1] 19.69175
When a horizon profile is given (see below), the declination of the
spatial equinox can also be calculated using
spatial.equinox
.
skyscapeR
includes function mag.dec
which
uses IGRF 12 to estimate the magnetic declination at a location and
date:
This functionality is automated in reduct.compass
which
automates the data reduction process. Essentially, given a set of
locations, magnetic azimuths, dates or previously obtained magnetic
declination values, and horizon altitudes (if horizon profile is not
given) it will perform all the background calculations to convert the
magnetic azimuths to true azimuths, followed by conversion to
declination. It outputs a neat table of results.
loc <- c(35,-8,100)
mag.az <- c(89.5, 105, 109.5)
data <- reduct.compass(loc, mag.az, "2016/04/02", alt=c(1,2,0))
#> Altitude values found. Calculating declination...
data
#> Latitude Longitude Magnetic.Azimuth Date Mag.Dec True.Azimuth
#> 1 35 -8 89.5 2016/04/02 -2.085161 87.415
#> 2 35 -8 105.0 2016/04/02 -2.085161 102.915
#> 3 35 -8 109.5 2016/04/02 -2.085161 107.415
#> Altitude Declination
#> 1 1 2.486
#> 2 2 -9.542
#> 3 0 -14.471
For theodolite measurements, using the sun-sight technique, function
sunAz
can be used to obtain the azimuth of the sun at a
given time and location. For ease of use, the timezone can be given as
either a known acronym (eg. GMT, CET) or as continent and
capital/country (eg Europe/London).
Like with the compass measurements, this is automated in the
reduct.theodolite
function which takes in the location,
theodolite measurements, date and time of fieldwork, measured azimuth of
the sun and, if necessary, altitude in order to calculate declination.
Note the use of function ten
to quickly convert degree
arcmin and arcsec measurements into decimal point values.
lat <- ten(35,50,37.8) # latitude
lon <- ten(14,34,6.4) # longitude
elev <- 100
az <- c(ten(298,24,10), ten(302,20,40))
alt <- c(2, 5)
az.sun <- ten(327,29,50)
date <- "2016/02/20"
time <- "11:07:17"
data <- reduct.theodolite(c(lat,lon,elev), az, date , time, tz= "Europe/Malta", az.sun, alt=alt)
#> Altitude values found. Calculating declination...
data
#> Latitude Longitude Uncorrected.Azimuth Date.Time Sun.Az
#> 1 35.84383 14.56844 298.4028 2016-02-20 11:07:17 157.7829
#> 2 35.84383 14.56844 302.3444 2016-02-20 11:07:17 157.7829
#> True.Azimuth Altitude Declination
#> 1 128.6885 2 -29.26742
#> 2 132.6301 5 -29.84227
Horizon profiles can be created from field measurements using
createHor
.
az <- c(0,90,180,270,360)
alt <- c(0,5,5,0,0)
loc <- c(51.17889,1.826111,10)
hor <- createHor(az, alt, alt.unc=0.5, loc=loc, name='Stonehenge Test')
plot(hor)
Notice that the alt.unc
parameter stands for uncertainty in
measured altitude and be either a single value that applies to all
azimuths or a vector of the same size as az
and
alt
. This is an important parameter for the Probabilistic
Approach (see sec. 4 below).
Azimuths and horizon altitudes can be obtained from other sources
(such as Andrew Smith’s Horizon) and transformed into a
skyscapeR.horizon
object using createHor
as
above. Alternatively, skyscapeR
interfaces with
HeyWhatsThat to automatically create a horizon panorama. This
is done using functions createHWT
(to create a new
panorama) or downloadHWT
(to download a previously created
panorama).
Once azimuths are given (and presumably corrected) one can visualize
them using plotAzimuth
.
To visualize these against the common solar and lunar targets
function sky.objects
should be used to choose the celestial
targets and how one wants to visualize them. This can be done as
follows:
Although one can also produce a plot of only the celestial targets:
tt <- sky.objects(c('solar extremes', 'lunar extremes'), epoch=-2000, loc=c(35,-8), col=c('red','blue'))
plotAzimuth(obj=tt)
Measurement color and width can be controlled using parameters
col
and lwd
.
Density plots, such as curvigrams and kernel density estimates, can
be obtained using the base R density
function. This works
for both azimuth and declination data. However, do note that these
differ from the more accurate SPD plots that are covered in the next
section.
az <- c(120, 100, 93, 97, 88, 115, 112, 67)
hor <- createHWT(51.17889, 1.826111, name='Stonehenge')
#> Sending request to HeyWhatsThat servers...Done.
#> Waiting for computation to finish...Done.
#> Downloading data...Done.
dec <- az2dec(az, loc=hor)
kde <- density(dec)
plot(kde)
The kernel shape and bandwidth (uncertainty) can also be controlled
as follows. For more details check the manual pages for
density
.
The probability of finding r
structures out of
n
orientated to a band of the horizon of probability
p
can be calculated using the bernoulli.trial
function. In the above example there are 4 structures (out of 8
measured) which are orientated around east, spanning 12 degrees of
azimuth. The probability p
of that horizon band is
12/180
as there are 12 degrees out of 180 degrees (since
both directions are possible). The probability of finding this (or an
even more extreme situation) by chance is:
The obtained p-value is well below 0.05 making this statistically significant.
The discrete approach does not take measurement uncertainty (fully)
seriously. To do this, Silva (2020) argued that one must recognize that
any measurement of azimuth is a probability distribution. This can be
done using az.pdf
, where pdf
stands for
probability distribution function. Note that uncertainties must be
given, either a single value that applies to all measurements, or one
value per measurement, as below.
az <- c(120, 100, 93, 97, 88, 115, 112, 67) # same azimuths as before
unc <- c(2, 3, 2, 2.5, 1.5, 3, 4, 3.5)
az.prob <- az.pdf(az=az, unc=unc)
#> Normal probability distribution(s) chosen
#> | | | 0% | |========= | 12% | |================== | 25% | |========================== | 38% | |=================================== | 50% | |============================================ | 62% | |==================================================== | 75% | |============================================================= | 88% | |======================================================================| 100%
#> Done.
plot(az.prob)
So far, this is not so different from what one would obtain with the discrete approach. It is the transformation to declination that needs to be handled differently and, preferentially, using full horizon profiles.
dec.prob <- coordtrans(az.prob, hor) # same horizon as before
#> Single horizon profile found. Using it for all measurements.
#> | | | 0% | |========= | 12% | |================== | 25% | |========================== | 38% | |=================================== | 50% | |============================================ | 62% | |==================================================== | 75% | |============================================================= | 88% | |======================================================================| 100%
#> Done.
plot(dec.prob)
To aggregate and visualize the entire dataset together, one can aggregate the individual pdf’s into a Summed Probability Density (SPD for short). Notice the differences with the KDE’s produced before.
This approach also opens up the possibility of doing more formal
statistical significance tests that take measurement uncertainty into
account, unlike bernoulli.trial
. This method, developed in
Silva (2020), explicitly compares the empirical SPD with SPD created
from orientations taken at random. It then calculates a p-value from
this.
# on azimuth data
st.az <- randomTest(az.prob, nsims=10, ncores=1)
#> Running statistical significance test on azimuth.
#> Running 10 simulations on a single processing core.
#> | | | 0% | |======= | 10% | |============== | 20% | |===================== | 30% | |============================ | 40% | |=================================== | 50% | |========================================== | 60% | |================================================= | 70% | |======================================================== | 80% | |=============================================================== | 90% | |======================================================================| 100%
#> Performing a 2-tailed test at the 95% significance level.
plot(st.az)
# on declination data
st.dec <- randomTest(dec.prob, nsims=10, ncores=1)
#> Running statistical significance test on declination.
#> Running 10 simulations on a single processing core.
#> | | | 0% | |======= | 10% | |============== | 20% | |===================== | 30% | |============================ | 40% | |=================================== | 50% | |========================================== | 60% | |================================================= | 70% | |======================================================== | 80% | |=============================================================== | 90% | |======================================================================| 100%
#> Performing a 2-tailed test at the 95% significance level.
plot(st.dec)
The regions of significance can be highlighted when plotting, and their values show as follows.
skyscapeR
includes many other helpful functions for
analysis of orientations and their potential skyscape relations. Below
they are mentioned only briefly, explaining their purpose. Remember to
explore the full range of their parameters by using the help facility
?
.
Once one has a declination range of interest (for example, from a
statistical test), it becomes essential to identify what celestial
objects would have matched those values. Function
findTargets
makes this an easy job. Given a specific time
range, it automatically looks for solstices, lunar extremes and stars
upto a given magnitude that matched the declination range. For example,
for declination values between -320b0 and -350b0 between 2500 BC and
1750 BC we get:
findTargets(c(-25,-18), c(-2499,-1749))
#> No location given, therefore outputting geocentric declination.
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> $solar
#> name min.dec max.dec date1 date2
#> 1 december solstice -23.98 -23.9 21 Dec <NA>
#> 2 sunrise/set -25.00 -18.0 10 Nov - 29 Jan <NA>
#>
#> $lunar
#> name min.dec max.dec
#> 1 southern minor lunar extreme -18.69 -18.61
#>
#> $stellar
#> name identifier magV min.dec max.dec
#> 1 Sirius alf CMa -1.46 -20.83 -18.75
#> 2 Rigel bet Ori 0.13 -23.19 -19.55
#> 3 Shaula lam Sco 1.63 -24.98 -21.01
#> 4 Kaus Australis eps Sgr 1.81 -25.97 -22.36
#> 5 Mirzam bet CMa 1.97 -25.87 -23.22
#> 6 Saiph kap Ori 2.06 -21.62 -18.36
#> 7 Nunki sig Sgr 2.067 -20.97 -17.81
#> 8 alf Lup 2.286 -27.55 -23.47
#> 9 Larawag eps Sco 2.29 -19.57 -15.44
#> 10 eta Cen 2.31 -22.22 -18.15
#> 11 kap Sco 2.386 -27.39 -23.45
#> 12 Galactic Centre GCentre <NA> -18.19 -14.38
#> 13 SN 393 <NA> -26.32 -22.24
#> 14 SN 1006 <NA> -22.77 -18.62
If one wants to look at more stars one needs only change the
max.mag
parameter as follows:
findTargets(c(-25,-18), c(-2499,-1749), max.mag=3)
#> No location given, therefore outputting geocentric declination.
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> Warning in dd >= decmin: longer object length is not a multiple of shorter
#> object length
#> $solar
#> name min.dec max.dec date1 date2
#> 1 december solstice -23.98 -23.9 21 Dec <NA>
#> 2 sunrise/set -25.00 -18.0 10 Nov - 29 Jan <NA>
#>
#> $lunar
#> name min.dec max.dec
#> 1 southern minor lunar extreme -18.69 -18.61
#>
#> $stellar
#> name identifier magV min.dec max.dec
#> 1 Sirius alf CMa -1.46 -20.83 -18.75
#> 2 Rigel bet Ori 0.13 -23.19 -19.55
#> 3 Shaula lam Sco 1.63 -24.98 -21.01
#> 4 Kaus Australis eps Sgr 1.81 -25.97 -22.36
#> 5 Mirzam bet CMa 1.97 -25.87 -23.22
#> 6 Saiph kap Ori 2.06 -21.62 -18.36
#> 7 Nunki sig Sgr 2.067 -20.97 -17.81
#> 8 alf Lup 2.286 -27.55 -23.47
#> 9 Larawag eps Sco 2.29 -19.57 -15.44
#> 10 eta Cen 2.31 -22.22 -18.15
#> 11 kap Sco 2.386 -27.39 -23.45
#> 12 [SC96] Mis 1 62 2.51 -23.35 -19.20
#> 13 Menkar alf Cet 2.53 -19.02 -14.84
#> 14 zet Cen 2.55 -26.86 -23.00
#> 15 Ascella zet Sgr 2.59 -24.97 -21.83
#> 16 NGC 6231 2.6 -27.08 -22.92
#> 17 Lesath ups Sco 2.65 -24.98 -20.99
#> 18 Kaus Media del Sgr 2.668 -21.54 -17.99
#> 19 bet Lup 2.68 -23.67 -19.52
#> 20 gam Lup 2.765 -22.83 -18.61
#> 21 Hatysa iot Ori 2.77 -19.24 -15.77
#> 22 Cursa bet Eri 2.79 -20.68 -16.97
#> 23 Tureis rho Pup 2.81 -20.93 -20.08
#> 24 Xamidimura mu01 Sco 2.98 -23.34 -19.19
#> 25 Alnasl gam02 Sgr 2.99 -20.83 -17.13
#> 26 iot01 Sco 2.992 -28.78 -24.86
#> 27 Galactic Centre GCentre <NA> -18.19 -14.38
#> 28 SN 393 <NA> -26.32 -22.24
#> 29 SN 1006 <NA> -22.77 -18.62
To estimate the phases, events and/or seasonality of stars, the
function star.phases
can be used. It works as follows, for
the location of Cairo, the year 3000 BC, and a horizon altitude of
20b0:
One can then check the star’s phase type, events and seasons by simply typing:
sp$metadata$type
#> [1] "arising and lying hidden"
sp$metadata$events
#> event day
#> 1 acronycal setting April 11
#> 2 heliacal rising June 15
sp$metadata$seasons
#> season begin end length
#> 1 arising and lying hidden April 12 June 14 64
#> 2 rise only June 15 October 11 119
#> 3 rise and set October 12 December 13 63
#> 4 set only December 14 April 11 119
These can be visualized using:
A simplistic sketch of the sky can be produced (for example, for
publications) using sky.sketch
. It accurately plots the
position of sun, moon, planets and brightest stars against a given
horizon and for a particular time. The example below is for a location
in Portugal at 9.30am on the 7th of January 2019. Notice the exaggerated
yellow circle for the sun and white circle for the moon.