forrestguice / SuntimesWidget

Android app (and widget collection) that displays sunlight and moonlight times.
GNU General Public License v3.0
319 stars 59 forks source link

Inconsistent moon illumination numbers #384

Closed sjvudp closed 1 year ago

sjvudp commented 4 years ago

I noticed that the moon illumination percentage differs significantly between main screen and moon details:

Main screen says "1% illuminated" (in German): Suntimes_20191224-205521

Detail screen says 2.2% illuminated (in German): Suntimes_20191224-205531

Both screen shots were taken within a few seconds. Obviously one of the numbers cannot be correct.

forrestguice commented 4 years ago

The difference is explained briefly on the "Help" page. The "moon dialog' shows the current illumination, while the "main table" displays illumination at lunar noon..

sjvudp commented 4 years ago

Ooops, quite confusing. Would it be hard to add the time of lunar noon (like instead of "1% illuminated" use "1% illuminated at HH:MM")?

forrestguice commented 4 years ago

Sounds like a sensible idea. The main table could display "at HH:MM" and the dialog could display "right now". At the moment the lunar noon info isn't available at all, its missing from the UI, so this would fix both problems.

As to how hard.. well I've got some perfectionist tendencies so its probably "impossible" without aggravating existing problems like #207. Maybe if the word "illuminated" was dropped (its implied) there may be room for lunar noon info without pushing it onto a new line.

ericjs commented 3 years ago

I'm not sure if I should file this as a separate issue, but it seems related: on the main page, yesterday (29 Nov 2020) it showed Waxing Gibbous, 100% illuminated, and swiping to see the info for the next day (30 Nov 2020) it showed Full Moon, 98% illuminated. It would seem that the text description of the mood phase and the % illumination aren't either based on the same lunar noon assumption, or one of the calculations has a bug.

forrestguice commented 3 years ago

Confusing but probably not inaccurate. The "Full Moon" label is applied to the entire day but the full moon is actually an instant, so its never going to be "Full Moon 100%" unless the time of the full moon coincides with lunar noon. So "Waxing Gibbous 100%" is expected if lunar noon and the instant of full moon are close to each other but on different sides of the dateline.

In your example, lunar noon on the 29th is very close to the full moon, but the instant of the full moon actually occurs on the 30th. Likewise, lunar noon on the 30th occurs after the instant of the full moon, but the day is labeled "Full Moon" because its the date that contains that instant.

ericjs commented 3 years ago

I see. I would suggest that for both what I reported, and for what OP reported the common cause of dissonance is the lunar-noon-based element, and would suggest that this is also the least intuitive or useful, as most people aren't thinking about lunar noon. One alternative I can think of would be reporting the range of %ages that occur across that day, so it might be 96-100% on Nov 30th and maybe 97-100% on Nov 29 (only reaching 100% by rounding? really 99.something?) Just a thought. This doesn't seem completely satisfying to me either, but it at least ameliorates the 100 / Gibbous conflict.

You might also consider doing some kind of rounding for the moon phases. From an intuitive standpoint, people don't think of the full moon as being a mere instant, there is a certain range of "close enough" where we look at the moon and consider it full.

(It's amazing how functionality that seems so simple on the surface quickly raises so many complexities...)

forrestguice commented 3 years ago

Its an issue of picking a single daily illumination - lunar noon was originally chosen because that is when you'll actually see the moon and benefit from its illumination. Displaying a range is something to consider. I think putting an @

We could fudge the numbers a bit too - on the days of the primary phases we display the illumination at those instants, and lunar noon on the other days. That would avoid a "Full Moon 98%" (not something people expect to see), but preserve "Waxing Gibbous 100%" (which is technically accurate).

These are the values reported by the underlying library - despite what might seem intuitive they are technically instants. Labeling the entire day (a calendar convention) I think reinforces misconceptions. The "full moon" by a "full appearance" lasts anywhere from 2 to 3 days. This is the way I thought about it before I started down this rabbit hole. ;)

Anyhow, thanks for your comments. I appreciate the feedback. This is definitely something to be improved.