The latest versions of Wolfram have many new interesting features. I sometimes catch myself not studying them enough, continuing to use what is already known. This post serves as an illustration of both some new functions and the capabilities of the old. Would be very grateful for any improvements and feedback!
Introduction
Introduction
As DeepSeek said:
The full moon hangs high in the inky sky, a luminous specter casting eerie silver light over the world below.
Its cold, unblinking gaze turns familiar landscapes into ghostly silhouettes,
while long shadows stretch like grasping fingers across the ground.
The sheer size of it, swollen and impossibly bright, feels both awe-inspiring and unsettling —
as if it’s watching, waiting...
The full moon hangs high in the inky sky, a luminous specter casting eerie silver light over the world below.
Its cold, unblinking gaze turns familiar landscapes into ghostly silhouettes,
while long shadows stretch like grasping fingers across the ground.
The sheer size of it, swollen and impossibly bright, feels both awe-inspiring and unsettling —
as if it’s watching, waiting...
Looking once again at high full Moon, I thought:
can we make some kind of calendar for such events?
First, we need to define the requirements, what does it mean: "inky sky", "high" etc.
can we make some kind of calendar for such events?
First, we need to define the requirements, what does it mean: "inky sky", "high" etc.
Requirements: shortlist
Requirements: shortlist
1. The Moon should be full.
2. It have to be in upper culmination.
3. There must be night.
4. And... May be SuperMoon?
We will clarify these conditions in the following sections.
2. It have to be in upper culmination.
3. There must be night.
4. And... May be SuperMoon?
We will clarify these conditions in the following sections.
Position
Position
You can enter any of your favorite places, or coordinates directly
Next cell is editable and should be evaluated
In[]:=
place=;position=GeoPosition[place];timeZone=⌈LocalTimeZone[position,"NumericOffset"]⌉
Out[]=
1
Date range to explore
Date range to explore
Next cell is editable and should be evaluated
In[]:=
dates=DateInterval[{DateObject[{2025,4,10,0}],DateObject[{2026,4,10,0}]},TimeZonetimeZone]
Out[]=
DateInterval
Culminations
Culminations
Minimum and maximum
Minimum and maximum
How high can we actually see the moon in given place over a long period of time? Firstly we should calculate highest point of celestial equator, which is 90° minus geo altitude.Secondly we need to add maximal ecliptic declination which is 23.44°. This result is also affected by deviation of the moon from the ecliptic which maximum is 5.14°.
This is initialization cell running automatically at first run of notebook
In[]:=
Clear[minMaxCulminations];minMaxCulminations[pos_]:=Block[{ϵ=23.44,δ=5.14,λ=Abs@QuantityMagnitude@Latitude@pos},{90-ϵ-δ,90+ϵ+δ}-λ];
In[]:=
minMaxCulminations[position]
Out[]=
{9.92,67.08}
Get data
Get data
Let’s get all the upper culminations of the Moon in chosen place for a given time period
Next cell should be evaluated; it takes 5-10 sec.
Internet connection and WM version >14.1 required.
There are currently bugs in this function, so need a correction. I wrote in support, hopefully this will be corrected.
Internet connection and WM version >14.1 required.
There are currently bugs in this function, so need a correction. I wrote in support, hopefully this will be corrected.
In[]:=
event=If[QuantityMagnitude@Latitude@position<=0,"LowerCulmination","UpperCulmination"];upperCulminations=AstroRiseSet[Entity["PlanetaryMoon","Moon"],event,position,dates,TimeZone->timeZone];
Time and phase conditions
Time and phase conditions
What is "the night"? Due to observing of the Mon, the most suitable definition related to different types of twilight.Let's select nautical type:
In[]:=
maxSolAngle=Quantity[12,"Degree"];timeCondition[date_,pos_,ang_]:=Last@SunPosition[pos,date]<ang;
Now let’s define the phase. Consider a full moon phase more than 0.95, but user can choose their value
In[]:=
fullPhase=0.95;phaseCondition[date_,full_]:=MoonPhase@date>full;
First Selection
First Selection
Now we can choose the nightly culminations close to the full moon
Next cell should be evaluated
In[]:=
selectedData=Select[upperCulminations,timeCondition[#,position,maxSolAngle]&&phaseCondition[#,fullPhase]&];selectedData//Short
Out[]//Short=
,49,
Before we create a calendar, remember about
Super Moon
Super Moon
A Supermoon is a full moon that nearly coincides with perigee — the closest that the Moon comes to the Earth in its orbit—resulting in a slightly larger-than-usual apparent size of the lunar disk.
Unfortunately Mathematica has no built-in, no resource function for Earth-Moon distance. So here is some custom function, based on this paper.
It works well ±500 years from 2000. Function moonDistScaled returns approximate lunar disk size relative to average in percent.
It works well ±500 years from 2000. Function moonDistScaled returns approximate lunar disk size relative to average in percent.
Initialization cell
In[]:=
Clear[moonDistance,moonDistScaled];moonDistance[date_]:=Block[{t=QuantityMagnitude@DateDifference[date,DateObject[{2000,1,1}]],γ,δ},γ=134.963411°+13.064992953°t;δ=297.850204°+12.190749117°t;Quantity[385000.5584-20905.3550Cos[γ]-3699.1109Cos[2δ-γ]-2955.9676Cos[2δ]-569.9251Cos[2γ],"km"]];moonDistScaled[dist_]:=Block[{ma=406720,mp=356352,sa=93,sp=107},Quantity[⌈Rescale[dist,{mp,ma},{sp,sa}]⌉,"Percent"]];
Make dataset
Make dataset
Let’s look at the preliminary data
Next cell should be evaluated
We see fool moon nightly culminations appear several days in a row but at different heights. We can combine the nearest dates by highlighting the one with max height.
Next cell should be evaluated
Initialization cell
Next cell should be evaluated
Spooky Moon Calendar
Spooky Moon Calendar
Colors
Colors
Printable version
Printable version
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Astronomy with Mathematica: Spooky moon calendar
by Denis Ivanov
Wolfram Community, STAFF PICKS, April 14, 2025
https://community.wolfram.com/groups/-/m/t/3443595
by Denis Ivanov
Wolfram Community, STAFF PICKS, April 14, 2025
https://community.wolfram.com/groups/-/m/t/3443595