<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://louiki.elyseum.fr/template_test/index.php?action=history&amp;feed=atom&amp;title=Module%3ACarte_de_positionnement_stellaire_UAI</id>
	<title>Module:Carte de positionnement stellaire UAI - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://louiki.elyseum.fr/template_test/index.php?action=history&amp;feed=atom&amp;title=Module%3ACarte_de_positionnement_stellaire_UAI"/>
	<link rel="alternate" type="text/html" href="https://louiki.elyseum.fr/template_test/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&amp;action=history"/>
	<updated>2026-10-19T00:46:48Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.32.1</generator>
	<entry>
		<id>https://louiki.elyseum.fr/template_test/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&amp;diff=788&amp;oldid=prev</id>
		<title>Louis : 1 révision importée</title>
		<link rel="alternate" type="text/html" href="https://louiki.elyseum.fr/template_test/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&amp;diff=788&amp;oldid=prev"/>
		<updated>2019-02-08T10:40:33Z</updated>

		<summary type="html">&lt;p&gt;1 révision importée&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version du 8 février 2019 à 10:40&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Louis</name></author>
		
	</entry>
	<entry>
		<id>https://louiki.elyseum.fr/template_test/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&amp;diff=787&amp;oldid=prev</id>
		<title>Xfigpower le 27 décembre 2017 à 08:56</title>
		<link rel="alternate" type="text/html" href="https://louiki.elyseum.fr/template_test/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&amp;diff=787&amp;oldid=prev"/>
		<updated>2017-12-27T08:56:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
