Circular motion timings

Hello guys,

I wanted to create a watchface with all the solar system planets, making them rotate all together at different speed.

First I used @Mellin expressions for X and Y axis, adjusting the centre of rotation to the left limit of the face, but now I don’t know how to change values to make every planet rotate at a different set speed.

What I want to obtain is something like this: https://media1.tenor.com/images/bd5e1ef8095a0950229c1b5b71a0eb42/tenor.gif?itemid=5007458

Now it looks like this:

As you see only jupiter is moving, with this expressions:

X:(((cos(((#Dsm#+0)/180)*360))*166)+0)
Y:(((sin(((#Dsm#+0)/180)*360))*166)+160)

but the aim is, as I tried to explain above, to make it move at a given speed.
Here the “speed” I want to have for every planet orbit, that is to say the time I want for every planet to make a complete circle around the 0 centre point:

Mercury: 126"
Venus: 360"
Earth: 540"
Mars: 990"
Jupiter: 6228"
Saturn: 15480"
Uranus: 44280"
Neptune: 86400"

Any help?

Ok some notes as I get my thoughts straight …

"#Dsm#"returns a number between zero and 60

So (#Dsm#/180)*360) will be a number between 0 and 120

The cos and sin functions take a radians argument with 2*pi for one full rotation.

120 ~= 19 * (2*pi) , so, your Jupiter image must be rotating 19 and a bit times per minute giving a period of around 1/19.0986 = 3.1416 seconds

If you include a new multiplier inside the sin and cos expressions you will adjust this period in inverse proportion to the multiplier.

For Jupiter, if you want a period of 6228 seconds then the multiplier needs to be 3.1416 / 6228

Likewise for the other planets.

Your argument expressions inside the sin and cos functions can be simplified to:

((#Dsm#*6.2832) / planet_period_in_seconds)

where, #Dsm# * 6.2832 will give you one revolution per second and the planet period divisor will slow this down to the required period.

I hope that helps.

:slight_smile:

2 Likes

Thanks for your help, it works great without the divisor, with jupiter making one revolution per second.
But when I add a divisor greater than 60, the revolution movement stops after 60 seconds and restarts from the initial position.

1 Like

Sorry, yes of course …

Use #DWE# instead of #Dsm#

1 Like

I think it can be easier to save the png images of the planets as “ends” of transparent hands, align them at the bottom, position them at the left edge of the dial and rotate them with the rotation function of smooth second value

2 Likes

Well spotted! :slight_smile:

I though about this one too, but the solution with sin and cos is more versatile if I need to move planets with ellipictical motion.

2 Likes

Despite this, I still haven’t achieved what I wanted. With the tag #DW # planets start to move only when the clock wakes. Isn’t there a way to keep them in motion?

Ok, my mistake, I assumed wrongly that you only wanted them to move on waking. My understanding is that most ( maybe all ? ) smartwatches only update the screen once per minute in dim mode. So if you get it rotating in dim mode it still may not do what you want for the short period planets.

Anyway, another tag you can try is #DNOW#; from memory it is in milliseconds so you will need to take that into account. That is, it returns a continuous count of milliseconds since 1 Jan 1970 ( from memory ). However, as I said above, it still may not help with update periods of less than a minute in dim mode.

2 Likes

Hmm, Tried everything to achieve a great conjunction. :slight_smile:

Nice Idea!

1 Like

Yep, for elliptical orbit you can also use smooth rotation + 1 axis sin, but in that case sin and cos are better, and as Mike said in dim mode mostly every watch update the frame every minute so it can’t continue rotating smoothly.

1 Like

Thanks to everyone for the great support!

Here’s the result:

4 Likes

Nice, well done

1 Like

Well done - looks good!

:slight_smile: