# Keep digits upright

Hello friends,
Is it possible to keep the digits always in an upright orientation as shown in the attached video?

Hello,
you would need to let the 12 text fields to orbit around in same circle. It would be easy if the trigonometric functions worked not only in Galaxy watch studio in preview, but also on watch face exported to real watch. Depending on how smooth (how fast) the movement has to be, they could be substituted with more or less approximate Maclaurin expansion, but please do not ask me to derive the 12 different formulas for you.

2 Likes

Hey Peter,
Thanks for the reply. You mean the trigonometric functions won’t work in the exported watchface? So is there any other way to make it work? I am using Galaxy Active 2 watch.

Hey, you are welcome. No, they wont work on watch. And I already wrote you the way.
how to use sine and cosine for orbiting movement read here:

Then, for GWS, use polynomic expression based on Maclaurin expansion in place of the sine or cosine to approximate the x and y coordinate changes as function of time. Sorry we had this in math class 25 years ago and since then I only used it once (for my watch face) like 3 years ago. I am not going to repeat the formula derivation process again. If you are still interested, maybe you can learn something from this article:
https://blogs.ubc.ca/infiniteseriesmodule/units/unit-3-power-series/taylor-series/maclaurin-expansion-of-sinx/

Simply put, its an overkill effort for layman, to make it work just for fun having it own way.

Achieved this using a simple formula 0*[s] for Rotate Angle for each of the digits by placing it in proper locations and changing the Outer Pivots. Even though it is wiggly and working on GWS, it’s not working on my watch.

How to set start point? In @Peter 's post, it starts at the “6” clock position and I am not a mathematician here

if you want them to rotate by the second then instead of creating them as watch hands you can just add them as images then center all of them in the middle of the watch then add this tags in the placement tab; I did the first 3 numbers but for the rest just follow the pattern just like I did on the first 3

for 12 x:
`(([s]==0)*(0)+([s]==1)*(-0.1045)+([s]==2)*(-0.2079)+([s]==3)*(-0.3090)+([s]==4)*(-0.4067)+([s]==5)*(-0.5)+([s]==6)*(-0.5878)+([s]==7)*(-0.6691)+([s]==8)*(-0.7431)+([s]==9)*(-0.8090)+([s]==10)*(-0.8660)+([s]==11)*(-0.9135)+([s]==12)*(-0.9511)+([s]==13)*(-0.9781)+([s]==14)*(-0.9945)+([s]==15)*(-1)+([s]==16)*(-0.9945)+([s]==17)*(-0.9781)+([s]==18)*(-0.9511)+([s]==19)*(-0.9135)+([s]==20)*(-0.8660)+([s]==21)*(-0.8090)+([s]==22)*(-0.7431)+([s]==23)*(-0.6691)+([s]==24)*(-0.5878)+([s]==25)*(-0.5)+([s]==26)*(-0.4067)+([s]==27)*(-0.3090)+([s]==28)*(-0.2079)+([s]==29)*(-0.1045)+([s]==30)*(0)+([s]==31)*(0.1045)+([s]==32)*(0.2079)+([s]==33)*(0.3090)+([s]==34)*(0.4067)+([s]==35)*(0.5)+([s]==36)*(0.5878)+([s]==37)*(0.6691)+([s]==38)*(0.7431)+([s]==39)*(0.8090)+([s]==40)*(0.8660)+([s]==41)*(0.9135)+([s]==42)*(0.9511)+([s]==43)*(0.9781)+([s]==44)*(0.9945)+([s]==45)*(1)+([s]==46)*(0.9945)+([s]==47)*(0.9781)+([s]==48)*(0.9511)+([s]==49)*(0.9135)+([s]==50)*(0.8660)+([s]==51)*(0.8090)+([s]==52)*(0.7431)+([s]==53)*(0.6691)+([s]==54)*(0.5878)+([s]==55)*(0.5)+([s]==56)*(0.4067)+([s]==57)*(0.3090)+([s]==58)*(0.2079)+([s]==59)*(0.1045))*-160`

