-
• #2
Full moon is tomorrow night.
-
• #3
i noticed that offset too, i guess the threshold between two phase should be enhanced a litlle bit
-
• #4
Thanks @myownself - good to know!
@nicoboss feels like it could 'tip' a bit earlier - I wonder if I notice this more when it's waxing as it is now than when it's waning. -
• #5
It's 7.30am in London, the moon phase widget is showing a full moon and yet the moon I can see out of my window right now looks like it's ever so slightly slightly waning, it looks a bit less full than it did when I posted this thread. I guess it's a moot (moon?!) point when you change from one discrete phase image to another, but it certainly looks like it needs shifting forwards a bit.
-
• #6
Good morning!
I just compared the moon phase calculation of the moon phase widget with that of my moon phase complication for analog clocks using the following code:
function compareMoonphasesAt (today) { /**** Code from Moonphase Widget ****/ const MC = 29.5305882, NM = 694039.09; var r = 11, mx = this.x + 12; my = this.y + 12; function moonPhase(d) { var tmp, month = d.getMonth(), year = d.getFullYear(), day = d.getDate(); if (month < 3) {year--; month += 12;} tmp = ((365.25 * year + 30.6 * ++month + day - NM) / MC); return Math.round(((tmp - (tmp | 0)) * 7)+1); } /**** Code from Moonphase Complication ****/ const MillisPerDay = 86400000; const synodicalMonth = 29.530588; let Phase = ( (today/MillisPerDay - new Date(2009,11,31, 20,12,36)/MillisPerDay) % synodicalMonth ) / synodicalMonth; if (Phase < 0) { Phase += 1; } // just in case that date is completely wrong /**** make the latter comparable to the former ****/ Phase -= 0.5; if (Phase < 0) { Phase += 1; } Phase = Math.round(Phase * 7)+1; /**** print comparison ****/ let day = today.getDate(); print( '2022-01-' + (day < 10 ? '0' : '') + day + ': ' + moonPhase(today) + ' vs. ' + Phase ); } for (let Day = 17-14; Day < 17+14; Day++) { compareMoonphasesAt(new Date(2022,0,Day)); }
The output of that little script is:
2022-01-03: 8 vs. 8 2022-01-04: 1 vs. 1 2022-01-05: 1 vs. 1 2022-01-06: 2 vs. 2 2022-01-07: 2 vs. 2 2022-01-08: 2 vs. 2 2022-01-09: 2 vs. 2 2022-01-10: 3 vs. 3 2022-01-11: 3 vs. 3 2022-01-12: 3 vs. 3 2022-01-13: 3 vs. 3 2022-01-14: 4 vs. 4 2022-01-15: 4 vs. 4 2022-01-16: 4 vs. 4 2022-01-17: 4 vs. 4 2022-01-18: 5 vs. 5 2022-01-19: 5 vs. 5 2022-01-20: 5 vs. 5 2022-01-21: 5 vs. 5 2022-01-22: 5 vs. 5 2022-01-23: 6 vs. 6 2022-01-24: 6 vs. 6 2022-01-25: 6 vs. 6 2022-01-26: 6 vs. 6 2022-01-27: 7 vs. 7 2022-01-28: 7 vs. 7 2022-01-29: 7 vs. 7 2022-01-30: 7 vs. 7
This looks as if the calculation itself is correct.
What might lead to less optimal graphics is the low number of different indices - compared to user requirements (e.g., according to the numbers, "full moon" is shown from Jan 14 to Jan 17 incl. - this collides with "it's ever so slightly slightly waning")
Thus, what may (might?) finish this discussion could be a more detailed drawing of the current moon phase in the widget?
-
• #7
Thus, what may (might?) finish this discussion could be a more detailed drawing of the current moon phase in the widget?
It's on my to-do list, you've already done some great work in http://forum.espruino.com/comments/16328587/
-
• #8
Well, since our formulae seem to be comparable, you may just copy all the code from my moon phase complication and adapt it for your radius and color settings - that's it. Everything else would require more work.
-
• #9
@blogmywiki: I can confirm the difference of the rendered phases with the visual moon.
Nevertheless I can confirm the the calculation itself seems correct as also @Andreas_Rozek tested.
From my point of view:
- It's hard to render a -always correct- circle view projection within 23 px
- Typically a moon projection shows als the full circle; but see 1. with a doted 1px line ... I don't expect to be more precise for our eyes
- I guess using the same code (moonphase calculation) in more than one app/widget or the cool overlays that @Andreas_Rozek provides (e.g. a module) would be very helpfull
- It's hard to render a -always correct- circle view projection within 23 px
-
• #10
The moon widget has no internal update, it depends on widgets draw to be updated 😉.
-
• #11
I've replaced the 8 phases with the drawing function from @Andreas_Rozek, see https://github.com/espruino/BangleApps/pull/1430
-
• #12
Maybe you find some time and go for a setting option, because there are two hemispheres and because of this there are two widgets - that would be great.
1 Attachment
-
• #13
oops - I guess, it would also be a good idea to add such an option to my moon phase "complication"...
-
• #14
I'm planning to use mylocation.json for this.
-
• #15
so I'll wait for you to solve that problem and see if I can copy your solution
-
• #16
I'm now using the data from the "My Location" app in https://github.com/espruino/BangleApps/pull/1430
You can try out the new widget on https://hilmarst.github.io/BangleApps/#moon
I'm using the northern hemisphere moon phase widget (in the SE UK in case that makes a difference!) It seems a bit 'slow' to me - i.e. I'm looking out the window right now at what looks like a full moon, the phase on my Bangle JS2 widget looks like it's at least 1 phase behind. Has anyone else noticed this? Is it to do with how often it updates?