Author |
Topic  |
|
Aelf
Acolyte
USA
46 Posts |
Posted - 30 Dec 2016 : 09:32:52
|
For my current game, we wanted to know how many hours of daylight there were in various locales and seasons on Toril. This is complicated by the long winter of 1488 DR (SCAG p15.)
Referencing Ed's reply on December 31st, 2004, and doing a bit of trig :) http://www.forum.candlekeep.com/topic.asp?TOPIC_ID=1901&whichpage=80
Waterdeep 45 deg N, pre 1488 DR
Hammer 15: 8h 6m
Midwinter: 8h 53m
Alturiak 15: 9h 47m
Ches 15: 11h 44m
Ches 19 Equinox: 12h 0m
Tarsakh 15: 13h 42m
Greengrass: 14h 42m
Mirtul 15: 15h 31m
Kythorn 15: 16h 26m
Kythorn 20 Solstice: 16h 27m
Flamerule 15: 15h 54m
Midsummer/Shieldmeet: 15h 7m
Eleasis 15: 14h 14m
Eleint 15: 12h 17m
Eleint 21 Equinox: 11h 58m
High Harvestide: 11h 14m
Marpenoth 15: 10h 15m
Uktar 15: 8h 29m
The Feast of the Moon: 7h 50m
Nightal 15: 7h 32m
Nightal 20 Solstice: 7h 32m
Waterdeep 45 deg N, post 1488 DR
Hammer 15: 7h 45m
Midwinter Solstice: 7h 32m
Alturiak 15: 7h 44m
Ches 15: 9h 3m
Tarsakh 15: 10h 56m
Greengrass Equinox: 12h 0m
Mirtul 15: 12h 59m
Kythorn 15: 14h 52m
Flamerule 15: 16h 14m
Midsummer/Shieldmeet Solstice: 16h 27m
Eleasis 15: 16h 16m
Eleint 15: 14h 57m
High Harvestide: 13h 59m
Marpenoth 15: 13h 1m
Marpenoth 30 Equinox: 12h 1m
Uktar 15: 11h 2m
The Feast of the Moon: 10h 0m
Nightal 15: 9h 5m
Silverymoon 51 deg N, pre 1488 DR
Hammer 15: 7h 3m
Midwinter: 8h 6m
Alturiak 15: 9h 14m
Ches 15: 11h 40m
Ches 19 Equinox: 12h 0m
Tarsakh 15: 14h 7m
Greengrass: 15h 22m
Mirtul 15: 16h 26m
Kythorn 15: 17h 42m
Kythorn 20 Solstice: 17h 43m
Flamerule 15: 16h 57m
Midsummer/Shieldmeet: 15h 55m
Eleasis 15: 14h 47m
Eleint 15: 12h 22m
Eleint 21 Equinox: 11h 57m
High Harvestide: 11h 3m
Marpenoth 15: 9h 50m
Uktar 15: 7h 35m
The Feast of the Moon: 6h 41m
Nightal 15: 6h 17m
Nightal 20 Solstice: 6h 16m
Silverymoon 51 deg N, post 1488 DR
Hammer 15: 6h 34m
Midwinter Solstice: 6h 16m
Alturiak 15: 6h 33m
Ches 15: 8h 19m
Tarsakh 15: 10h 41m
Greengrass Equinox: 12h 0m
Mirtul 15: 13h 13m
Kythorn 15: 15h 36m
Flamerule 15: 17h 24m
Midsummer/Shieldmeet Solstice: 17h 43m
Eleasis 15: 17h 27m
Eleint 15: 15h 42m
High Harvestide: 14h 28m
Marpenoth 15: 13h 16m
Marpenoth 30 Equinox: 12h 2m
Uktar 15: 10h 48m
The Feast of the Moon: 9h 31m
Nightal 15: 8h 21m
If you would like other locales run, let me know and I will post a reply. I will also look at automating the process on a webpage.
Note also that these calculations agree with Jerryd's midwinter length of day number for Silverymoon. (There are a number of assumptions here that will cause some inaccuracy, but it is a small amount.)
Finally, I will post the code to the script I wrote for those who might enjoy math and/or programming.
|
Regards, Aelf, a bard of the Realms |
|
Aelf
Acolyte
USA
46 Posts |
Posted - 30 Dec 2016 : 09:33:49
|
#!/usr/bin/env ruby
include Math
def d2r(d)
d*Math::PI/180.0
end
def r2d(r)
r*180.0/Math::PI
end
# from Candlekeep discussion with Ed Greenwood 31 December 2004
# http://www.forum.candlekeep.com/topic.asp?TOPIC_ID=1901&whichpage=80&SearchTerms=axial%2Ctilt
AXIAL_TILT_DEGREES = 28.883333
SOLAR_DAYS_PER_YEAR = 365.0
HOURS_PER_SOLAR_DAY = 24.0
DEGREES_PER_HOUR = 360.0 / HOURS_PER_SOLAR_DAY
# calculations based on:
# http://www.jgiesen.de/astro/solarday.htm
# (site contains errors, which have been corrected here)
def delta_from_day_of_year(northern_spring_equinox_day_of_year, day_of_year)
orbital_position_degrees = (day_of_year-northern_spring_equinox_day_of_year)/SOLAR_DAYS_PER_YEAR
-1 * AXIAL_TILT_DEGREES * sin(2*PI*orbital_position_degrees)
end
def hours_of_sunlight(northern_spring_equinox_day_of_year, latitude_degrees, day_of_year)
delta = delta_from_day_of_year(northern_spring_equinox_day_of_year, day_of_year)
r2d(acos(tan(d2r(latitude_degrees))*tan(d2r(delta)))) / (DEGREES_PER_HOUR / 2.0)
end
# based on http://stackoverflow.com/questions/4136248/how-to-generate-a-human-readable-time-range-using-ruby-on-rails
def humanize(mins)
[[60, :m], [24, :h], [1000, :d]].map{ |count, name|
if mins > 0
mins, n = mins.divmod(count)
"#{n.to_i}#{name}"
end
}.compact.reverse.join(' ')
end
FDate = Struct.new(:name, :day_of_year) do
def at_latitude_degrees(northern_spring_equinox_day_of_year, latitude_degrees)
"#{name}: #{humanize(60*hours_of_sunlight(northern_spring_equinox_day_of_year, latitude_degrees, day_of_year))}"
end
end
FYear = Struct.new(:northern_spring_equinox_day_of_year, :dates) do
def print_date_day_lengths(latitude_degrees)
dates.each { |date| puts date.at_latitude_degrees(northern_spring_equinox_day_of_year, latitude_degrees)}
end
end
# FRCS p77
FrcsYear = FYear.new(
80,
[
FDate.new('Hammer 15', 15),
FDate.new('Midwinter', 31),
FDate.new('Alturiak 15', 46),
FDate.new('Ches 15', 76),
FDate.new('Ches 19 Equinox', 80),
FDate.new('Tarsakh 15', 106),
FDate.new('Greengrass', 122),
FDate.new('Mirtul 15', 137),
FDate.new('Kythorn 15', 167),
FDate.new('Kythorn 20 Solstice', 172),
FDate.new('Flamerule 15', 197),
FDate.new('Midsummer/Shieldmeet', 213),
FDate.new('Eleasis 15', 228),
FDate.new('Eleint 15', 258),
FDate.new('Eleint 21 Equinox', 263),
FDate.new('High Harvestide', 274),
FDate.new('Marpenoth 15', 289),
FDate.new('Uktar 15', 319),
FDate.new('The Feast of the Moon', 335),
FDate.new('Nightal 15', 350),
FDate.new('Nightal 20 Solstice', 355)
]
)
# SCAG p15
ScagYear = FYear.new(
122,
[
FDate.new('Hammer 15', 15),
FDate.new('Midwinter Solstice', 31),
FDate.new('Alturiak 15', 46),
FDate.new('Ches 15', 76),
FDate.new('Tarsakh 15', 106),
FDate.new('Greengrass Equinox', 122),
FDate.new('Mirtul 15', 137),
FDate.new('Kythorn 15', 167),
FDate.new('Flamerule 15', 197),
FDate.new('Midsummer/Shieldmeet Solstice', 213),
FDate.new('Eleasis 15', 228),
FDate.new('Eleint 15', 258),
FDate.new('High Harvestide', 274),
FDate.new('Marpenoth 15', 289),
FDate.new('Marpenoth 30 Equinox', 304),
FDate.new('Uktar 15', 319),
FDate.new('The Feast of the Moon', 335),
FDate.new('Nightal 15', 350)
]
)
ARGV.each do |arg|
latitude_degrees = arg.to_f
puts "FRCS (pre 1488 DR) Latitude: #{latitude_degrees}"
FrcsYear.print_date_day_lengths(latitude_degrees)
puts
puts "SCAG (post 1488 DR) Latitude: #{latitude_degrees}"
ScagYear.print_date_day_lengths(latitude_degrees)
puts
end
|
Regards, Aelf, a bard of the Realms |
 |