for 12 y:
`(([s]==0)*(1)+([s]==1)*(0.9945)+([s]==2)*(0.9781)+([s]==3)*(0.9511)+([s]==4)*(0.9135)+([s]==5)*(0.8660)+([s]==6)*(0.8090)+([s]==7)*(0.7431)+([s]==8)*(0.6691)+([s]==9)*(0.5878)+([s]==10)*(0.5)+([s]==11)*(0.4067)+([s]==12)*(0.3090)+([s]==13)*(0.2079)+([s]==14)*(0.1045)+([s]==15)*(0)+([s]==16)*(-0.1045)+([s]==17)*(-0.2079)+([s]==18)*(-0.3090)+([s]==19)*(-0.4067)+([s]==20)*(-0.5)+([s]==21)*(-0.5878)+([s]==22)*(-0.6691)+([s]==23)*(-0.7431)+([s]==24)*(-0.8090)+([s]==25)*(-0.8660)+([s]==26)*(-0.9135)+([s]==27)*(-0.9511)+([s]==28)*(-0.9781)+([s]==29)*(-0.9945)+([s]==30)*(-1)+([s]==31)*(-0.9945)+([s]==32)*(-0.9781)+([s]==33)*(-0.9511)+([s]==34)*(-0.9135)+([s]==35)*(-0.8660)+([s]==36)*(-0.8090)+([s]==37)*(-0.7431)+([s]==38)*(-0.6691)+([s]==39)*(-0.5878)+([s]==40)*(-0.5)+([s]==41)*(-0.4067)+([s]==42)*(-0.3090)+([s]==43)*(-0.2079)+([s]==44)*(-0.1045)+([s]==45)*(0)+([s]==46)*(0.1045)+([s]==47)*(0.2079)+([s]==48)*(0.3090)+([s]==49)*(0.4067)+([s]==50)*(0.5)+([s]==51)*(0.5878)+([s]==52)*(0.6691)+([s]==53)*(0.7431)+([s]==54)*(0.8090)+([s]==55)*(0.8660)+([s]==56)*(0.9135)+([s]==57)*(0.9511)+([s]==58)*(0.9781)+([s]==59)*(0.9945))*-160`

for 1 x:
`(([s]==55)*(0)+([s]==56)*(-0.1045)+([s]==57)*(-0.2079)+([s]==58)*(-0.3090)+([s]==59)*(-0.4067)+([s]==0)*(-0.5)+([s]==1)*(-0.5878)+([s]==2)*(-0.6691)+([s]==3)*(-0.7431)+([s]==4)*(-0.8090)+([s]==5)*(-0.8660)+([s]==6)*(-0.9135)+([s]==7)*(-0.9511)+([s]==8)*(-0.9781)+([s]==9)*(-0.9945)+([s]==10)*(-1)+([s]==11)*(-0.9945)+([s]==12)*(-0.9781)+([s]==13)*(-0.9511)+([s]==14)*(-0.9135)+([s]==15)*(-0.8660)+([s]==16)*(-0.8090)+([s]==17)*(-0.7431)+([s]==18)*(-0.6691)+([s]==19)*(-0.5878)+([s]==20)*(-0.5)+([s]==21)*(-0.4067)+([s]==22)*(-0.3090)+([s]==23)*(-0.2079)+([s]==24)*(-0.1045)+([s]==25)*(0)+([s]==26)*(0.1045)+([s]==27)*(0.2079)+([s]==28)*(0.3090)+([s]==29)*(0.4067)+([s]==30)*(0.5)+([s]==31)*(0.5878)+([s]==32)*(0.6691)+([s]==33)*(0.7431)+([s]==34)*(0.8090)+([s]==35)*(0.8660)+([s]==36)*(0.9135)+([s]==37)*(0.9511)+([s]==38)*(0.9781)+([s]==39)*(0.9945)+([s]==40)*(1)+([s]==41)*(0.9945)+([s]==42)*(0.9781)+([s]==43)*(0.9511)+([s]==44)*(0.9135)+([s]==45)*(0.8660)+([s]==46)*(0.8090)+([s]==47)*(0.7431)+([s]==48)*(0.6691)+([s]==49)*(0.5878)+([s]==50)*(0.5)+([s]==51)*(0.4067)+([s]==52)*(0.3090)+([s]==53)*(0.2079)+([s]==54)*(0.1045))*-160`

