Total Eclipse with full 3D umbra shadow cone

I was contemplating this years ago, but I never got around to it till now.

Using nothing but this illustration
http://kja-illustrators.com/open.asp?port=341&n=Total-Solar-Eclipse-Geometry%203D%20illustration&p=23140

and basic math (point to point line, slope-intercept line, algebra, and trig) I figured how to calculate the 3D umbra cone. The only data I used is the Simon1994PlanetaryPositions built into Cesium itself, and Sun/Moon radius.

Pleasantly surprised to find that the cone to globe intercepts matched that found here

The 3D umbra cone is educational. It does not reach that far, and a combination of factors have to line up:
-The closer the Earth is to the Moon the better (deeper into the cone the Earth is.)
-The further the Moon is from the Sun the better (the more elongated the cone becomes.)

Going to test a couple more total eclipse dates, then finish up making a penumbra cone.

Just added 2021 Dec 04 total eclipse

It also matches up with Eclipsetracks.org - Interactive Solar Eclipses with CesiumJS

I must say Iā€™m very impressed by Cesiumā€™s built-in astronomical data and shapes!
Hereā€™s the eclipse list Iā€™m using to find total eclipses
List of solar eclipses in the 21st century - Wikipedia

OK, this is the last total eclipse 3D umbra video before I add the penumbra cone. This one zips right down the middle of North America, and appears to be a good sized intersection.

As usual it matches up with Eclipsetracks.org - Interactive Solar Eclipses with CesiumJS

This is very cool! How long did this take you to put together? Are all these cones just really long geometry created with the Entity API?

Thanks! All of the geometry is done with scene.primitives (same with compass pointers), an umbra cone is created whenever the day changes. Finding what I call ā€˜point umbraā€™ (tip of the cone) didnā€™t take long, just used 2D cross-section math to find the intersection of 2 lines:
-line top of Sun to top of Moon
-line bottom of Sun to bottom of Moon
I used the Moon center for the cone base (and Moon radius for cone radius), and point umbra to moon center is the length of the cone. Every frame would update cone position and orientation. I donā€™t update the cone length every frame but the change over the course of a few hours would be very minuscule anyhow. The cone length is set at the start of that day. (currently as you change days youā€™ll end up with a few discarded cones here and there.)

The astronomical data that Cesium uses is very good. Apparently itā€™s from 1994, but using that data it seems to be dead on accurate for the 2024 Apr 08 total eclipse 30 years later! Thatā€™s the only data that I use for all primitives shown.

Penumbra is a slightly more difficult to calculate, but still fairly easy. ā€˜Point Penumbraā€™, or the tip of the cone, is shared between 2 cones, facing 180 degrees from each-other. I calculate point penumbra and the cone angle for one, which will be the same cone angle for the other. I then use this cone angle to determine what base radius I need for whichever length I choose (probably no more than to Earthā€™s center.) Iā€™ll try to show the penumbra cone with a low alpha so you can easily see the umbra cone within it.

After that Iā€™ll do the same for Earthā€™s shadow onto the Moon. Iā€™ll try to put it all into a function where you just input Sun pos/radius and ā€˜shadow creating objectā€™ pos/radius and it returns 2 shadow cones emanating from that object.

Alright, I got both umbra and penumbra cones all in one on this video

I must say, the 2024 Apr 08 Eclipse is definitely the North American Eclipse! The only part of North America not in the penumbra is, well, most of Alaska.

Is there a way to not show the bottom texture of cylinder/cone primitives when seen from through their sides? Thatā€™s the reason why I put the camera within the penumbra cone for most of the video, so I can see the Earth surface texture under it.

Now off to making umbra/penumbra cones for Earth onto the Moon. This should be easy, using the same code, different parameters.

EDIT: well Iā€™m done with umbra/penumbra cones for Earth onto the Moon. And wow is it easy to get the entire moon totally eclipsed due to the huge size of the umbra cone. However due to visibility between the Moon model and cylinder/cone primitives Iā€™m having trouble making a good video on the phenomenon. I have all cylinders set to transparent, but they still hide the moon even if you put the camera inside the cone primitive! Perhaps I could make a model to supersede the Moon model thatā€™ll show up better.