|
Markustay
Realms Explorer extraordinaire
    
USA
15724 Posts |
Posted - 30 Dec 2016 : 16:15:22
|
Except everyone who tried to do this before forgot one thing - planetary physics. I have created a Map of Toril with timezones, for just such purposes.
Not that the people of FR have the concept of 'time zones', or latitude and longitude - this map is more of a 'game aid' for DMs (and players) and would never exist in-game. Toril is roughly the same size and has the same axial tilt as Earth. If you use this and the Calender of Harptos, and compare them to RW locales and dates, you should be able to approximate weather conditions and daylight hours from there.
Some common sense needs to be applied - things like ocean & wind currents, and most certainly altitude, will drastically affect temperature (among other things). |
"I have never in my life learned anything from any man who agreed with me" --- Dudley Field Malone
|
 |
|
BadCatMan
Senior Scribe
  
Australia
401 Posts |
Posted - 31 Dec 2016 : 02:06:40
|
Actually, Markus, those time-zones would be vital even for folk in Faerun. Take a portal or teleport halfway across the continent and they'll see a change from night to day, morning to afternoon. Teleport-lag will be much more extreme than jet-lag.
Right now, I have a PC being transported from Wa in far eastern Kara-Tur to the Moonsea. With your map, I know she's losing six hours. With as much transcontinental travel as I see, this is amazingly useful, thanks. :D |
BadCatMan, B.Sc. (Hons), M.Sc. Scientific technical editor Head DM of the Realms of Adventure play-by-post community Administrator of the Forgotten Realms Wiki |
 |