for 1 y:
`(([s]==55)*(1)+([s]==56)*(0.9945)+([s]==57)*(0.9781)+([s]==58)*(0.9511)+([s]==59)*(0.9135)+([s]==0)*(0.8660)+([s]==1)*(0.8090)+([s]==2)*(0.7431)+([s]==3)*(0.6691)+([s]==4)*(0.5878)+([s]==5)*(0.5)+([s]==6)*(0.4067)+([s]==7)*(0.3090)+([s]==8)*(0.2079)+([s]==9)*(0.1045)+([s]==10)*(0)+([s]==11)*(-0.1045)+([s]==12)*(-0.2079)+([s]==13)*(-0.3090)+([s]==14)*(-0.4067)+([s]==15)*(-0.5)+([s]==16)*(-0.5878)+([s]==17)*(-0.6691)+([s]==18)*(-0.7431)+([s]==19)*(-0.8090)+([s]==20)*(-0.8660)+([s]==21)*(-0.9135)+([s]==22)*(-0.9511)+([s]==23)*(-0.9781)+([s]==24)*(-0.9945)+([s]==25)*(-1)+([s]==26)*(-0.9945)+([s]==27)*(-0.9781)+([s]==28)*(-0.9511)+([s]==29)*(-0.9135)+([s]==30)*(-0.8660)+([s]==31)*(-0.8090)+([s]==32)*(-0.7431)+([s]==33)*(-0.6691)+([s]==34)*(-0.5878)+([s]==35)*(-0.5)+([s]==36)*(-0.4067)+([s]==37)*(-0.3090)+([s]==38)*(-0.2079)+([s]==39)*(-0.1045)+([s]==40)*(0)+([s]==41)*(0.1045)+([s]==42)*(0.2079)+([s]==43)*(0.3090)+([s]==44)*(0.4067)+([s]==45)*(0.5)+([s]==46)*(0.5878)+([s]==47)*(0.6691)+([s]==48)*(0.7431)+([s]==49)*(0.8090)+([s]==50)*(0.8660)+([s]==51)*(0.9135)+([s]==52)*(0.9511)+([s]==53)*(0.9781)+([s]==54)*(0.9945))*-160`

for 2 x:
`(([s]==50)*(0)+([s]==51)*(-0.1045)+([s]==52)*(-0.2079)+([s]==53)*(-0.3090)+([s]==54)*(-0.4067)+([s]==55)*(-0.5)+([s]==56)*(-0.5878)+([s]==57)*(-0.6691)+([s]==58)*(-0.7431)+([s]==59)*(-0.8090)+([s]==0)*(-0.8660)+([s]==1)*(-0.9135)+([s]==2)*(-0.9511)+([s]==3)*(-0.9781)+([s]==4)*(-0.9945)+([s]==5)*(-1)+([s]==6)*(-0.9945)+([s]==7)*(-0.9781)+([s]==8)*(-0.9511)+([s]==9)*(-0.9135)+([s]==10)*(-0.8660)+([s]==11)*(-0.8090)+([s]==12)*(-0.7431)+([s]==13)*(-0.6691)+([s]==14)*(-0.5878)+([s]==15)*(-0.5)+([s]==16)*(-0.4067)+([s]==17)*(-0.3090)+([s]==18)*(-0.2079)+([s]==19)*(-0.1045)+([s]==20)*(0)+([s]==21)*(0.1045)+([s]==22)*(0.2079)+([s]==23)*(0.3090)+([s]==24)*(0.4067)+([s]==25)*(0.5)+([s]==26)*(0.5878)+([s]==27)*(0.6691)+([s]==28)*(0.7431)+([s]==29)*(0.8090)+([s]==30)*(0.8660)+([s]==31)*(0.9135)+([s]==32)*(0.9511)+([s]==33)*(0.9781)+([s]==34)*(0.9945)+([s]==35)*(1)+([s]==36)*(0.9945)+([s]==37)*(0.9781)+([s]==38)*(0.9511)+([s]==39)*(0.9135)+([s]==40)*(0.8660)+([s]==41)*(0.8090)+([s]==42)*(0.7431)+([s]==43)*(0.6691)+([s]==44)*(0.5878)+([s]==45)*(0.5)+([s]==46)*(0.4067)+([s]==47)*(0.3090)+([s]==48)*(0.2079)+([s]==49)*(0.1045))*-160`

