Archery-Tether-Propulsion-Systems / blueprints /AIRFOIL-CORDAGE-SYSTEM.md
tostido's picture
Add blueprints archive: ARACHNE-001, MARIONETTE-001, AIRFOIL-CORDAGE-SYSTEM, PERSPECTIVE
26fa66a

Airfoil-Cordage Force Direction System

Classification: Aerodynamic Force Vectoring via Tether Control
Status: REFERENCE DOCUMENT
Date: 2026-01-22


1. CORE PRINCIPLE

Cordage (tethers/cables) direct wind forces by controlling airfoil orientation.

The tether is NOT just a passive connectorβ€”it's an active control linkage that:

  1. Transmits force from airfoil to anchor
  2. Controls airfoil angle of attack via tension
  3. Enables collective/cyclic pitch across multiple sails
         WIND ───────────────────────────────────────────────►
                                  
                           ╔═══════════════╗
                           β•‘   AIRFOIL     β•‘
                    β”Œβ”€β”€β”€β”€β”€β”€β•«β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•«β”€β”€β”€β”€β”€β”€β”
                    β”‚      β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•      β”‚
                    β”‚             β–²               β”‚
                    β”‚     LIFT    β”‚               β”‚
                    β”‚             β”‚               β”‚
                    β”‚      ───────┼───────        β”‚
                    β”‚             β”‚ Ξ± (pitch)     β”‚
                    β”‚             β”‚               β”‚
                    β”‚             └───────        β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                              TETHER β”‚ (tension)
                                     β”‚
                                     β–Ό
                             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                             β”‚    ANCHOR     β”‚
                             β”‚  (human/spool)β”‚
                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. AIRFOIL FORCE GENERATION

2.1 Lift Equation

L = Β½ ρ VΒ² S Cβ‚—

Where:
  L  = Lift force (N)
  ρ  = Air density (1.225 kg/m³ at sea level)
  V  = Airspeed (m/s)
  S  = Wing area (mΒ²)
  Cβ‚— = Lift coefficient (function of Ξ±)

2.2 Lift Coefficient vs Angle of Attack

    Cβ‚—
    ↑
1.4 β”‚                  ●──────● STALL
    β”‚              ●
1.0 β”‚          ●
    β”‚      ●
0.5 β”‚  ●
    β”‚
  0 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ί Ξ± (angle of attack)
    0Β°    5Β°    10Β°   15Β°   20Β°
              β–²
              β”‚
        LINEAR REGION
        Cβ‚— = 2Ο€ sin(Ξ±) β‰ˆ 2πα

Source: src/physics/aerodynamics.py β†’ AerodynamicsEngine.compute_lift_coefficient()

2.3 Drag Components

    TOTAL DRAG = PARASITIC + INDUCED + STALL
    
    Cd = Cdβ‚€ + Cβ‚—Β²/(π·eΒ·AR) + Cd_stall

         ↑       ↑              ↑
    skin    drag due      separation
    friction   to lift       drag
    + pressure             (post-stall)

Source: src/physics/aerodynamics.py β†’ AerodynamicsEngine.compute_drag_coefficient()


3. CORDAGE FORCE TRANSMISSION

3.1 Tether as Force Vector

The tether transmits force along its length. By controlling anchor position and tension, you control the airfoil's resultant force vector.

                     AIRFOIL
                       β›΅
                      /β”‚\
                     / β”‚ \
           LIFT ────►  β”‚  ◄──── SIDE FORCE
                       β”‚
                       β”‚ DRAG
                       β–Ό
                       β”‚
                       β”‚ TETHER
                       β”‚ (transmits NET force)
                       β”‚
                       β”‚
                       β–Ό
                    ANCHOR
                    
                    
    ════════════════════════════════════════════
    
    FORCE RESOLUTION:
    
         ↑ LIFT (L)
         β”‚
         β”‚    β”Œβ”€β”€β–Ί NET TETHER FORCE
         β”‚   /     (what anchor feels)
         β”‚  /
         β”‚ΞΈ/
         β”‚/        ΞΈ = atan(D/L)
         ●───────►
           DRAG (D)

3.2 Multi-Tether Airfoil Control

A single airfoil with multiple tethers gains attitude control:

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚           AIRFOIL                   β”‚
    β”‚  ╔═════════════════════════════╗    β”‚
    β”‚  β•‘         WING SURFACE        β•‘    β”‚
    β”‚  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•    β”‚
    β”‚     β–²              β–²              β–²  β”‚
    β”‚     β”‚              β”‚              β”‚  β”‚
    β”‚  TETHER A      TETHER B      TETHER Cβ”‚
    β”‚     β”‚              β”‚              β”‚  β”‚
    β””β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”˜
          β”‚              β”‚              β”‚
          β”‚              β”‚              β”‚
          β–Ό              β–Ό              β–Ό
       DRUM A         DRUM B         DRUM C
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   SPOOL BODY


    PITCH CONTROL:
    ─────────────────
    Shorten A, lengthen C β†’ Nose UP
    Shorten C, lengthen A β†’ Nose DOWN
    
    ROLL CONTROL:
    ─────────────────
    Differential tension β†’ Bank left/right