|
sleyvas
Skilled Spell Strategist
    
USA
12028 Posts |
Posted - 31 Dec 2016 : 09:38:32
|
quote: Originally posted by Aelf
For my current game, we wanted to know how many hours of daylight there were in various locales and seasons on Toril. This is complicated by the long winter of 1488 DR (SCAG p15.)
Referencing Ed's reply on December 31st, 2004, and doing a bit of trig :) http://www.forum.candlekeep.com/topic.asp?TOPIC_ID=1901&whichpage=80
Waterdeep 45 deg N, pre 1488 DR
Hammer 15: 8h 6m
Midwinter: 8h 53m
Alturiak 15: 9h 47m
Ches 15: 11h 44m
Ches 19 Equinox: 12h 0m
Tarsakh 15: 13h 42m
Greengrass: 14h 42m
Mirtul 15: 15h 31m
Kythorn 15: 16h 26m
Kythorn 20 Solstice: 16h 27m
Flamerule 15: 15h 54m
Midsummer/Shieldmeet: 15h 7m
Eleasis 15: 14h 14m
Eleint 15: 12h 17m
Eleint 21 Equinox: 11h 58m
High Harvestide: 11h 14m
Marpenoth 15: 10h 15m
Uktar 15: 8h 29m
The Feast of the Moon: 7h 50m
Nightal 15: 7h 32m
Nightal 20 Solstice: 7h 32m
Waterdeep 45 deg N, post 1488 DR
Hammer 15: 7h 45m
Midwinter Solstice: 7h 32m
Alturiak 15: 7h 44m
Ches 15: 9h 3m
Tarsakh 15: 10h 56m
Greengrass Equinox: 12h 0m
Mirtul 15: 12h 59m
Kythorn 15: 14h 52m
Flamerule 15: 16h 14m
Midsummer/Shieldmeet Solstice: 16h 27m
Eleasis 15: 16h 16m
Eleint 15: 14h 57m
High Harvestide: 13h 59m
Marpenoth 15: 13h 1m
Marpenoth 30 Equinox: 12h 1m
Uktar 15: 11h 2m
The Feast of the Moon: 10h 0m
Nightal 15: 9h 5m
Silverymoon 51 deg N, pre 1488 DR
Hammer 15: 7h 3m
Midwinter: 8h 6m
Alturiak 15: 9h 14m
Ches 15: 11h 40m
Ches 19 Equinox: 12h 0m
Tarsakh 15: 14h 7m
Greengrass: 15h 22m
Mirtul 15: 16h 26m
Kythorn 15: 17h 42m
Kythorn 20 Solstice: 17h 43m
Flamerule 15: 16h 57m
Midsummer/Shieldmeet: 15h 55m
Eleasis 15: 14h 47m
Eleint 15: 12h 22m
Eleint 21 Equinox: 11h 57m
High Harvestide: 11h 3m
Marpenoth 15: 9h 50m
Uktar 15: 7h 35m
The Feast of the Moon: 6h 41m
Nightal 15: 6h 17m
Nightal 20 Solstice: 6h 16m
Silverymoon 51 deg N, post 1488 DR
Hammer 15: 6h 34m
Midwinter Solstice: 6h 16m
Alturiak 15: 6h 33m
Ches 15: 8h 19m
Tarsakh 15: 10h 41m
Greengrass Equinox: 12h 0m
Mirtul 15: 13h 13m
Kythorn 15: 15h 36m
Flamerule 15: 17h 24m
Midsummer/Shieldmeet Solstice: 17h 43m
Eleasis 15: 17h 27m
Eleint 15: 15h 42m
High Harvestide: 14h 28m
Marpenoth 15: 13h 16m
Marpenoth 30 Equinox: 12h 2m
Uktar 15: 10h 48m
The Feast of the Moon: 9h 31m
Nightal 15: 8h 21m
If you would like other locales run, let me know and I will post a reply. I will also look at automating the process on a webpage.
Note also that these calculations agree with Jerryd's midwinter length of day number for Silverymoon. (There are a number of assumptions here that will cause some inaccuracy, but it is a small amount.)
Finally, I will post the code to the script I wrote for those who might enjoy math and/or programming.
Ok, I'm going to go with... you goodsir are officially a geek... which is not a bad thing mind you. In fact, I use that appellation with pride. |
Alavairthae, may your skill prevail
Phillip aka Sleyvas |
 |
