Tutorial: Triaxial Watch Face

There are a number of triaxial Facer watch faces available, and they are quite unique (links further below). But I have not come across a triaxial watch face where the dials rotate as well. Do post if you know of such jewels!

Inspired by @russellcresser’s picture, I had to take on the challenge:

This is the result:
Triaxial

The face is made up of the following parts:

Triangular_parts

10 Second disk (or last digit of the seconds):
This disk rotates at: ((#DWFSS#*6)+60)
6x as fast as the normal speed of a seconds had (should be logical…). The +60 is the offset, so that the seconds can be read at around 5 o’clock.

1st digit of seconds disk:
The disk should stand still and only rotate when the 9th second approaches. So the disk rotates every 10 seconds, for 60 degrees:

$(#Ds#%10)=9?((floor(#Ds#/10)*60)+60)+(clamp(((((#DWFSS#/6)%60)-#Ds#)*60),0,60)):((floor(#Ds#/10)*60)+60)$

Explanation: if 60 seconds (Ds) are divisible by 10 and the remainder is 9, then rotate from current position (floor…) +60° (+clamp…). And in all other cases, stay where you are (:floor…)

The minutes:
This one is straight forward, rotates as a normal smooth minute hand: #DWFMS#

The rotor:
I must confess, I did not manage without the rotor. The idea was to have the 3 disks for the hours rotate in an orbit, but I did not find a way to change X and Y position for only 120° at a certain point in time. So the rotor becomes active every 4 hours, rotates 120° and then the single disk, positioned at 3 o’clock are overlayed using opacity.

The rotor rotates at 1, 5, and 9 of the value #Dh# (1-12). So, for example, when the time is 12:59:59 and it is going to be 1:00:00, the rotor rotates by 120 degrees to put the 1-4 hour disk into position. Since #Dh# is only a full hour value I add a second condition using the minutes=0 to initiate the rotation:

´$#Dh#=1&&#DWFMS#/6=0?`

Rotation is: (120-(clamp(((((#DWFSS#/6)%60)-#Ds#)*120),0,120)))

Explanation: current position (120) - max 120°
The speed of the rotation always starts at 0, hence subtracting #Ds#

Putting all that into one expression for the 1, 5, and 9:

$#Dh#=1&&#DWFMS#/6=0?(120-(clamp(((((#DWFSS#/6)%60)-#Ds#)*120),0,120))):$$#Dh#=5&&#DWFMS#/6=0?(0-(clamp(((((#DWFSS#/6)%60)-#Ds#)*120),0,120))):$$#Dh#=9&&#DWFMS#/6=0?(240-(clamp(((((#DWFSS#/6)%60)-#Ds#)*120),0,120))):(480-ceil(#Dh#/4)*120)$

For all other values, the rotor should stay in position, so: (480-ceil(#Dh#/4)*120)
The formula gives the value 0, 120, and 240, depending on current hour.

The 3-hour disks

The disks

  • stay in position at 3 o’clock,
  • are visible at respective hours,
  • rotate at the hour

Challenges:

  • rotation at hours 1, 5, and 9 should be delayed, since the rotor needs to finish rotating
  • 100% opacity should also only be true when the rotor stops
  • Each opacity will differ depending on the hour, and should be valid for 4 values. Example for the duration from 1 to 4

Opacity:
Disk 1-4h: $(ceil((#Dh#)/4))=1&&(#DWFMS#+#DK#)>1?100:0$
Disk 5-8h: $(ceil((#Dh#)/4))=2&&(#DWFMS#+#DK#)>5?100:0$
Disk 9-12h: $(ceil((#Dh#)/4))=3&&(#DWFMS#+#Dh#)>9?100:0$

Explanation:
(ceil((#Dh#)/4)) will always be 1, for Dh 1, 2, 3, and 4

The second condition makes sure the 100% opacity kicks in when #DK# (0-1) is greater than 1. If ´#DK#` is not added to the smooth minute value, opacity is “0” every hour for a split second.

Rotation of the hour disks:
The disk rotation is made up of 3 parts:

  • a delayed rotation at the hour 1, 5, and 9
  • normal rotation at the hour
  • stationery value other wise

Example for disk 1-4hour:
$#Dh#=1&&(toFixed(#DWFMS#/6,3))=0.017?(90-(clamp(((((#DWFSS#/6)%60)-#Ds#)*90),0,90))):$$#Dh#=2&&#DWFMS#/6=0?(360-(clamp(((((#DWFSS#/6)%60)-#Ds#)*90),0,90))):$$#Dh#=3&&#DWFMS#/6=0?(270-(clamp(((((#DWFSS#/6)%60)-#Ds#)*90),0,90))):$$#Dh#=4&&#DWFMS#/6=0?(180-(clamp(((((#DWFSS#/6)%60)-#Ds#)*90),0,90))):(450-ceil(#Dh#%4)*90)$

Explanation:

  • The delayed rotation is done using the “toFixed” function to give an exact value a little later than at the exact minute value of 0. In this case 0.017 (trial and error value).
  • the formula after the “?” is the usual rotation, in this case by 90°, always at a starting position
  • the last expression is the value at which the disk should stay put

The other 2 disk rotation formulas are the same, but using 5-8 and 9-12.

9 Likes

Gauss:

anj:

Dazza

Mellin (has about 20)

Angel

Michael O’Day

brad C

B Sharp Watches

DK-Design

6 Likes

Stunning Tutorial and Collection . A lot to digest there . Thank you for elevating this whole Bussiness . Well done .

3 Likes

Parabéns ! ! !
NĂŁo tem como encontrar o mais bonito ! ! !
Como aprendiz desejo perguntar se, eles podem ser utilizados para fazer telas?
O criador permite?

Congratulations ! ! !
There’s no way to find the prettiest! ! !
As a learner, I want to ask if they can be used to make canvases?
Does the breeder allow it?

2 Likes

It is open for inspection and you can use evey bit of it…

3 Likes

Que Maravilha ! ! !

3 Likes

Nice to see @bradtc and @dazstacey contributions, both very good with the Math side of Face creating :+1:

5 Likes

Damn! Crazy things. :clap: :clap: :clap:

3 Likes

Love it, great work @tom.vannes ! :beer::beer::beer::beer::beer:

2 Likes