for 2 y:
`(([s]==50)*(1)+([s]==51)*(0.9945)+([s]==52)*(0.9781)+([s]==53)*(0.9511)+([s]==54)*(0.9135)+([s]==55)*(0.8660)+([s]==56)*(0.8090)+([s]==57)*(0.7431)+([s]==58)*(0.6691)+([s]==59)*(0.5878)+([s]==0)*(0.5)+([s]==1)*(0.4067)+([s]==2)*(0.3090)+([s]==3)*(0.2079)+([s]==4)*(0.1045)+([s]==5)*(0)+([s]==6)*(-0.1045)+([s]==7)*(-0.2079)+([s]==8)*(-0.3090)+([s]==9)*(-0.4067)+([s]==10)*(-0.5)+([s]==11)*(-0.5878)+([s]==12)*(-0.6691)+([s]==13)*(-0.7431)+([s]==14)*(-0.8090)+([s]==15)*(-0.8660)+([s]==16)*(-0.9135)+([s]==17)*(-0.9511)+([s]==18)*(-0.9781)+([s]==19)*(-0.9945)+([s]==20)*(-1)+([s]==21)*(-0.9945)+([s]==22)*(-0.9781)+([s]==23)*(-0.9511)+([s]==24)*(-0.9135)+([s]==25)*(-0.8660)+([s]==26)*(-0.8090)+([s]==27)*(-0.7431)+([s]==28)*(-0.6691)+([s]==29)*(-0.5878)+([s]==30)*(-0.5)+([s]==31)*(-0.4067)+([s]==32)*(-0.3090)+([s]==33)*(-0.2079)+([s]==34)*(-0.1045)+([s]==35)*(0)+([s]==36)*(0.1045)+([s]==37)*(0.2079)+([s]==38)*(0.3090)+([s]==39)*(0.4067)+([s]==40)*(0.5)+([s]==41)*(0.5878)+([s]==42)*(0.6691)+([s]==43)*(0.7431)+([s]==44)*(0.8090)+([s]==45)*(0.8660)+([s]==46)*(0.9135)+([s]==47)*(0.9511)+([s]==48)*(0.9781)+([s]==49)*(0.9945))*-160`

you can also change the -160 number depending how close to the center you want the numbers.

Hope this helps

1 Like

May I know how you arrived at the numbers like -0.1045, -0.2079, -0.3090 etc…

Those are computed function values of sin(angle of rotation for each second number)…

A bit late to the party, but I found a very simple way to achieve this in Watch Face Studio. This example is for Minutes but the same approach could apply to hours.

• Create an Ellipse (any size), with center at X:225,Y:225 (or half your watch dimensions)
• Set its Rotate > Angle to: [MIN]/60*360
• Add all the Text (0, 15, 30, 45, etc) as separate elements, upright and in normal locations
• Set the texts as children of the Ellipse
• Make sure the Inner Pivot of each number is centered with itself
• Set the Rotate > Angle of each text number to: -[MIN]/60*360

This basically counteracts the rotation of the parent, which is rotating normally, so the individual numbers always appear upright.

That is nice to see, but this topic was about Galaxy Watch Studio, tool for making watchfaces for the Samsung smartwatches running OS Tizen.
For those is Watchface Studio not usable.