|
Markustay
Realms Explorer extraordinaire
    
USA
15724 Posts |
Posted - 31 Dec 2016 : 18:44:20
|
Oh, and I realize I may have come off a bit 'd**ky', but that was not my intent. You did excellent work there (much more math than I bothered with - I merely lifted the Mercator Projection off of a Hammond World map and used the two known latitudinal points to extrapolate the rest... so I guess I used algebra, 'sideways', sort of...).
Any 'ire' I may have inadvertently displayed was with the original post you based your projections on; I hadn't checked if it was the one I was thinking of, but I recall someone figuring out the 'six months of night' in Icewind Dale using information in the novels, and then using that (preposterous) data to figure the daylight hours of Silverymoon. You can't achieve mathematical success when your basic premise is flawed - Icewind Dale falls WELL below the Arctic Circle.
In order to rectify the weather there, one simply as to say that everything ABOVE the Spine of the World mountains sits on a vast, mile-high plateau. As for the daylight hours thing - the entire area was settled by drunken losers who probably mistake the shadow of the mountain (Kelvin's Cairn) for 'six months of night' (they also loose track of time, the inebriated bastiches!). 
|
"I have never in my life learned anything from any man who agreed with me" --- Dudley Field Malone
|
Edited by - Markustay on 31 Dec 2016 18:48:01 |
 |
|
Ayrik
Great Reader
    
Canada
7989 Posts |
Posted - 01 Jan 2017 : 00:27:55
|
Are these calculations based off data for Earth/Sun orbits, rotations, latitude, etc?
If they are, then it seems much simpler to just lookup the sunrise/sunset times at equivalent locations and days on Earth.
There used to be some (made by smart fans yet easy to use by not-so-smart fans) Spelljammer software which simulated orbital movements/positions for all major Realmspace objects. Sunrise, sunset, moonrise, moonfall, satellite phases, etc, at any place and any time within the system could easily be calculated. Alas, it seems I never kept copies around, I don't recall what the better ones were called, and I have no idea where (or even if) they might be downloaded. |
[/Ayrik] |
 |
|
Aelf
Acolyte
USA
46 Posts |
Posted - 03 Jan 2017 : 01:02:30
|
Thank you for all the responses.
quote: Originally posted by Sleyvas Ok, I'm going to go with... you goodsir are officially a geek
Many thanks for the compliment!
quote: Originally posted by Markustay ... and I realize I may have come off a bit ...
Rest easy, neighbor. No offense was taken.
quote: Originally posted by Ayrik
Are these calculations based off data for Earth/Sun orbits, rotations, latitude, etc?
The calculations use the Axial Tilt and Latitude information (which do not equal those of Earth) from forum responses from Ed, as well as calendar information from the 3.0 FRCS and 5e SCAG. Also, Markustay has done a lot of awesome work on maps, which I referenced as a useful, consistent source.
Finally, there are a number of simplifications in the model, but the result is mostly within 2% (and often closer) than much more difficult calculations. In particular, expect goofy values between the poles and the (an)arctic circles as well as ignoring solstice drift due to leap days. Also, daylight begins and ends a little earlier than sunrise/sunset because the atmosphere is lighted before the sun appears, and remains lighted after the sun disappears.
If you wish to chat more about math or need more numbers for your game, please let me know.
Happy Adventuring, Aelf Thistlethwaite
|
 |
|
KanzenAU
Senior Scribe
  
Australia
763 Posts |
|
George Krashos
Master of Realmslore
    
Australia
6680 Posts |
Posted - 02 Feb 2017 : 03:39:24
|
Fantastic work. Can you please run Lyrabar in Impiltur? Thanks ever so much.
-- George Krashos |
"Because only we, contrary to the barbarians, never count the enemy in battle." -- Aeschylus |
 |
|
|
Topic  |
|
|
|