import math
from math import sqrt as mS
import matplotlib
from matplotlib.patches import Circle as mpC
import matplotlib.pyplot as plt
import numpy as np
#Viridis.
colors = ["#FDE725FF",
"#7AD151FF",
"#22A884FF",
"#2A788EFF",
"#414487FF",
"#440154FF"]
#Clear axes.
def clearAx(ax):
"""
Clear axes.
Parameters:
ax - Current ax.
Returns:
ax - Updated ax.
"""
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["left"].set_visible(False)
ax.set_xticks([])
ax.set_yticks([])
return(ax)
def plotHelper() :
fig = plt.figure(figsize = (8, 8))
ax = fig.add_subplot(xlim = (-5.1, 5.1),
ylim = (-5.1, 5.1))
fig.subplots_adjust(left = 0.0,
bottom = 0,
right = 1,
top = 1)
#Remove axes and ticks.
ax = clearAx(ax)
#Sphere.
ax.add_patch(mpC((0, 0),
radius = 3,
edgecolor = 'k',
facecolor = 'None',
lw = 1))
R = 45 / mS(91)
#CAGDI
ax.plot([0, 0, R, R/3, R/3],
[-5, 5, 5, -5, 5],
c = 'k',
ls = ":",
lw = 1)
#BFH
ax.plot([0, 2*R/3, 2*R/3],
[0, 0, 5],
c = 'k',
ls = ":",
lw = 1)
x = 3 / mS(1 + R**2/225)
y = x * -R/15
#BE (r)
ax.plot([0, x],
[0, y],
c = colors[1],
lw = 2)
#DJ (h)
ax.plot([R/3, R/3],
[-5, 0],
c = colors[3],
lw = 2)
#AG (R)
ax.plot([0, R],
[5, 5],
c = colors[5],
lw = 4)
#BDG (light)
ax.plot([0, R/3, R],
[0, -5, 5],
c = colors[0],
lw = 2)
ax.scatter([0, 0, 0, R/3, R/3, R/3, x, 2*R/3, 2*R/3, R],
[5, 0, -5, 5, 0, -5, y, 5, 0, 5],
lw = 5,
color = 'k',
zorder = 3)
text = [("A", (-0.2, 4.8), 'k', 15, 0),
("B", (-0.2, 0), 'k', 15, 0),
("C", (-0.2, -4.9), 'k', 15, 0),
("D", (R/3-0.2, -4.9), 'k', 15, 0),
("E", (x+0.2, y), 'k', 15, 0),
("F", (2*R/3+0.2, 0), 'k', 15, 0),
("G", (4.8, 4.8), 'k', 15, 0),
("H", (2*R/3+0.2, 4.8), 'k', 15, 0),
("I", (R/3-0.2, 4.8), 'k', 15, 0),
("J", (R/3-0.15, 0.15), 'k', 15, 0),
("h", (R/3-0.25, -2.5), colors[3], 40, 90),
("r", (R/3-0.25, -0.7), colors[1], 40, -18),
("R", (R/2, 4.65), colors[5], 40, 0)]
for t in text :
plt.annotate(text = t[0],
xy = t[1],
c = t[2],
size = t[3],
ha = 'center',
va = 'center',
rotation = t[4],
zorder = 4)
fig.savefig('2026.01.16.png', bbox_inches = "tight");
plotHelper()
for r in range(1, 200) :
for h in range(r, 400) :
R = 3*h*r / mS(4*h**2-r**2)
if R == int(R) and h > r :
print(h, r, R)
52 40 65.0 85 80 136.0 104 80 130.0 200 112 175.0 156 120 195.0 170 160 272.0 208 160 260.0