$stars=Image@ImageData
,DataReversedTrue;​​​​(*​​Plotter:GeneratesaPlotoftheareabetweentwolines​​functions:twoexpressionsoftheforma+b*xdescribingtherighthandsideofdefinitions​​oftheSymboly.Thatis,y=a+b*xisthelinespecifiedbyeachoftheFunctions​​startingValue:thesmallestvaluefortheSymbolx​​endingValue:thelargestvaluefortheSymbolx​​linesQ:BooleanvaluespecifyingwhethertheLinesthemselvesshouldbedrawn​​shade:anOpacityvaluespecifyingthefillbetweenthetwolines;maybezerofornofill​​s:SymbolindicatingtheindependentvariablebeingPlotted;defaultstox​​*)​​Plotter[functions_,startingValue_,endingValue_,linesQ_,shade_,s_Symbol:Symbol["x"]]:=​​Module[{plotStyle},​​plotStyle=If[linesQ,{Thickness@.002,Dashed,White},None];​​Plot[​​functions,​​{s,startingValue,endingValue},​​PlotStyle{plotStyle},​​Filling{1{{2},shade}},​​PrologRaster[Show[$stars][[1,1]],{Scaled[{0,0}],Scaled[{1,1}]}],​​BackgroundBlack​​]​​];​​​​AngleShrunkRange[ρ_]:=Module[{τ=Mod[ρ,2π]},If[τ>π,τ-2π,τ]];​​​​NormalVector2D[{x_,y_}]:={-y,x};​​​​TwoPointIntersection[{{x1_,y1_},{x2_,y2_}},{{x3_,y3_},{x4_,y4_}}]:=​​Module[{x21d=x2-x1,x43d=x4-x3,y21d=y2-y1,y43d=y4-y3,​​d,xnf1,xnf2,ynf1,ynf2,xn,yn,cf1,cf2,x,y},​​d=(x21d*y43d)-(x43d*y21d);​​cf1=(x2*y1-x1*y2);​​cf2=(x4*y3-x3*y4);​​xnf1=cf1*x43d;​​xnf2=cf2*x21d;​​ynf1=cf1*y43d;​​ynf2=cf2*y21d;​​x=(xnf1-xnf2)/d;​​y=(ynf1-ynf2)/d;​​{x,y}​​];​​​​TwoPoint2SlopeIntercept[{x1_,y1_},{x2_,y2_}]:=​​Module[{xd,yd},​​xd=If[x1==x2,.0001,x2-x1];​​yd=If[y2==y1,.0001,y2-y1];​​{yd/xd,-((x1*yd)/xd)+y1}​​];
​
Eclipse Geometry
Total Solar
Annular Solar
Partial Solar
Total Lunar
Partial Lunar
Penumbral Lunar
Custom
Moon umbra
Moon penumbra
Earth umbra
Earth penumbra
Shadow border lines
Moon orbital position
0.42
Sun radius
4
Sun-Earth Distance
17.9
Earth radius
1.6
Earth-Moon distance
4.5
Moon radius
0.5
​
$Failed