Horizontal sundial calculations: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (Added Perl example) |
m (→{{header|Haskell}}: (minor tidying)) |
||
Line 1,018: | Line 1,018: | ||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<lang haskell> |
<lang haskell>roundDec :: Int -> Double -> Double |
||
⚫ | |||
radToDegr = ((180 / pi) *) |
|||
roundDec :: Int -> Double -> Double |
|||
⚫ | |||
degrToRad = ((pi / 180) *) |
|||
degrToRad = ((pi/180)*) |
|||
main = do |
main = do |
||
let lat |
let lat = -4.95 |
||
long |
long = -150.5 |
||
legalMerid = -150 |
legalMerid = -150 |
||
sinOfLat |
sinOfLat = sin $ degrToRad lat |
||
diff |
diff = legalMerid - long |
||
(putStrLn . unlines) |
|||
[ "Latitude " ++ show lat |
|||
, "Longitude " ++ show long |
|||
, "Legal meridian " ++ show legalMerid |
|||
, "Sine of latitude " ++ show (roundDec 6 sinOfLat) |
|||
, "Diff longitude " ++ show (-diff) |
|||
, "hour sun hour angle dial hour line angle" |
|||
] |
|||
mapM_ |
|||
let sha = diff + 15*h |
|||
(\h -> |
|||
⚫ | |||
let sha = diff + 15 * h |
|||
⚫ | |||
⚫ | |||
in putStrLn $ |
|||
take 7 (show h ++ repeat ' ') ++ |
|||
⚫ | |||
⚫ | |||
" " ++ show (roundDec 3 dhla)) |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre>*Rosetta.HorSunDial> main |
<pre>*Rosetta.HorSunDial> main |