I did just that, made a model that goes around the Cesium Moon model, same size/shape. Well its border shows up once inside the transparent primitives (shadow cones.) Itā€™s not quite what Iā€™d like, but I think itā€™s enough to get a good sense of the dimensions of the cones in relation to the dimensions of the Moon. Iā€™ve made the penumbra cone green, and umbra cone red. I also made the blue arrow point toward instead of away from Earth.

The movement is kind of weird because I move the camera relative to the Earth Fixed coordinate system, so much of the time Iā€™m chasing the Moon as the Earth spins. Not only that, but the spin is at a 23.5 degree tilt from orbital planes making me move diagonally. However itā€™s a piece of cake with a 3DMouse!

This upcoming lunar eclipse this week isnā€™t a total eclipse, in fact it isnā€™t that impressive at all as far as eclipses go, but I thought Iā€™d share what I discovered using these tools.

The 3D views in Cesium is very educational for (Sun,Earth,Moon) astronomy:
-All 3 ellipsoids (Sun,Earth,Moon) are shown accurately (size, position).
-All 2 shadow cones (Umbra,Penumbra) are shown accurately (size, position).
Because of this I was able to determine many eclipse details.

On 2020 Jul 05 (BTW these times occur late Jul 04 for the United States)
03:00 UTC Moon enters Earthā€™s penumbra cone
04:30 UTC Just over 1/3 the Moon (north part) is in penumbra cone (max for this eclipse)
05:45 UTC Moon leaves Earthā€™s penumbra cone

-The southern portion of the eclipse: only a very small section of the Sun is blocked by the Earth
-The northern portion of the eclipse: only about 1/3 of the Sun is blocked by the Earth (not all that dark)
-As you walk south to north on the moon the amount blocked gradually rises from 0 to 1/3.

Using my plugin readout one can also quickly find other stats:

at 04:30 UTC
Florida: the Moon will be around 36deg above horizon
New York: the Moon will be around 24deg above horizon
So Cal: the Moon will be around 14deg above horizon
Seattle Wash: the Moon will be around 1.6deg above horizon (need to seek unobstructed high ground to view)

A recent news video showing 2D graphics of the event
youtube.com/watch?v=YZIvB48N31I
2D graphics just arenā€™t sufficient. The 2D map shows some weird curves. In 3D itā€™s just a simple, easy to understand cone to ellipsoid intersection. Also those 2D graphics canā€™t properly show the Moon only partially entering the penumbra cone.

1 Like

Thatā€™s really cool that youā€™re able to see a lot of things here with Cesium that just arenā€™t very intuitive or easy to see in all those educational animation videos. It would be pretty cool to see a little tutorial about how others can create these, or maybe an open source GitHub repo that others can build off of your code!

Thanks! The eclipse code I use is actually quite short, less than 100 lines. It might make a good sandcastle demo. Cesium already has Sun and Moon calculations built in, which is where I get all my astronomical data from. Perhaps have an option for the camera to rotate around the Earth for Solar eclipses, and the Moon for Lunar eclipses. I still havenā€™t figured out how to remove primitives yet, currently I just make new shadow cones (with a newly calculated length) when a certain time has passed, with the previous discarded cone just sort of hanging out where I last updated it. I should have some freetime soon where I can transfer it to a sandcastle (or other type of) project. Iā€™ll be sure to post back here once I start making some progress on it.

Hereā€™s a video going through 2020 in 5 minutes looking for close calls that may or not be eclipses

Kinda boring to watch, but somewhat educational learning how factors like the distance between the Earth and Moon can have on Eclipses.

I made some code adjustments after this to skip many days for when I do this for 2021, so the 2021 video will barely be over 2 minutes long.

1 Like

Wow, time flies! The 2024 North American eclipse occurs tomorrow.2024 Apr 08. Penumbra covering basically the whole continent and umbra traveling from the tip of Baja California to Maine.

I came across this, as I am developing a nearly identical tool. Though, I have cut the umbral length short as I do not require visualizing the entire umbra. Sandcastle Link

For the tool I am developing, it is incredibly important that the ā€œbottomā€ of the radius of the cylinder lines up exactly with the radius of the earth where the shadow lies. However, as you can see, my approximation of the radius is off by a few kilometers. I canā€™t tell from your video, but did you find out a way to get the earthā€™s precise radius from the vantage point of the end of the umbra length (or the sun, it would be the same either way)? I also have concerns about my approximation of the sunā€™s radius, how did you create a line from the bottom of the sun to the top of the moon?