Skip to main content

curated data - Right Ascension and Declination in astronomical functions


In the process of answering this question, I was forced to confront the various astronomical coordinate systems used by Mathematica.


Background


In astronomy, positions of celestial objects (stars, planets, nebulae, etc.) are commonly given in terms of one of a family of celestial equatorial coordinates, which are a coordinate systems that are centered either on the Earth (geocentric) or the barycenter of the solar system (barycentric) and are fixed relative to the very distant stars (cf. wikipedia). They can be imprecisely defined as projecting the equator and the prime meridian (at noon on the vernal equinox) out onto the sky and using them as the coordinate axes. Right ascension (RA) is the coordinate that measures angle left from the meridian and declination (Dec) measures angle up from the equator It is a bit of a tricky definition, however, as the Earth's axis of rotation precesses and nutates and wobbles, moving with respect to the background stars (precession is the dominant effect, and the slowest; the other effects are much smaller in magnitude but also have a much higher frequency), so coordinates defined this way will slowly change.


In these late times, the International Astronomical Union has defined a fixed system of coordinates called the International Celestial Reference System (ICRS; or ICRF for the reference frame), which is as fixed as possible with respect to the background stars and centered at the barycenter of the solar system, and its cousin the GCRS ("geocentric ICRS"), which is co-centered with the Earth. Although, as in all things in astronomy, older systems are still used, RA and Dec are commonly now given for astronomical objects as ICRS coordinates, and do not change with the motion of the Earth. Observers on the Earth, however, still want to know where to point their telescopes, so there in a fairly complicated set of transformations that have been defined for conversion of ICRS RA and Dec into a longitude and latitude on the Earth (coordinates that can be projected on the sky, but do precess and nutate and wobble, etc.). The technical definitions given for all of the IAU conventions can be found here, for the brave.


Right Ascension and Declination in Mathematica


We can find the right ascension and declination for a astronomical objects using the functions PlanetData, PlanetaryMoonData, and StarData, etc. The Sun and the Moon have the additional position functions SunPosition and MoonPosition that can be used to give positions in terms of "Equatorial" coordinates that the documentation claims are the right ascension and declination.



My question is: which kind of RA and Dec are being used in all of these functions, the ICRS standard, or coordinates that precess with the Earth's axis, or something in between (GCRS, perhaps)? The documentation, unfortunately (and bizarrely, given that the people making these functions had to decide which convention to use), is silent.






Comments

Popular posts from this blog

plotting - How to draw lines between specified dots on ListPlot?

I would like to create a plot where I have unconnected dots and some connected. So far, I have figured out how to draw the dots. My code is the following: ListPlot[{{1, 1}, {2, 2}, {3, 3}, {4, 4}, {1, 4}, {2, 5}, {3, 6}, {4, 7}, {1, 7}, {2, 8}, {3, 9}, {4, 10}, {1, 10}, {2, 11}, {3, 12}, {4,13}, {2.5, 7}}, Ticks -> {{1, 2, 3, 4}, None}, AxesStyle -> Thin, TicksStyle -> Directive[Black, Bold, 12], Mesh -> Full] I have thought using ListLinePlot command, but I don't know how to specify to the command to draw only selected lines between the dots. Do have any suggestions/hints on how to do that? Thank you. Answer One possibility would be to use Epilog with Line : ListPlot[ {{1, 1}, {2, 2}, {3, 3}, {4, 4}, {1, 4}, {2, 5}, {3, 6}, {4, 7}, {1, 7}, {2, 8}, {3, 9}, {4, 10}, {1, 10}, {2, 11}, {3, 12}, {4, 13}, {2.5, 7}}, Ticks -> {{1, 2, 3, 4}, None}, AxesStyle -> Thin, TicksStyle -> Directive[Black, Bold, 12], Mesh -> Full, Epilog -> { Line[ ...

equation solving - Invert and fit implicitly defined curve

I need to fit an implicitly defined curve. I thought I could get some data out of Solve , and then using FindFit . Therefore, I would like to find the relation the parametric curve defined by $F(x,y)=0$: Solve[-(1/2) + 1/2 (0.41202 BesselK[0, 0.1 Sqrt[x^2 + y^2]] + (0.101483 x BesselK[1, 0.1 Sqrt[x^2 + y^2]])/Sqrt[x^2 + y^2]) == 0, y] But I can't get an output: Solve was unable to solve the system with inexact coefficients or the system obtained by direct rationalization of inexact numbers present in the system. Since many of the methods used by Solve require exact input, providing Solve with an exact version of the system may help. >> Edit: In particular, I would like to fit the data coming from the curve with the expression of another curve, and not with a function $f(x)$. In particular, since this clearly looks like a cardioid , I would like it to fit to something like it. What other strategies could I try?

dynamic - How can I make a clickable ArrayPlot that returns input?

I would like to create a dynamic ArrayPlot so that the rectangles, when clicked, provide the input. Can I use ArrayPlot for this? Or is there something else I should have to use? Answer ArrayPlot is much more than just a simple array like Grid : it represents a ranged 2D dataset, and its visualization can be finetuned by options like DataReversed and DataRange . These features make it quite complicated to reproduce the same layout and order with Grid . Here I offer AnnotatedArrayPlot which comes in handy when your dataset is more than just a flat 2D array. The dynamic interface allows highlighting individual cells and possibly interacting with them. AnnotatedArrayPlot works the same way as ArrayPlot and accepts the same options plus Enabled , HighlightCoordinates , HighlightStyle and HighlightElementFunction . data = {{Missing["HasSomeMoreData"], GrayLevel[ 1], {RGBColor[0, 1, 1], RGBColor[0, 0, 1], GrayLevel[1]}, RGBColor[0, 1, 0]}, {GrayLevel[0], GrayLevel...