Vacheron Constantin watch experiment..
This morning I ran across an article about some watches and there is one that caught my attention. It is a Vacheron Constantin Mercator America and it is a beautiful watch. A bit pricey, but if I ever have $47.500 that I don’t need, maybe I’ll get it some day.
The hands of the clock represent what are called nautical dividers and are used by navigational officers to quickly determine distance and range on a maritime charts. I have used these plenty, so perhaps that explains the fascination with this watch.
You can buy the watch here and find some exquisite information here. In the meantime, I could only think that the display was quite interesting, and having a maritime background, I loved the concept and originality of its design.
I have added a “seconds” counter that moves along the bottom edge of the numbers as well. This was a relatively easy experiment as one can tell by the code…
armhour.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace silverlight_clock_vacheron { public partial class ArmHour : UserControl { private RotateTransform rotateTransform = new RotateTransform(); public ArmHour() { InitializeComponent(); //Moves the canvas down and left TranslateTransform translateTransform = new TranslateTransform(); translateTransform.X = 190; translateTransform.Y = 89; this.RenderTransform = translateTransform; } internal double setAngle(DateTime _now){ int _hour = _now.Hour; int _minute = _now.Minute; if (_hour == 12) { _hour = 0; } else if (_hour > 12) { _hour -= 12; } //calculate fraction double hourFull = (double)_hour * (45.00 / 12.00); double hourFraction = (double)_minute * (3.75 / 60); this.rotateTransform.Angle = hourFull + hourFraction; this.ImageArmHour.RenderTransform = rotateTransform; return this.rotateTransform.Angle; } } }
armminute.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace silverlight_clock_vacheron { public partial class ArmMinute : UserControl { private RotateTransform rotateTransform = new RotateTransform(); public ArmMinute() { InitializeComponent(); //Moves the canvas down and left TranslateTransform translateTransform = new TranslateTransform(); translateTransform.X = 190; translateTransform.Y = 89; this.RenderTransform = translateTransform; } internal double setAngle(DateTime _now) { int _minute = _now.Minute; int _seconds = _now.Second; //calculate fraction double minuteFull = (double) _minute * (-45.00 / 60.00); double minuteFraction= (double)_seconds * ((3.75/5.00) / 60.00); this.rotateTransform.Angle = minuteFull-minuteFraction; this.ImageArmMinute.RenderTransform = rotateTransform; return this.rotateTransform.Angle; } } }
armsecond.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace silverlight_clock_vacheron { public partial class ArmSecond : UserControl { private RotateTransform rotateTransform = new RotateTransform(); public ArmSecond() { InitializeComponent(); //Moves the canvas down and left TranslateTransform translateTransform = new TranslateTransform(); translateTransform.X = 190; translateTransform.Y = 89; this.RenderTransform = translateTransform; } internal double setAngle(DateTime _now) { int _seconds = _now.Second; int _milliseconds = _now.Millisecond; //calculate fraction double secondFull = (double)_seconds*(-45.00/60.00); double secondFraction= ((double)_milliseconds/1000.00)*(3.75/5.00); this.rotateTransform.Angle = secondFull - secondFraction; this.ImageArmSecond.RenderTransform = rotateTransform; return this.rotateTransform.Angle; } } }