Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Module:Carte de positionnement stellaire UAI — Wikipédia
Module:Carte de positionnement stellaire UAI — Wikipédia 👆 Click Here! Read More..
Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Voir le modèle {{Carte de positionnement stellaire UAI}}.

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

    • Projet Scribunto Projet Scribunto

La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.

--[[
* Module d'implementation du patron Carte de positionnement stellaire UAI.
*
* Imported from https://it.teknopedia.teknokrat.ac.id/w/index.php?title=Modulo:Mappa_di_localizzazione_IAU&oldid=84979493
]]--

require('strict')

local getArgs = require('Module:Arguments').getArgs
local mRaDec = require('Module:AdDéc')
local cfg = mw.loadData('Module:Carte de positionnement stellaire UAI/Configuration')
local errorCategory = '[[Catégorie:Éléments en erreur du module Carte de positionnement stellaire UAI]]'
local p = {}

local function errhandler(msg)
	local cat = mw.title.getCurrentTitle().namespace == 0 and errorCategory or ''
	return string.format('<span class="error">%s</span>%s', msg, cat)
end

local function _latinise_letters(tmparg)
            --2>--remove case
            tmparg=mw.ustring.lower(tmparg);
            --2>--remove acccent
            tmparg=mw.ustring.gsub(tmparg, "[áàâäãå]", "a");
            tmparg=mw.ustring.gsub(tmparg, "[æ]", "ae");
            tmparg=mw.ustring.gsub(tmparg, "[ç]", "c");
            tmparg=mw.ustring.gsub(tmparg, "[éèêë]", "e");
            tmparg=mw.ustring.gsub(tmparg, "[íìîï]", "i");
            tmparg=mw.ustring.gsub(tmparg, "[ñ]", "n");
            tmparg=mw.ustring.gsub(tmparg, "[óòôöõ]", "o");
            tmparg=mw.ustring.gsub(tmparg, "[œ]", "oe");
            tmparg=mw.ustring.gsub(tmparg, "[úùûü]", "u");
            tmparg=mw.ustring.gsub(tmparg, "[ýÿ]", "y");

            return tmparg;
end

-- http://lua-users.org/wiki/SimpleRound
local function round(num, idp)
	local mult = 10 ^ (idp or 0)
	return math.floor(num * mult + 0.5) / mult
end

-- Converte la declinazione da gradi/minuti/secondi in gradi decimali
local function dec2deg(dec)
	local sign = dec.d >= 0 and not(dec.signe == '-') and 1 or -1
	return dec.d + sign * dec.m / 60 + sign * dec.s / 3600
end

-- Converte l'ascensione retta da ore/minuti/secondi in gradi decimali
local function ar2deg(ar)
	return ar.h * 15 + ar.m / 4 + ar.s / 240
end

-- Parsifica il parametro ar con formato "ore/minuti/secondi"
local function parseArSlash(args)
	local h, m, s = string.match(args.ascension_droite, '^([%d]+)/(%d+)/([%d,%.]+)$')
	h, m, s = tonumber(h), tonumber(m), tonumber(s)
	return (h and m and s) and ar2deg({ h = h, m = m, s = s }) or nil
end

-- Parsifica il parametro declinaz con formato "gradi/minuti/secondi"
local function parseDecSlash(args)
	local d, signe, m, s = string.match(args.declinaison, '^+?((-?)%d+)/(%d+)/([%d,%.]+)$')
	d, m, s = tonumber(d), tonumber(m), tonumber(s)
	return (d and m and s) and dec2deg({ d = d, m = m, s = s, signe = signe }) or nil
end

-- Le funzioni getX e getY sono state ottenute dalle formule di Ysogo in
-- Discussioni_progetto:Astronomia#Posizione_nella_carte_della_costellazione:
-- X = Ax+(Aw/2)+(Ah/(DECsup-DECinf))*(DECogg-DECaxe)*sen((ARmed-ARogg)/disang)
-- Y = Ay+Ah-(Ah/(DECsup-DECinf))*((DECogg-DECaxe)*cos((ARmed-ARogg)/disang)-(DECinf-DECaxe))
local function getX(map, ar, dec, width, marksize)
	local x = map.ax + map.aw / 2 +
			  (map.ah / (map.dec_sup - map.dec_inf)) *
			  (dec - map.dec_axe) *
			  math.sin(((map.ar_med - ar) / map.dis_ang) * (math.pi / 180))
	-- scala il risultato in base a width e centra il marker
	return round(x * width / map.iw - marksize / 2)
end