4. CONSTELLATION GEOMETRY

4.1 Hubless Dervish Topology

Multiple airfoils connected by tethers with no central body.

              β›΅ NODE 0
             β•±β”‚β•²
            β•± β”‚ β•²
           β•±  β”‚  β•²    ← TETHER LINKS
          β•±   β”‚   β•²
         β•±    β”‚    β•²
    β›΅ 5      β”‚      β›΅ 1
      β•²      β”‚      β•±
       β•²     β•³     β•±   ← VIRTUAL CENTROID
        β•²    β”‚    β•±      (no physical mass)
         β•²   β”‚   β•±
          β•²  β”‚  β•±
           β•² β”‚ β•±
            β•²β”‚β•±
             β›΅ 3
            β•± β•²
           β•±   β•²
          β•±     β•²
     β›΅ 4       β›΅ 2


    The "vehicle" IS the network.
    Center of mass is emergent.

Source: src/physics/hubless_dervish.py β†’ Lines 1-20

4.2 Force Balance in Constellation

Each node experiences:

  1. Aero forces (lift/drag from its airfoil)
  2. Tether forces (tension from connected nodes)
  3. Gravity
         LIFT ↑
              β”‚
              β”‚    TETHER
              β”‚   TENSION β†—
    DRAG ◄────●─────────►
              β”‚         β†˜
              β”‚          TETHER
              β–Ό           TENSION
           GRAVITY


    EQUILIBRIUM CONDITION:
    ───────────────────────
    Ξ£ F_aero + Ξ£ F_tether + F_gravity = 0

Source: src/physics/hubless_dervish.py β†’ HublessDervish.step()


5. CYCLIC PITCH CONTROL

5.1 Collective vs Cyclic

    COLLECTIVE PITCH                CYCLIC PITCH
    ────────────────               ──────────────
    All airfoils same Ξ±            Ξ± varies with position
    
         β›΅ Ξ±=10Β°                      β›΅ Ξ±=15Β°
        β•±    β•²                       β•±    β•²
       β•±      β•²                     β•±      β•²
    β›΅         β›΅                 β›΅         β›΅
    Ξ±=10Β°     Ξ±=10Β°              Ξ±=5Β°      Ξ±=10Β°
       β•²      β•±                     β•²      β•±
        β•²    β•±                       β•²    β•±
         β›΅ Ξ±=10Β°                      β›΅ Ξ±=5Β°
    
    Effect: Uniform lift          Effect: NET THRUST
    (hover/climb)                 (directional movement)

5.2 Cyclic Pitch Formula

    Ξ±(ΞΈ) = Ξ±_collective + Ξ±_cyclic Β· sin(ΞΈ - Ο†_cyclic)

    Where:
      ΞΈ = Node angular position in constellation
      Ο†_cyclic = Phase angle (determines thrust direction)
      Ξ±_cyclic = Amplitude (determines thrust magnitude)

Source: src/physics/hubless_dervish.py β†’ HublessDervish.get_node_pitch()

def get_node_pitch(self, node: AirfoilNode) -> float:
    # Node's angular position relative to centroid
    r = node.position - self.centroid
    angular_pos = np.arctan2(r[1], r[0]) + self.spin_phase
    
    # Cyclic variation
    cyclic = self.cyclic_amplitude * np.sin(angular_pos - self.cyclic_phase)
    
    return self.collective_pitch + cyclic

6. CORDAGE TENSION DYNAMICS

6.1 Spring-Damper Model

    NODE A ───────[SPRING]───────[DAMPER]─────── NODE B
           ←────── stretch ──────→
           ←────── velocity ─────→

    TENSION = k Β· Ξ”x + c Β· Ξ”v

    Where:
      k = Stiffness (50,000 N/m typical)
      Ξ”x = Stretch beyond rest length
      c = Damping coefficient (500 Ns/m)
      Ξ”v = Relative velocity along cable

Source: src/physics/hubless_dervish.py β†’ TetherLink class, compute_tether_forces()

6.2 Tension-Only Constraint

    CABLES CAN PULL, NOT PUSH
    
    IF stretch < 0:
        tension = 0  (slack cable)
    ELSE:
        tension = k * stretch + damping
    
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  TAUT            β”‚  SLACK                    β”‚
    β”‚                  β”‚                           β”‚
    β”‚  ─────●─────●    β”‚    ●                      β”‚
    β”‚  (tension > 0)   β”‚     β•²                     β”‚
    β”‚                  β”‚      β•² (catenary sag)     β”‚
    β”‚                  β”‚       ●                   β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7. AIRFOIL NODE SPECIFICATION

7.1 Physical Properties

Property Symbol Value Units Source
Mass m 2.0 kg AirfoilNode.mass
Wing area S 0.5 mΒ² AirfoilNode.wing_area
Aspect ratio AR 6.0 - AirfoilNode.aspect_ratio
Pitch authority - Β±15Β° rad HublessDervish
Roll authority - Β±30Β° rad -

7.2 Aerodynamic Surface Properties

