-- This module implements/replaces -- Template:Lunar quadrangle -- Template:Mars quadrangle -- Template:Venus quadrangle local p = {} local function moonquad(lat, lon) local function LQ if n < 10 then return 'LQ0' .. n else return 'LQ' .. n end end -- Note: requires positive longitude coordinates if lat > 65 then return LQ(1) elseif lat > 30 then if lon >= 180 then return LQ(2 + math.floor( (lon - 180) / 60 ) ) else return LQ(5 + math.floor( lon / 60 ) ) end elseif lat >= 0 then if lon >= 180 then return LQ(8 + math.floor( (lon - 180) / 45 ) ) else return LQ(12 + math.floor( lon / 45 ) ) end elseif lat >= -30 then if lon >= 180 then return LQ(16 + math.floor( (lon - 180) / 45 ) ) else return LQ(20 + math.floor( lon / 45 ) ) end elseif lat >= -65 then if lon >= 180 then return LQ(24 + math.floor( (lon - 180) / 60 ) ) else return LQ(27 + math.floor( lon / 60 ) ) end else return LQ(30) end return 'Error' end local function marsquad(lat, lon) -- Note: requires positive longitude coordinates if lat > 65 then return 'Mare Boreum' elseif lat > 30 then if lon < 60 then return 'Ismenius Lacus' elseif lon < 120 then return 'Casius' elseif lon < 180 then return 'Cebrenia' elseif lon < 240 then return 'Diacria' elseif lon < 300 then return 'Arcadia' else return 'Mare Acidalium' end elseif lat >= 0 then if lon < 45 then return 'Arabia' elseif lon < 90 then return 'Syrtis Major' elseif lon < 135 then return 'Amenthes' elseif lon < 180 then return 'Elysium' elseif lon < 225 then return 'Amazonis' elseif lon < 270 then return 'Tharsis' elseif lon < 315 then return 'Lunae Palus' else return 'Oxia Palus' end elseif lat >= -30 then if lon < 45 then return 'Sinus Sabaeus' elseif lon < 90 then return 'Iapygia' elseif lon < 135 then return 'Mare Tyrrhenum' elseif lon < 180 then return 'Aeolis' elseif lon < 225 then return 'Memnonia' elseif lon < 270 then return 'Phoenicis Lacus' elseif lon < 315 then return 'Coprates' else return 'Margaritifer Sinus' end elseif lat >= -65 then if lon < 60 then return 'Noachis' elseif lon < 120 then return 'Hellas' elseif lon < 180 then return 'Eridania' elseif lon < 240 then return 'Phaethontis' elseif lon < 300 then return 'Thaumasia' else return 'Argyre' end else return 'Mare Australe' end end local function mercuryquad(lat, lon) -- Note: requires positive longitude coordinates if lat >= 66 then return 'Borealis' elseif lat >= 21 then if lon < 90 then return 'Hokusai' elseif lon < 180 then return 'Raditladi' elseif lon < 270 then return 'Shakespeare' else return 'Victoria' end elseif lat > -21 then if lon < 72 then return 'Derain' elseif lon < 144 then return 'Eminescu' elseif lon < 216 then return 'Tolstoj' elseif lon < 288 then return 'Beethoven' else return 'Kuiper' end elseif lat > -66 then if lon < 90 then return 'Debussy' elseif lon < 180 then return 'Neruda' elseif lon < 270 then return 'Michelangelo' else return 'Discovery' end else return 'Bach' end return 'Error' end local function venusquad(lat, lon) -- Note: requires positive longitude coordinates if lat > 57 then return 'Ishtar Terra' elseif lat >= 0 then if lon < 60 or lon >= 300 then return 'Sedna Planitia' elseif lon < 180 then return 'Niobe Planitia' else return 'Guinevere Planitia' end elseif lat >= -57 then if lon < 60 or lon >= 300 then return 'Lavinia Planitia' elseif lon < 180 then return 'Aphrodite Terra' else return 'Helen Planitia' end else return 'Lada Terra' end end local function quad_name(lat, lon, globe) -- lower case globe = globe:lower or -- convert to numbers lat = tonumber(lat) or lon = tonumber(lon) or -- get the quad name if lat ~= and lon ~= and globe ~= then if lon < 0 then lon = lon + 360 end if lon < 0 or lon > 360 then return 'Error' end if globe 'mars' then return marsquad(lat, lon) elseif globe 'mercury' then return mercuryquad(lat, lon) elseif globe 'moon' then return moonquad(lat, lon) elseif globe 'venus' then return venusquad(lat, lon) end end return 'Error' end function p.category(frame) local args = frame.args local res = quad_name(args['lat'] or , args['lon'] or , args['globe'] or ) if res ~= 'Error' then if args['nameonly'] and args['nameonly'] ~= then return res else return 'Kategori:' .. res .. ' dörtgeni' end end return end function p.name(frame) local args = frame.args local res = quad_name(args['lat'] or , args['lon'] or , args['globe'] or ) if res ~= 'Error' then return res end return '' end return p