A thought I have had for a while was using coding to help learn mathematics and related subjects through the exploration of the algorithm or equation. The thinking is, partly, to utilise the power of computers to store valuable information, which you can access at a later date to do calculations. Starting yesterday, it was the first time I had tried to do this explicitly.
While reading a book by Robert Snedden, called "Great Breakthroughs in Physics", I came across Thales Of Miletus and his theorem, which states with points A and C joined as a line, thus contains a distance, pick a point B where its distance is the radius (of AC line) from the centre (circumcentre) of the AC line, the angle at the intersecting lines from A to B and C to B is 90 degrees. If I didn’t butcher the definition then you if take a number of valid “B” points, you’ll form a circle.
Without reading his work, it was described that Thales came across a triangle inscribed in a semi-circle but these were two different shapes. How could they have a relationship with each other?
With the definition described, I began to code it in Rust (because I want to learn this language). It took me a couple of times to think through the problem, throughout the day, before I began to attempt to. Initially started with a Point struct, a Diameter struct and a ThalesShape struct. The ThalesShape struct would contain both a Point struct and Diameter struct in its fields.
After much deliberation, I weeded through the problem and looked a bit more deeply into the Theorem. I settled for just a ThalesTheorem struct containing a field called “ac_points”. The field is just a tuple of 2 items, to represent points A and C.
I reasoned that having points A and C this was all you need to begin coding since you can derive the circumcentre as the halfway point (radius) of the distance between A and C. With point B, we know that it can only be a distance of the radius value away from the circumcentre.
Hence, in theory, the user only has to supply an angle to the circumcentre, applied to a random line with a distance of radius and you should find point B. I am working my way through a solution and, thus, that is how far I have come.
That is all for today, it’s a new approach I have been wanting to try for a few years now. Only began to put the effort in to do it. We’ll see how it goes.
Steve Frampton.