The spiral of Theodorus is a spiral composed of right triangles. Hundreds of years ago, Theodorus of Cyrene constructed continuous right triangles and got a beautiful spiral. He used that spiral to prove that all non-square integers from 3–17 are irrational.
How would you plot this spiral? At each step, you need to draw a segment of length 1, perpendicular to the hypotenuse of the previous triangle. There are two perpendicular directions, and you want to choose the one that moves counterclockwise.
If we step outside the xy plane, we can compute the cross product of the unit vector in the z direction with the vector (x, y). The cross product will be perpendicular to both, and by the right-hand rule, it will point in the counterclockwise direction.
The cross product of (0, 0, 1) and (x, y, 0) is (-y, x, 0), so the direction we want to go in the xy plane is (-y, x). We divide this vector by its length to get a vector of length 1, then add it to our previous point.
Here is a code written in Python
to plot the spiral
import matplotlib.pyplot as plt
def vertex(x, y):
h = (x**2 + y**2)**0.5
return (x - y/h, y + x/h)
plt.axes().set_aspect(1)
plt.axis('off')
# base of the first triangle
plt.plot([0, 1], [0, 0])
N = 17
x_old, y_old = 1, 0
for n in range(1, N):
x_new, y_new = vertex(x_old, y_old)
# draw short side
plt.plot([x_old, x_new], [y_old, y_new])
# draw hypotenuse
plt.plot([0, x_new], [0, y_new])
x_old, y_old = x_new, y_new
plt.show()