Property Symbol Value Units Source
Span b 1.5 m TABAerodynamics.tab_wing
Chord c 0.3 m TABAerodynamics.tab_wing
Lift slope Cβ‚—_Ξ± 5.7 /rad TABAerodynamics.tab_wing
Max Cβ‚— Cβ‚—_max 1.4 - TABAerodynamics.tab_wing
Zero-lift drag Cdβ‚€ 0.04 - TABAerodynamics.tab_wing
Stall angle Ξ±_stall 15Β° deg AerodynamicsEngine

Source: src/physics/aerodynamics.py β†’ AeroSurface, TABAerodynamics


8. FLIGHT REGIME CLASSIFICATION

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                                                            β”‚
    β”‚   ATTACHED     STALL       DEEP        POST                β”‚
    β”‚   FLOW         ONSET       STALL       STALL               β”‚
    β”‚                                                            β”‚
    β”‚   │←────────→│←────→│←──────────→│←──────────────→│       β”‚
    β”‚   0Β°        15Β°   18Β°          45Β°              90Β°        β”‚
    β”‚                                                            β”‚
    β”‚   Cβ‚— linear   Cβ‚— drops   Cβ‚— β‰ˆ 2sin(Ξ±)cos(Ξ±)               β”‚
    β”‚   Cd low      Cd rises   Cd massive                        β”‚
    β”‚                                                            β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Source: src/physics/aerodynamics.py β†’ FlightRegime enum


9. CROSS-SYSTEM INTEGRATION

9.1 MARIONETTE Sail Control

The MARIONETTE spool uses drum-based cordage to control sail pitch:

    SPOOL DRUM ─────cable────→ SAIL AIRFOIL
    
    REEL IN  = Increase Ξ± = More lift
    PAY OUT  = Decrease Ξ± = Less lift
    
    Champion brain reads tension β†’ decides cable lengths

Cross-reference: MARIONETTE-001

9.2 ARACHNE Launch Integration

The ARACHNE launcher provides initial velocity to deploy the constellation:

    FOREARM ──elastic──→ SPOOL ──throw──→ CONSTELLATION
                                              β”‚
                                              β–Ό
                                         CENTRIFUGAL
                                         DEPLOYMENT
                                              β”‚
                                              β–Ό
                                         CYCLIC PITCH
                                         CONTROL

Cross-reference: ARACHNE-001


10. OPERATIONAL SECTORS

Each TAB operates in a designated wedge-shaped sector:

                    UP (+Z)
                     β”‚
                     β”‚ 90Β°
          135Β° β•²     β”‚     β•± 45Β°
                β•²    β”‚    β•±
                 β•²   β”‚   β•±
    LEFT          β•²  β”‚  β•±          RIGHT
    (-Y) ──────────╲─┼─╱────────── (+Y)
    180Β°           β•²β”‚β•±             0Β°
                   β•±β”‚β•²
                  β•± β”‚ β•²
                 β•±  β”‚  β•²
          -135Β°β•±    β”‚    β•²-45Β°
                    β”‚
                    β”‚ -90Β°
                  DOWN (-Z)
                  
                  
    SECTOR BOUNDARIES:
    ─────────────────
    UP:    45Β° to 135Β°
    DOWN: -45Β° to -135Β°
    LEFT: 135Β° to 225Β° (or -135Β° to -180Β°, 180Β° to 135Β°)
    RIGHT: -45Β° to 45Β°

Source: src/physics/cable_geometry.py β†’ Lines 1-45, OperationalSector


11. SOURCE FILE INDEX

File Purpose Key Classes/Functions
src/physics/aerodynamics.py Lift/drag/side-force AerodynamicsEngine, AeroSurface
src/physics/hubless_dervish.py Constellation physics HublessDervish, AirfoilNode, TetherLink
src/physics/cable_geometry.py Cable intersection CableGeometry, OperationalSector
src/physics/marionette_spool.py Sail spool control MarionetteSpool, CableDrum
src/physics/tether_dynamics.py Tether physics (referenced)
src/physics/slingshot_dynamics.py Launcher physics (referenced)

12. KEY EQUATIONS SUMMARY

Aerodynamics

Lift:     L = ½ρVΒ²SCβ‚—
Drag:     D = ½ρV²SCd
Cβ‚—:       Cβ‚— = 2π·sin(Ξ±) Β· Ξ·    (thin airfoil, Ξ· = efficiency)
Cd:       Cd = Cdβ‚€ + Cβ‚—Β²/(π·eΒ·AR)

Tether Mechanics

Tension:  T = kΒ·Ξ”x + cΒ·Ξ”v      (spring-damper)
Force:    F⃗ = T·n̂             (along cable direction)

Constellation Control

Pitch:    Ξ±(ΞΈ) = Ξ±_coll + Ξ±_cycΒ·sin(ΞΈ - Ο†)
Thrust:   F⃗_thrust = Σ L_asymmetric
Centroid: r⃗_c = Σ(m_i·r⃗_i) / Σm_i

Document generated from source code analysis. All equations and parameters traced to implementation.