Skip to content

Instantly share code, notes, and snippets.

@TheLustriVA
Created October 7, 2024 13:48
Show Gist options
  • Save TheLustriVA/c8159736bf3c9a654e638f173dcffce4 to your computer and use it in GitHub Desktop.
Save TheLustriVA/c8159736bf3c9a654e638f173dcffce4 to your computer and use it in GitHub Desktop.

The Tau Circle

My wife isn't a fan of base 10 or of dividing the circle by 360 intervals. We're also a tau household rather than a pi one.

  • Quarter divisions: These will occur at every right angle ((\frac{\tau}{4}), (\frac{\tau}{2}), etc.).
  • Eighth divisions: These will fill in the gaps between the quarters ((\frac{\tau}{8}), (\frac{3\tau}{8}), etc.).

This approach gives us more intuitive reference points around the circle.

Here’s the plot of a circle with intuitive divisions based on (\tau), marked at every quarter and eighth of (\tau) radians. The purple points highlight these key intervals, making it easy to visualize positions at right angles and in between.

circle plot

I like this enough to have put it online. Not a hill I'm going to die on.

Okay, it might be.

# Define divisions: quarters and eighths of tau
intuitive_marks = np.linspace(0, tau, 8, endpoint=False)
# Cartesian coordinates for these divisions
intuitive_x = np.cos(intuitive_marks)
intuitive_y = np.sin(intuitive_marks)
# Labels for quarters and eighths of tau
intuitive_labels = [
r'$0$', r'$\frac{\tau}{8}$', r'$\frac{\tau}{4}$', r'$\frac{3\tau}{8}$',
r'$\frac{\tau}{2}$', r'$\frac{5\tau}{8}$', r'$\frac{3\tau}{4}$', r'$\frac{7\tau}{8}$'
]
# Plot the circle
plt.figure(figsize=(6,6))
plt.plot(x, y, label=r'$r = 1$')
plt.scatter(intuitive_x, intuitive_y, color='purple') # Points for intuitive marks
# Add labels for intuitive divisions
for i in range(len(intuitive_marks)):
plt.text(intuitive_x[i]*1.1, intuitive_y[i]*1.1, intuitive_labels[i], fontsize=12, ha='center', va='center')
# Formatting the plot
plt.gca().set_aspect('equal', adjustable='box')
plt.title(r'Circle with Intuitive Divisions Based on $\tau$ (Quarters and Eighths)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
# Display the plot
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment