1. NodeBox 1
    1. Homepage
    2. NodeBox 3Node-based app for generative design and data visualization
    3. NodeBox OpenGLHardware-accelerated cross-platform graphics library
    4. NodeBox 1Generate 2D visuals using Python code (Mac OS X only)
  2. Gallery
  3. Documentation
  4. Forum
  5. Blog


Here is an image and the source code of Kevin Karney's gnomonical work. We asked him to share some comments on the mathematics he used. 

Hello Kevin. Can you tell us a little bit about yourself?

Kevin: "Hi. I'm a retired oil field engineer with a lifelong interest in sundials and the history of time-telling... which makes him a gnomonist! In my retirement, I lecture extensively and semi-professionally on the subject. I only occasionally make sundials and then just for friends and family. You can find some of my work on my website: www.precisedirections.co.uk."

The detail in this work is amazing. It looks very complicated to produce.

Kevin: "It's a design for photo-etching a bronze sundial, which is an almost exact clone of a 19th century dial in an important historic mansion in London."



Can we share the source code?

Kevin: "Yes, it is copyright free! The examples in the gallery are of interesting graphical concepts. But I think NodeBox is a best-in-class for serious once-off geometrically perfect graphics. And it is not advertised as such... maybe this work will help to remedy that. My code is not an example of elegance. I started writing in Fortran 50 years ago and I've been struggling a bit to get to grips with Python. However, I did eventually manage to modify the fonts to be circularized."

This refers to the lettering in the sundial image. Can you explain a little bit how the slanted characters were produced?

Kevin: "Well the vertical font lines are pointing pointing to the dial's center. The horizontal lines are made radial, and then slanted, so that radial lines point to the appropriate side of the dial gnomon's foot. This involves decomposing the fonts to their Bézier curves, linearizing the curves and then transforming the multitude of linear segments. I tried just transforming the Bézier points and their control points, but that produced weird results with tight curves."

Kevin: "I'll include a small note showing how the font manipulations were made. The mathematics used are actually not advanced, just basic analytical geometry and trigonometry that people of my age learnt at school. For example, if you want to find where a line meets a circle, you need only solve the equations:

y = mx + c    (the line), and,

x**2 + y**2 = r**2    (the circle).

Now if you wish to find the angle that a horizontal sundial's Hour Line makes with a North/South line, you just need the equation:

angle = atan(sin(Latitude) * tan(HA)),

where HA in degrees = abs(15 * (Hour - 12)) .

There appears to be a drawing inside the drawing. What can you tell us about that?

Kevin: "This shows precise data plotting. Here the graph is an intrinsic curve, the independent variable is plotted along the curve itself rather than along the x-axis as in a cartesian graph. This allows a curve to be folded along itself, making it a convenient method of packing a lot of data into a small space. The graph in this case shows the Equation of Time: the difference between solar time, as shown on a sundial, and civil time, as read from your watch."


Kevin, thanks for sharing. Your passion is very motivating!

Kevin: "Thanks! You have produced great software!"



Created by Kevin Karney |  www.precisedirections.co.uk