AeroGeometry

Documentation for AeroGeometry.

A helper library to import and manipulate aircraft geometry.

Installation

using Pkg
Pkg.add("https://github.com/antoniosgeme/AeroGeometry.jl.git")

Quick Start

Working with Airfoils

Load and manipulate airfoils from the built-in database:

using AeroGeometry
import Plots as plt
plt.plotly()

# Load airfoils from the built-in database
airfoil1 = Airfoil("e221")
airfoil2 = Airfoil("naca6409")

# Blend two airfoils
airfoil3 = blend_airfoils(airfoil1, airfoil2)

# Plot them
plt.plot(airfoil1)
plt.plot!(airfoil2)
plt.plot!(airfoil3)

camb = camber(airfoil3)
thick = thickness(airfoil3)

Building Aircraft Geometry

Create wings by defining sections at different spanwise locations:

using AeroGeometry: ft2m

wing_sections = [
    WingSection(
        airfoil=Airfoil("naca2412"),
        position=[0, 0, 0],  # Leading edge location [x, y, z]
        chord=ft2m(5, 4),  # Chord length in meters
    ),
    WingSection(
        airfoil=Airfoil("naca0012"),
        position=[ft2m(4, 3/4) - ft2m(3, 8 + 1/2), ft2m(33, 4)/2, ft2m(33, 4)/2 * sind(1)],
        chord=ft2m(3, 8 + 1/2),
        twist=0  # Twist angle in degrees
    )
]

wing = Wing(name="Main Wing", sections=wing_sections, symmetric=true)
plt.plot(wing)

Complete Airplane

Combine multiple components into a complete airplane:

airplane = Airplane(
    name="Cessna 152",
    wings=[wing, horizontal_stabilizer, vertical_stabilizer],
    fuselages=[fuselage]
)

plt.plot(airplane)

Features

  • Import airfoils from UIUC database or custom files
  • Generate NACA 4-digit airfoils
  • Blend and manipulate airfoil geometries
  • Define wings with variable sweep, dihedral, twist, and taper
  • Create fuselages with custom cross-sections
  • Assemble complete aircraft configurations
  • Visualization with Plots.jl
  • Export geometries for analysis tools