Candlekeep Forum
Candlekeep Forum
Home | Profile | Register | Active Topics | Active Polls | Members | Private Messages | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Forgotten Realms Journals
 General Forgotten Realms Chat
 Seasonal Daylight Hours on Toril
 New Topic  New Poll New Poll
 Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Aelf
Acolyte

USA
46 Posts

Posted - 30 Dec 2016 :  09:32:52  Show Profile Send Aelf a Private Message  Reply with Quote  Delete Topic
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  Show Profile Send Aelf a Private Message  Reply with Quote

#!/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
Go to Top of Page

Markustay
Realms Explorer extraordinaire

USA
15724 Posts

Posted - 30 Dec 2016 :  16:15:22  Show Profile Send Markustay a Private Message  Reply with Quote
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

Go to Top of Page

BadCatMan
Senior Scribe

Australia
401 Posts

Posted - 31 Dec 2016 :  02:06:40  Show Profile Send BadCatMan a Private Message  Reply with Quote
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
Go to Top of Page

sleyvas
Skilled Spell Strategist

USA
12028 Posts

Posted - 31 Dec 2016 :  09:38:32  Show Profile Send sleyvas a Private Message  Reply with Quote
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
Go to Top of Page

Markustay
Realms Explorer extraordinaire

USA
15724 Posts

Posted - 31 Dec 2016 :  18:44:20  Show Profile Send Markustay a Private Message  Reply with Quote
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
Go to Top of Page

Ayrik
Great Reader

Canada
7989 Posts

Posted - 01 Jan 2017 :  00:27:55  Show Profile Send Ayrik a Private Message  Reply with Quote
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]
Go to Top of Page

Aelf
Acolyte

USA
46 Posts

Posted - 03 Jan 2017 :  01:02:30  Show Profile Send Aelf a Private Message  Reply with Quote
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
Go to Top of Page

KanzenAU
Senior Scribe

Australia
763 Posts

Posted - 01 Feb 2017 :  12:15:56  Show Profile Send KanzenAU a Private Message  Reply with Quote
I'd be quite interested in using your code to figure this out for other destinations as needed, Aelf!

Having not done anything with code since high school (a long time ago), any chance you could instruct us how to use it? I'd have no idea where to start, what kind of variables does it need as input to spit out data? What program should we copy and paste this into, etc?

Regional maps for Waterdeep, Triboar, Ardeep Forest, and Cormyr on DM's Guild, plus a campaign sized map for the North
Go to Top of Page

George Krashos
Master of Realmslore

Australia
6680 Posts

Posted - 02 Feb 2017 :  03:39:24  Show Profile Send George Krashos a Private Message  Reply with Quote
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
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  New Poll New Poll
 Reply to Topic
 Printer Friendly
Jump To:
Candlekeep Forum © 1999-2025 Candlekeep.com Go To Top Of Page
Snitz Forums 2000