Source code for aerosandbox.geometry.nosecone_shapes.haack
import aerosandbox.numpy as np
[docs]def haack_series(
x_over_L: np.ndarray,
C=1 / 3
):
theta = np.arccos(1 - 2 * x_over_L)
radius = ((
theta - np.sin(2 * theta) / 2 + C * np.sin(theta) ** 3
) / np.pi) ** 0.5
return radius
if __name__ == '__main__':
import matplotlib.pyplot as plt
import aerosandbox.tools.pretty_plots as p
fig, ax = plt.subplots()
FR = 3
plt.plot(x_over_L * FR, karman(x_over_L), label="$C=0$ (LD-Haack, Karman)")
plt.plot(x_over_L * FR, LV_haack(x_over_L), label="$C=1/3$ (LV-Haack)")
plt.plot(x_over_L * FR, tangent(x_over_L), label="$C=2/3$ (Tangent)")
p.equal()
p.show_plot(
f"Nosecone Haack Series\nFineness Ratio $FR = {FR}$",
"Length $x$",
"Radius $r$"
)