Animated hands parked in position other than 12 - how?

Hi Everyone!

I’m working on an analog/smartwatch hybrid style watch face what would mimic Garmin-style animated hands. I’ve worked out (thanks to your help in other threads! Thanks!) how to animate hands going into their rest position at 12 and back to their correct position showing current time - depending on VAR_1 state 0/1.

I’ve been trying since to make hands park in different positions but so far, it’s proven fruitless, resulting in either animation working incorrectly (different initial and final hand position) or time being shown up incorrectly. I’m sure it’s something so simple I’ll be embarrassed when being presented with solution, but I can’t seem to figure this out on my own.

I’m using this expression:
$#VAR_1#==1?(#DWFK#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)#DWFK#)):(interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)#DWFK#)$

Could someone help modify it so that minutes hand parks at 3 o’clock, and hours / seconds hands at 9, making a horizontal line?

Hi @akar.zaephyr ,
I was a little confused by the interpAccel parameters as well. Here is a post from @lucky.andrei
that pretty well breaks it down.

Here is a breakdown of the expression and its elements:

interpAccel(Time format, Min, Max, Acceleration Factor)

Time Format = this can be any time related tag. Generally #DWE# is easiest to start with since it is a simple running time that starts when you wake your watch.
Min = Start point in the Time Format you chose above
Max = End point in the Time Format you chose above
Acceleration Factor = Speed at which the interval accelerates

From this I had a few questions in trying to implement this expression. The difficulty is understanding that you need to have a start and end point. This is different from the expression above. The full formula is really:
(x+(interpAccel(Time format, Min, Max, Acceleration Factor)*y))

x = starting point
y = end point

For instance, here are three variables on an element that you can use:

Position (i.e. x and y axis)
Placing this expression in the x axis will move an element

  • Animation will begin at ‘0’ seconds of #DWE# (wake)
  • Element moves from x-axis position of 0 to 160
  • Animation will end at position 160 over the course of 2 seconds
    (0+(interpAccel(#DWE#, 0, 2, 1.5)*160))

Rotation
@Tomas has a great tutorial on this example posted HERE:

  • Animation will begin at ‘0.2’ seconds of #DWE# (wake)
  • element from position 0 to #DWFSS# (i.e. current seconds position)
  • Animation will end at position #DWFSS# over the course of 0.6 seconds
    (interpAccel (#DWE#,0,2,0.8) * #DWFSS#))

Size
Placing this expression in the Size variable (Height, Width, Radius) will increase/decrease its size:

  • Animation will begin at ‘4’ seconds of #DWE# (wake)
  • Element will start at size 0
  • Size will increase to 8 over the course of 2 seconds
    (0+(interpAccel(#DWE#, 4, 6, 2)*8))

The last mysterious piece of the expression is the acceleration factor. My best guess to how this works is in the diagram below:
image
Decreasing the number to 0 will smooth the animation. Increasing it appears to give a ‘ramp up’ in the observed animation.

[Mini-Tutorial] InterpAccel - Fly In Motion Expression Help

This bit is key to what you are trying to accomplish.

(x+(interpAccel(Time format, Min, Max, Acceleration Factor)*y))

x = starting point
y = end point

Good luck bro!

2 Likes

Thank you, @rmcewen63!
I am familiar with that post, despite being only available in Google as archived copy :smiley:

I’ve managed to nail down the animation to exactly what I want, click center point:

… but the downside is now that all hands are completely offset by 90 degrees - compare with digital time.
Whenever I try to add the 90 degrees that’s missing, animation starts going all wonky (when seconds hand is at 30 seconds, the animation goes back 90 degrees to start movement to rest position from 15 seconds mark, which means something’s wrong with the description of start and end points, or my understanding of math behind it is lacking).

And I can’t get rid of the 90 degrees value because that’s the landing place for hands in their rest position.

I could, of course, offset the hour and minute circles and call it artistic vision, but that would be bollocks :wink:

2 Likes

I’m seeing the Hands all park nicely horizontally, but the Digital and Analogue Times are both different :thinking:

Yes, that’s a result of… hmm… “programming” the landing zone for each hand.

// SECONDS
$#VAR_1#==1?(#DWFS#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)#DWFS#+90*)):(270+interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)*#DWFS#)$

// MINUTES
$#VAR_1#==1?(#DWFM#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)#DWFM#+270*)):(90+interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)*#DWFM#)$

// HOURS
$#VAR_1#==1?(#DWFKS#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)#DWFKS#+90*)):(270+interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)*#DWFKS#)$

Highlighted +90 and +270 values are what makes hands land where I want them to be when VAR_1 is triggered. But that seems to also offset hands… When I try to account for that by adding +90 or +270 to first #DWFKS# expression, it completely messes up the animation.

2 Likes

The problem is that in the tutorial it says “y” is endpoint, but it is distance.
So for x=0 and y=90 that is fine, but if you want to travel from 30 to 90, y should be 60.
These expressions are changed to reflect that:
H: $#VAR_1#==1?(#DWFKS#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)*(#DWFKS#-270))):(270+interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)*(#DWFKS#-270))$
M: $#VAR_1#==1?(#DWFMS#-(interpAccel((#DNOW#-#VAR_1_T#),0,500,.5)*(#DWFMS#-90))):(90+interpDecel((#DNOW#-#VAR_1_T#),0,500,.5)*(#DWFMS#-90))$

4 Likes

@ThaMattie - that explains everything! And why I wasn’t able to figure out what is wrong with my expression (minus the obvious math inadequacies in my case…).

I have corrected the “Parking Test” face and will leave it here with inspection mode active for future reference. Hopefully this helps someone with their needs.

Thank you for your help, words can’t express enough how grateful I am for you sharing your knowledge with us!

3 Likes

Thought you might find this interesting - pages from my engineering log book while I was working at Timex

Looking forward to seeing you final product.
Tntt@aol.com

1 Like