# 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:

The face is made up of the following 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

Angel

Michael O’Day

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?

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

5 Likes

Damn! Crazy things.

3 Likes

Love it, great work @tom.vannes !

2 Likes