In the March 2020 issue of The Compendium (Vol. 27-1) from NASS I discussed how to make a simple triangle gnomon.  We'll extend this tutorial to add a rounded tip and then examine how to make a gnomon with an underneath cut-back for a more pleasing shape.

The fundamental triangle has a base b, height h, and hypotenuse z.  To make the triangle proportions for the sundial latitude $$\phi$$, we observe that the hypotenuse must point to the north (or south) celestial pole. As shown in (Fig. 1) :

$$h =b*tan\phi$$
$$z = \frac{ b}{cos\phi}$$

We'll start out making the gnomon in a self-contained OpenSCAD module that at first simply creates the gnomon in the x-y plane.  Here's the code:

lat    = 40;        //example dial is set at 40 deg north
b      = 35;        //gnomon base 35mm for 3D dial size of 75mm
gwidth = 2;         //gnomon width in mm
gnomon(lat,b,gwidth);                   //main procedure call

module gnomon(lat,b,gwidth){
h  =  b*tan(lat);                 //height of  gnomon
gpoly = [[0,0],[b,0],[0,h]];      //simple triangle [x,y] points
// extrude gnomon in xy plane
linear_extrude(height = gwidth, convexity=3)
polygon(gpoly);                   //make polygon from points
}

In the full code, we'll rotate and translate the gnomon so that it sits on top of the sundial we've designed inthe previous tutorials.  But first, let's improve the gnomon with a rounded tip.  From Fig. 2 we see that the rounding circle is centered on a bisected line from the apex and is tangent to both triangle's vertical and hypotenuse sides.  We've labeled the tangent distance from the apex as h' on these sides. If we specify the rounding circle's radius r we see that the apex triangle half-angle $$\xi$$ can be derived from the sum of angles equal to 180 degrees.  Rearranging we get:

$$\xi = \frac{90 - \phi}{2}$$

Next, we use the apex triangle and trigonometric identities to determine the tangent distance h' from the apex:

$$h' = \frac{r}{tan\xi}$$

The x-y tangent coordinate on the vertical side of the triangle is [0,h-h'].  The x-y tangent coordinate on the hypotenuse is a bit more complicated, giving [b -   (z-h')* cos$$\phi$$, (z-h')*sin$$\phi$$].  These points help create a 4-point polygon to which we add the rounding cylinder:

lat    = 40;        //example dial is set at 40 deg north
base   = 35;        //gnomon base 35mm for 3D dial size of 75mm
gwidth = 2;         //gnomon width in mm

h  =  b*tan(lat);                       //height of  gnomon
z  =  b / cos(lat);                     //hypotenuse
xi = (90 - lat)/2;                      //half apex angle
hp = gradi / tan(xi);                   //tangent distance
ho = h - hp;                            //lower vertical distance
zo = z - hp;                            //lower hypotenuse distance
zx = b - zo*cos(lat);                   //x-tangent point on hypotenuse
zy = zo*sin(lat);                       //y-tangent point on hypotenuse
cx = gradi;                             //x-tangent point on vertical
cy = ho;                                //y-tangent point on vertical

gpoly = [[0,0],[b,0],[zx,zy],[0,ho]];   //4-point polygon

// extrude gnomon in xy plane
linear_extrude(height = w, convexity=3)
polygon(gpoly);                         //make polygon from points

translate([cx,cy,0])
}

Now let's go even further by using a setback of the base where we move the vertical portion of the triangle back underneath the hypotenuse.  The setback rotates the exact point of tangency with the rounding circle, so that we need a little more trignometry.  In Fig. 3 the new gnomon setback line is L.  To determine L we use the circle center to setback distance R as well as determining the apex angles alpha and beta:

$$R=\sqrt{(b'-r)^2+(h-h')^2}$$

The length R and rounding circle radius give the apex angle $$\beta$$:

$$\beta = acos(\frac{r}{R})$$  and   $$L = R*sin\beta$$

All that remains is finding $$\alpha$$.  We see that the side L is actually part of two triangles.  One is the rLR triangle with apex angle $$\beta$$ and the other triangle is made from the setback b' and angle 90-$$\alpha$$.  Two equations can be formed which after some algebra reduces to:

$$\frac{ (b'-r) - r*cos\alpha} {L} = -sin\alpha$$
$$\frac{ (h-h') - L*cos\alpha} {r } = sin\alpha$$

$$cos\alpha = \frac{r*(r-b') + L*(h-h') } {r^2 + L^2 }$$
With $$\alpha$$ the indented tangent point is easily found as
$$tx = r - r*cos\alpha$$
$$ty = h' - r*sin\alpha$$