Modul:Astronomické súradnice
Modul Astronomické súradnice zobrazuje rovníkové súradnice hviezdy alebo deep sky objektu (hviezdokopa, hmlovina, galaxia), vrátane odkazu na interaktívnu hviezdnu mapu.
Prípadné chyby pri volaní sú zobrazené červenou farbou v texte a článok ja automaticky radený do skrytej kategórie Chyby hlásené modulom Astronomické súradnice.
main()
Hlavná metóda modulu. Zobrazenie súradníc a mapového odkazu.
Parametre
názov parametra | typ | predvolená hodnota | popis |
---|---|---|---|
#1 | reťazec | (povinný) | rektascenzia v tvare "H M S". Ako oddelovač sa berie akákoľvek nečíselná postupnosť znakov, štandardne medzera. Je možné odovzdať aj výstup šablóny {{RA}}. |
#2 | reťazec | (povinný) | deklinácia v tvare "D M S". Ako oddelovač sa berie akákoľvek nečíselná postupnosť znakov, štandardne medzera. Je možné odovzdať aj výstup šablóny {{DEC}}. |
display | reťazec | "inline" | čiarkou oddelené typy zobrazenia. inline: zobrazenie v texte na mieste volania. title: zobrazenie v záhlaví stránky. |
Príklady
Volanie z Wiki markupu:
volanie | výsledok |
---|---|
{{#invoke:Astronomické súradnice|main|0 42 44.3|41 16 8}}
|
00h 42m 44s; 41° 16′ 08″ |
{{#invoke:Astronomické súradnice|main|0 42 44.3|41 16 8|display=title}}
|
Súradnice: 00h 42m 44s; 41° 16′ 08″(výstup vpravo hore v záhlaví) |
{{#invoke:Astronomické súradnice|main|{{RA|0|42|44.3}}|{{DEC|41|16|8}}}}
|
00h 42m 44s; 41° 16′ 08″ |
{{#invoke:Astronomické súradnice|main|0 h 42 min 44,3 s|+41° 16′ 8″}}
|
00h 42m 44s; 41° 16′ 08″ |
Volanie z Lua modulu:
local as = require('Module:Astronomické súradnice')
local markup = as._main({"0 42 44.3", "41 16 8", display = "inline"})
format()
Pomocná metóda pre zobrazenie rektascenzie a deklinácie v štandardnom formáte.
Parametre
názov parametra | typ | predvolená hodnota | popis |
---|---|---|---|
#1 | reťazec | (povinný) | typ formátovanej hodnoty (RA: rektascenzia, DEC: deklinácia) |
#2 | reťazec | "" | hodnota |
Príklady
Volanie z Wiki markupu:
volanie | výsledok |
---|---|
{{#invoke:Astronomické súradnice|format|RA|0 42 44.3}}
|
00h 42m 44,3s |
{{#invoke:Astronomické súradnice|format|RA|0 h 42 min 44,3 s}}
|
00h 42m 44,3s |
{{#invoke:Astronomické súradnice|format|DEC|41 16 8}}
|
41° 16′ 08″ |
Volanie z Lua modulu:
local as = require('Module:Astronomické súradnice')
local markup = as._format({"RA", "0 42 44.3"})
Pozri aj
- Modul:Súradnice, {{Súradnice}}
- {{RA}}, {{DEC}}
- {{Infobox Deepsky}}, {{Infobox Hviezda}}, {{Infobox hviezda pozorovacie dáta}}
- Kategória:Chyby hlásené modulom Astronomické súradnice
Inšpirácia:
Ak máte otázku k tomuto modulu, alebo potrebujete jeho rozšírenie a neviete ho správne naformátovať, pýtajte sa v diskusii k modulu. Pokiaľ je potrebné modul urgentne opraviť, obráťte sa na technickú podporu.
- Použitie modulu v článkoch.
- Zoznam podstránok tohto modulu.
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.formatError(msg)
markup = '<strong class="error">' .. msg .. '</strong>'
markup = markup .. "[[Kategória:Chyby hlásené modulom Astronomické súradnice]]"
return markup
end
-- format positive/negative integer into 2-digit format (NN, -NN)
function p.formatNNd(n)
if (n < 0) then
n = string.format("%03d", n)
else
n = string.format("%02d", n)
end
return n
end
-- format integer part of positive only float into 2-digit format (NN.NNNN) and force locale decimal separator
function p.formatNNf(n)
if (n < 10) then
n = "0" .. n
end
n = string.gsub(n, "%.", ",") -- NN.NNNN -> NN,NNNN (sk decimal separator)
return n
end
function p.displayTitle(s, notes)
local markup =
'<span style="font-size: small;">' ..
'<span id="coordinates">' ..
"[[Rovníková sústava súradníc|Súradnice]]: " ..
"[[Súbor:Q_space.svg|24px|link=|Hviezdna mapa]] " ..
-- "[[Súbor:Q_space.svg|24px|link=]] " ..
s ..
notes ..
"</span>" ..
"</span>" ..
""
return markup
end
function p.displayInline(s, notes)
return s .. notes
end
function p.parseDMS(str)
local dms = {}
d, m, s = string.match(str, "^[^%d−-]*([%d+−-]+)%D+0*(%d+)%D+0*([%d.,]+)")
if (d == nil) then
error("Unable to parse D/M/S values from string '" .. str .. "'");
end
d = string.gsub(d, "−", "-") -- typographic minus -> ascii minus
d = d * 1 -- "+N" -> N, "-0N" -> -N
m = m * 1
s = string.gsub(s, ",", ".") * 1 -- "N,N" -> N.N
dms["d"] = d
dms["m"] = m
dms["s"] = s
return dms
end
function p.validateRA(hms)
if (hms['d'] < 0 or hms['d'] > 23 or hms['m'] >= 60 or hms['s'] >= 60) then
error("RA H/M/S member out of range: expected [0..23], [0..59], [0..60), actual: " ..
hms['d'] .. ", " .. hms['m'] .. ", " .. hms['s'])
end
end
function p.validateDEC(dms)
if (dms['d'] < -90 or dms['d'] > 90 or dms['m'] >= 60 or dms['s'] >= 60) then
error("DEC D/M/S member out of range: expected [-90..90], [0..59], [0..60), actual: " ..
dms['d'] .. ", " .. dms['m'] .. ", " .. dms['s'])
end
end
function p._format(args)
if (args[1] == nil or args[1] == "") then
error("Missing required arguments #1 (action)")
end
if (args[2] == nil or args[2] == "") then
return ""
end
local action = string.lower(args[1])
local markup = ""
if (action == 'ra') then
-- format RA
local ra = p.parseDMS(args[2])
p.validateRA(ra)
markup = p.formatNNd(ra["d"]) .. "<sup>h</sup> " .. p.formatNNd(ra["m"]) .. "<sup>m</sup> " .. p.formatNNf(ra["s"]) .. "<sup>s</sup>"
elseif (action == 'dec') then
-- format DEC
local dec = p.parseDMS(args[2])
p.validateDEC(dec)
markup = p.formatNNd(dec["d"]) .. "° " .. p.formatNNd(dec["m"]) .. "′ " .. p.formatNNf(dec["s"]) .. "″"
else
error("Unknown action: '" .. args[1] .. "'")
end
return markup
end
function p.format(frame)
local args = getArgs(frame)
local success, result = pcall(p._format, args)
if (not success) then
result = p.formatError(result)
end
return result
end
function p._main(args)
if (args[1] == nil or args[1] == "" or args[2] == nil or args[2] == "") then
error("Missing required arguments #1, #2 (RA, DEC)")
end
local ra = p.parseDMS(args[1])
local dec = p.parseDMS(args[2])
local display = string.lower(args.display or "inline")
if (display == "") then
display = "inline"
end
p.validateRA(ra)
p.validateDEC(dec)
local mapUrl = "http://www.sky-map.org/?zoom=4&show_grid=1&show_constellation_lines=1&show_constellation_boundaries=1&show_const_names=0&show_galaxies=1&show_box=1&ra=@ra@&de=@dec@&box_width=50&box_height=50"
local pRa = ra["d"] .. "+" .. ra["m"] .. "+" .. ra["s"]
local pDec = dec["d"] .. "+" .. dec["m"] .. "+" .. dec["s"]
mapUrl = string.gsub(string.gsub(mapUrl, "@ra@", pRa), "@dec@", pDec)
local markup0 =
p.formatNNd(ra["d"]) .. "<sup>h</sup> " .. p.formatNNd(ra["m"]) .. "<sup>m</sup> " .. p.formatNNd(math.floor(ra["s"] + 0.5)) .. "<sup>s</sup>; " ..
p.formatNNd(dec["d"]) .. "° " .. p.formatNNd(dec["m"]) .. "′ " .. p.formatNNd(math.floor(dec["s"] + 0.5)) .. "″"
markup0 = '<span title="Hviezdna mapa">' .. markup0 .. '</span>'
markup0 = "[" .. mapUrl .. " " .. markup0 .. "]"
local notes = ""
local markup = ""
if string.find(display, 'inline') ~= nil or display == 'i' or display == 'it' or display == 'ti' then
markup = p.displayInline(markup0, notes)
end
if string.find(display, 'title') ~= nil or display == 't' or display == 'it' or display == 'ti' then
markup = markup .. p.displayTitle(markup0, notes)
end
return markup
end
function p.main(frame)
local args = getArgs(frame)
local success, result = pcall(p._main, args)
if (not success) then
result = p.formatError(result)
end
return result
end
function p.test(frame)
local args = {}
args[1] = "08° 01′ 01,49″"
args[2] = "1 51 0,123"
args["display"] = "inline,title"
local success, result = pcall(p._main, args)
-- args[1] = "dec"
-- local success, result = pcall(p._format, args)
-- result = p.formatNNd(0) .. ", " .. p.formatNNd(9) .. ", " .. p.formatNNd(9.123) .. ", " .. p.formatNNd(99) .. ", " .. p.formatNNd(-9) .. ", " .. p.formatNNd(-99)
-- result = p.formatNNf(0) .. ", " .. p.formatNNf(9) .. ", " .. p.formatNNf(9.123) .. ", " .. p.formatNNf(99) .. ", " .. p.formatNNf(99.123)
if (not success) then
result = p.formatError(result)
end
return result
end
return p