local function getY(map, ar, dec, width, marksize)
	local y = map.ay + map.ah -
			  (map.ah / (map.dec_sup - map.dec_inf)) *
			  ((dec - map.dec_axe) * math.cos(((map.ar_med - ar) / map.dis_ang) * (math.pi / 180)) - (map.dec_inf - map.dec_axe) )
	-- scala il risultato in base a width e centra il marker
	return round(y * width / map.iw - marksize / 2)
end

local function getThumbnail(text, image, args, width)
	local divNode = mw.html.create('div')
	divNode
		:addClass('thumb')
		:addClass(args.float == 'right' and 'tright' or 'tleft')
		:tag('div')
			:addClass('thumbinner')
			:css('width', width .. 'px')
			:wikitext(text)
			:tag('div')
				:addClass('thumbcaption')
				:wikitext(args.legende or '')
				:tag('div')
					:addClass('magnify')
					:wikitext(string.format('[[:File:%s]]', image))
	return tostring(divNode)
end

-- Restituisce l'elenco dei codici delle mappe configurate
function p.maps()
	local sortedMaps = {}
	for key, _ in pairs(cfg.mappe) do
		table.insert(sortedMaps, key)
	end
	table.sort(sortedMaps)
	return mw.text.listToText(sortedMaps)
end

-- Restituisce 1 se la carte specificata è disponibile altrimenti nil
function p.hasmap(frame)
	local carte = frame.args[1] and mw.ustring.lower(frame.args[1])
	return (cfg.alias[carte] or cfg.mappe[carte]) and 1
end

-- Per l'utilizzo da altro modulo
function p._main(args)
	local map, ar, dec, text
	local width = tonumber(args.width) or 260
	local marksize = tonumber(args.marksize) or 15
	
	-- ottiene la carte
	if args.carte then
		args.carte = _latinise_letters(args.carte)
	else
		error('carte non spécifiée', 2)
	end
	-- eventuale alias
	args.carte = cfg.alias[args.carte] or args.carte
	if not cfg.mappe[args.carte] then
		error('carte non disponibile: ' .. args.carte, 2)
	end
	map = cfg.mappe[args.carte]
	
	-- ottiene ascensione retta e declinazione
	if args.RA and args.DEC then
		ar = mRaDec.parseRA(args.RA)
		dec = mRaDec.parseDEC(args.DEC)
		if ar and dec then
			ar = ar2deg(ar)
			dec = dec2deg(dec)
		end
	elseif args.ascension_droite_dec and args.declinaison_dec then
		ar = args.ascension_droite_dec
		dec = args.declinaison_dec
	elseif args.ascension_droite and args.declinaison then
		ar = parseArSlash(args)
		dec = parseDecSlash(args)
	end
	if not ar or not dec then
		error('coordonées célestes invalides', 2)
	end

	-- carte doppia
	if args.carte == 'ser' then
		map = ar > 255 and map.cauda or map.caput
	end
	-- per le costellazioni che attraversano il meridiano fondamentale
	if map.ar_med > ar + 180 then
		ar = ar + 360
	end

	-- utilizza il template Superpose
	text = mw.getCurrentFrame():expandTemplate {
		title = 'Superpose2',
		args = {
			base = map.image,
			base_width = width .. 'px',
			base_caption = '',
			float = args.mark or 'Cercle rouge 100%.svg',
			float_width = marksize .. 'px',
			float_caption = args.nom or '',
			x = getX(map, ar, dec, width, marksize),
			y = getY(map, ar, dec, width, marksize)
		}
	}

	return args.inclusion and text or getThumbnail(text, map.image, args, width + 2)
end

-- Entry-point per il template {{carte di localizzazione IAU}}
function p.main(frame)
	return select(2, xpcall(function()
		return p._main(getArgs(frame, { parentOnly = true }))
	end, errhandler))
end

-- Per l'utilizzo da altro modulo
function p._main2(carte)
	local map, ar, dec, text
	
	-- ottiene la carte
	if carte then
		carte = _latinise_letters(carte)
	else
		error('carte non spécifiée', 2)
	end
	-- eventuale alias
	carte = cfg.alias[carte] or carte
	if not cfg.mappe[carte] then
		error('carte non disponibile: ' .. carte, 2)
	end
	map = cfg.mappe[carte]
	

	-- carte doppia
	if carte == 'ser' then
		map = map.caput
	end
	
	-- utilizza il template Superpose
	text = '[['.. map.page .. '|'.. string.gsub(map.page, ' %(constellation%)', '') ..']]'
	return text
end

-- Entry-point per il template {{carte di localizzazione IAU}}
function p.page(frame)
	local carte = frame.args[1]
	return p._main2(carte)
end

return p
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Module:Carte_de_positionnement_stellaire_UAI&oldid=203534618 ».
Catégorie :
  • Module en langage Lua
Catégorie cachée :
  • Module en semi-protection étendue

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id