* Module d'implementation du patron Carte de positionnement stellaire UAI.&lt;br /&gt;
*&lt;br /&gt;
* Imported from https://it.wikipedia.org/w/index.php?title=Modulo:Mappa_di_localizzazione_IAU&amp;amp;oldid=84979493&lt;br /&gt;
]]--&lt;br /&gt;
&lt;br /&gt;
require('Module:No globals')&lt;br /&gt;
&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
local mRaDec = require('Module:AdDéc')&lt;br /&gt;
local cfg = mw.loadData('Module:Carte de positionnement stellaire UAI/Configuration')&lt;br /&gt;
local errorCategory = '[[Catégorie:Éléments en erreur du module Carte de positionnement stellaire UAI]]'&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function errhandler(msg)&lt;br /&gt;
	local cat = mw.title.getCurrentTitle().namespace == 0 and errorCategory or ''&lt;br /&gt;
	return string.format('&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;%s', msg, cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _latinise_letters(tmparg)&lt;br /&gt;
            --2&amp;gt;--remove case&lt;br /&gt;
            tmparg=mw.ustring.lower(tmparg);&lt;br /&gt;
            --2&amp;gt;--remove acccent&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[áàâäãå]&amp;quot;, &amp;quot;a&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[æ]&amp;quot;, &amp;quot;ae&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[ç]&amp;quot;, &amp;quot;c&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[éèêë]&amp;quot;, &amp;quot;e&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[íìîï]&amp;quot;, &amp;quot;i&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[ñ]&amp;quot;, &amp;quot;n&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[óòôöõ]&amp;quot;, &amp;quot;o&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[œ]&amp;quot;, &amp;quot;oe&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[úùûü]&amp;quot;, &amp;quot;u&amp;quot;);&lt;br /&gt;
            tmparg=mw.ustring.gsub(tmparg, &amp;quot;[ýÿ]&amp;quot;, &amp;quot;y&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            return tmparg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- http://lua-users.org/wiki/SimpleRound&lt;br /&gt;
local function round(num, idp)&lt;br /&gt;
	local mult = 10 ^ (idp or 0)&lt;br /&gt;
	return math.floor(num * mult + 0.5) / mult&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Converte la declinazione da gradi/minuti/secondi in gradi decimali&lt;br /&gt;
local function dec2deg(dec)&lt;br /&gt;
	local sign = dec.d &amp;gt;= 0 and 1 or -1&lt;br /&gt;
	return dec.d + sign * dec.m / 60 + sign * dec.s / 3600&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Converte l'ascensione retta da ore/minuti/secondi in gradi decimali&lt;br /&gt;
local function ar2deg(ar)&lt;br /&gt;
	return ar.h * 15 + ar.m / 4 + ar.s / 240&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Parsifica il parametro ar con formato &amp;quot;ore/minuti/secondi&amp;quot;&lt;br /&gt;
local function parseArSlash(args)&lt;br /&gt;
	local h, m, s = string.match(args.ascension_droite, '^([%d]+)/(%d+)/([%d,%.]+)$')&lt;br /&gt;
	h, m, s = tonumber(h), tonumber(m), tonumber(s)&lt;br /&gt;
	return (h and m and s) and ar2deg({ h = h, m = m, s = s }) or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Parsifica il parametro declinaz con formato &amp;quot;gradi/minuti/secondi&amp;quot;&lt;br /&gt;
local function parseDecSlash(args)&lt;br /&gt;
	local d, m, s = string.match(args.declinaison, '^+?(-?%d+)/(%d+)/([%d,%.]+)$')&lt;br /&gt;
	d, m, s = tonumber(d), tonumber(m), tonumber(s)&lt;br /&gt;
	return (d and m and s) and dec2deg({ d = d, m = m, s = s }) or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Le funzioni getX e getY sono state ottenute dalle formule di Ysogo in&lt;br /&gt;
-- Discussioni_progetto:Astronomia#Posizione_nella_carte_della_costellazione:&lt;br /&gt;
-- X = Ax+(Aw/2)+(Ah/(DECsup-DECinf))*(DECogg-DECaxe)*sen((ARmed-ARogg)/disang)&lt;br /&gt;
-- Y = Ay+Ah-(Ah/(DECsup-DECinf))*((DECogg-DECaxe)*cos((ARmed-ARogg)/disang)-(DECinf-DECaxe))&lt;br /&gt;
local function getX(map, ar, dec, width, marksize)&lt;br /&gt;
	local x = map.ax + map.aw / 2 +&lt;br /&gt;
			  (map.ah / (map.dec_sup - map.dec_inf)) *&lt;br /&gt;
			  (dec - map.dec_axe) *&lt;br /&gt;
			  math.sin(((map.ar_med - ar) / map.dis_ang) * (math.pi / 180))&lt;br /&gt;
	-- scala il risultato in base a width e centra il marker&lt;br /&gt;
	return round(x * width / map.iw - marksize / 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getY(map, ar, dec, width, marksize)&lt;br /&gt;
	local y = map.ay + map.ah -&lt;br /&gt;
			  (map.ah / (map.dec_sup - map.dec_inf)) *&lt;br /&gt;
			  ((dec - map.dec_axe) * math.cos(((map.ar_med - ar) / map.dis_ang) * (math.pi / 180)) - (map.dec_inf - map.dec_axe) )&lt;br /&gt;
	-- scala il risultato in base a width e centra il marker&lt;br /&gt;
	return round(y * width / map.iw - marksize / 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getThumbnail(text, image, args, width)&lt;br /&gt;
	local divNode = mw.html.create('div')&lt;br /&gt;
	divNode&lt;br /&gt;
		:addClass('thumb')&lt;br /&gt;
		:addClass(args.float == 'right' and 'tright' or 'tleft')&lt;br /&gt;
		:tag('div')&lt;br /&gt;
			:addClass('thumbinner')&lt;br /&gt;
			:css('width', width .. 'px')&lt;br /&gt;
			:wikitext(text)&lt;br /&gt;
			:tag('div')&lt;br /&gt;
				:addClass('thumbcaption')&lt;br /&gt;
				:wikitext(args.legende or '')&lt;br /&gt;
				:tag('div')&lt;br /&gt;
					:addClass('magnify')&lt;br /&gt;
					:wikitext(string.format('[[:File:%s]]', image))&lt;br /&gt;
	return tostring(divNode)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Restituisce l'elenco dei codici delle mappe configurate&lt;br /&gt;
function p.maps()&lt;br /&gt;
	local sortedMaps = {}&lt;br /&gt;
	for key, _ in pairs(cfg.mappe) do&lt;br /&gt;
		table.insert(sortedMaps, key)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(sortedMaps)&lt;br /&gt;
	return mw.text.listToText(sortedMaps)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Restituisce 1 se la carte specificata è disponibile altrimenti nil&lt;br /&gt;
function p.hasmap(frame)&lt;br /&gt;
	local carte = frame.args[1] and mw.ustring.lower(frame.args[1])&lt;br /&gt;
	return (cfg.alias[carte] or cfg.mappe[carte]) and 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Per l'utilizzo da altro modulo&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local map, ar, dec, text&lt;br /&gt;
	local width = tonumber(args.width) or 260&lt;br /&gt;
	local marksize = tonumber(args.marksize) or 15&lt;br /&gt;
	&lt;br /&gt;
	-- ottiene la carte&lt;br /&gt;
	if args.carte then&lt;br /&gt;
		args.carte = _latinise_letters(args.carte)&lt;br /&gt;
	else&lt;br /&gt;
		error('carte non spécifiée', 2)&lt;br /&gt;
	end&lt;br /&gt;
	-- eventuale alias&lt;br /&gt;
	args.carte = cfg.alias[args.carte] or args.carte&lt;br /&gt;
	if not cfg.mappe[args.carte] then&lt;br /&gt;
		error('carte non disponibile: ' .. args.carte, 2)&lt;br /&gt;
	end&lt;br /&gt;
	map = cfg.mappe[args.carte]&lt;br /&gt;
	&lt;br /&gt;
	-- ottiene ascensione retta e declinazione&lt;br /&gt;
	if args.RA and args.DEC then&lt;br /&gt;
		ar = mRaDec.parseRA(args.RA)&lt;br /&gt;
		dec = mRaDec.parseDEC(args.DEC)&lt;br /&gt;
		if ar and dec then&lt;br /&gt;
			ar = ar2deg(ar)&lt;br /&gt;
			dec = dec2deg(dec)&lt;br /&gt;
		end&lt;br /&gt;
	elseif args.ascension_droite_dec and args.declinaison_dec then&lt;br /&gt;
		ar = args.ascension_droite_dec&lt;br /&gt;
		dec = args.declinaison_dec&lt;br /&gt;
	elseif args.ascension_droite and args.declinaison then&lt;br /&gt;
		ar = parseArSlash(args)&lt;br /&gt;
		dec = parseDecSlash(args)&lt;br /&gt;
	end&lt;br /&gt;
	if not ar or not dec then&lt;br /&gt;
		error('coordonées célestes invalides', 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- carte doppia&lt;br /&gt;
	if args.carte == 'ser' then&lt;br /&gt;
		map = ar &amp;gt; 255 and map.cauda or map.caput&lt;br /&gt;
	end&lt;br /&gt;
	-- per le costellazioni che attraversano il meridiano fondamentale&lt;br /&gt;
	if map.ar_med &amp;gt; ar + 180 then&lt;br /&gt;
		ar = ar + 360&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- utilizza il template Superpose&lt;br /&gt;
	text = mw.getCurrentFrame():expandTemplate {&lt;br /&gt;
		title = 'Superpose2',&lt;br /&gt;
		args = {&lt;br /&gt;
			base = map.image,&lt;br /&gt;
			base_width = width .. 'px',&lt;br /&gt;
			base_caption = '',&lt;br /&gt;
			float = args.mark or 'Cercle rouge 100%.svg',&lt;br /&gt;
			float_width = marksize .. 'px',&lt;br /&gt;
			float_caption = args.nom or '',&lt;br /&gt;
			x = getX(map, ar, dec, width, marksize),&lt;br /&gt;
			y = getY(map, ar, dec, width, marksize)&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return args.inclusion and text or getThumbnail(text, map.image, args, width + 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry-point per il template {{carte di localizzazione IAU}}&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	return select(2, xpcall(function()&lt;br /&gt;
		return p._main(getArgs(frame, { parentOnly = true }))&lt;br /&gt;
	end, errhandler))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Per l'utilizzo da altro modulo&lt;br /&gt;
function p._main2(carte)&lt;br /&gt;
	local map, ar, dec, text&lt;br /&gt;
	&lt;br /&gt;
	-- ottiene la carte&lt;br /&gt;
	if carte then&lt;br /&gt;
		carte = _latinise_letters(carte)&lt;br /&gt;
	else&lt;br /&gt;
		error('carte non spécifiée', 2)&lt;br /&gt;
	end&lt;br /&gt;
	-- eventuale alias&lt;br /&gt;
	carte = cfg.alias[carte] or carte&lt;br /&gt;
	if not cfg.mappe[carte] then&lt;br /&gt;
		error('carte non disponibile: ' .. carte, 2)&lt;br /&gt;
	end&lt;br /&gt;
	map = cfg.mappe[carte]&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	-- carte doppia&lt;br /&gt;
	if carte == 'ser' then&lt;br /&gt;
		map = map.caput&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- utilizza il template Superpose&lt;br /&gt;
	text = '[['.. map.page .. '|'.. string.gsub(map.page, ' %(constellation%)', '') ..']]'&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Entry-point per il template {{carte di localizzazione IAU}}&lt;br /&gt;
function p.page(frame)&lt;br /&gt;
	local carte = frame.args[1]&lt;br /&gt;
	return p._main2(carte)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Xfigpower</name></author>
		
	</entry>
</feed>