codexnail-aperture-transmission.py
nail-aperture-transmission.py
"""Original aperture model, not measured nail data.
Tested with Python 3.14, NumPy 2.3.5 and Matplotlib 3.10.7.
Run from the image output directory; writes nail-aperture-transmission.png there.
"""
from pathlib import Path
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
def transmission(aperture_radius, distance=10.0, direct=0.04, diffuse=0.08):
"""Coaxial circular aperture and a pointlike, constant-radiance emitter.
Radius and distance have the same units. The direct component is assumed
to be fully collected for every strictly positive radius shown.
"""
radius = np.asarray(aperture_radius)
return direct + diffuse * radius**2 / (radius**2 + distance**2)
def main():
fig, ax = plt.subplots(figsize=(7.2, 4.8), dpi=100, facecolor="white")
ax.set_facecolor("white")
radius = np.linspace(0.05, 30, 600)
ax.plot(radius, 100 * transmission(radius), color="#215b9a", lw=2.4,
label="Collected direct + diffuse light")
ax.axhline(12, color="#728d42", ls="--", lw=1.6,
label="Total transmitted fraction: 12%")
ax.axhline(4, color="#b66d33", ls=":", lw=1.6,
label="Fully collected direct component: 4%")
for radius_value, label_position in [(5, (8, -30)), (10, (12, 9))]:
value = 100 * float(transmission(radius_value))
ax.scatter([radius_value], [value], color="#215b9a", zorder=3)
ax.annotate(f"a = {radius_value} mm: {value:g}%", (radius_value, value),
xytext=label_position, textcoords="offset points", fontsize=9)
ax.set(xlim=(0, 30), ylim=(0, 13), xlabel="Aperture radius a (mm)",
ylabel="Fraction of incident power (%)",
title="A wider aperture collects more diffuse transmission")
ax.grid(alpha=0.17)
ax.legend(loc="lower right", fontsize=8.5, framealpha=1)
fig.text(0.5, 0.02,
"Original model: distance 10 mm; constant diffuse radiance; direct beam fully accepted.\n"
"The specimen is unchanged. No fluorescence, diffraction or finite emitter size is modeled.",
ha="center", fontsize=8)
fig.tight_layout(rect=(0, 0.075, 1, 1))
fig.savefig(Path("nail-aperture-transmission.png"), facecolor="white")
plt.close(fig)
if __name__ == "__main__":
main()