import math

# Conversões e cálculos
# D/L = (Disp_long_tons) / ( (0.01 * LWL_ft)^3 )
# 1 long ton = 2240 lb = 1016.05 kg
# 1 m = 3.28084 ft
# 1 kg = 2.20462 lb

def calc_dl(disp_kg, lwl_m):
    disp_lb = disp_kg * 2.20462
    disp_lt = disp_lb / 2240.0
    lwl_ft = lwl_m * 3.28084
    return disp_lt / ((0.01 * lwl_ft) ** 3)

# Barcos:
# 1. Projeto Cauã (Saveiro 12m)
# LOA: 12.00 m, LWL: 10.28 m, BOA: 3.80 m, Calado: 1.10 m, Disp: 10330 kg, Pot: 39 HP (Yanmar 3JH40), Vela: 80 m2, Combustivel: 150 L, Vel Max: 8.0 kn, Vel Cruzeiro: 6.0 kn
caua = {
    'nome': 'Projeto Cauã (Saveiro 12m)',
    'loa': 12.00, 'lwl': 10.28, 'boa': 3.80, 'calado': 1.10, 'disp': 10330,
    'deadrise': 'N/A (Bojo redondo / Quilha corrida)',
    'pot': 39, 'motor': '1x Yanmar 3JH40 Diesel', 'vela': 80.0, 'comb': 150,
    'vmax': 8.0, 'vcruz': 6.0, 'autonomia': 180
}

# 2. Island Packet 38
# LOA: 12.65 m (41.5 ft), LWL: 10.06 m (33.0 ft), BOA: 3.86 m (12.67 ft), Calado: 1.52 m (5.0 ft), Disp: 9752 kg (21500 lb), Pot: 50 HP (Yanmar 4JH), Vela: 80.83 m2 (870 sqft), Comb: 216 L (57 gal), Vmax: 7.7 kn, Vcruz: 6.5 kn
ip38 = {
    'nome': 'Island Packet 38 (EUA)',
    'loa': 12.65, 'lwl': 10.06, 'boa': 3.86, 'calado': 1.52, 'disp': 9752,
    'deadrise': 'N/A (Quilha corrida / Long Keel)',
    'pot': 50, 'motor': '1x Yanmar 4JH Diesel', 'vela': 80.83, 'comb': 216,
    'vmax': 7.7, 'vcruz': 6.5, 'autonomia': 280
}

# 3. Shannon 38
# LOA: 11.51 m (37.75 ft), LWL: 9.40 m (30.83 ft), BOA: 3.51 m (11.5 ft), Calado: 1.52 m (5.0 ft), Disp: 8391 kg (18500 lb), Pot: 40 HP (Westerbeke Diesel), Vela: 65.31 m2 (703 sqft), Comb: 265 L (70 gal), Vmax: 7.4 kn, Vcruz: 6.2 kn
shannon38 = {
    'nome': 'Shannon 38 (EUA)',
    'loa': 11.51, 'lwl': 9.40, 'boa': 3.51, 'calado': 1.52, 'disp': 8391,
    'deadrise': 'N/A (Quilha corrida / Long Keel)',
    'pot': 40, 'motor': '1x Westerbeke 40 Diesel', 'vela': 65.31, 'comb': 265,
    'vmax': 7.4, 'vcruz': 6.2, 'autonomia': 320
}

# 4. Cape Dory 36
# LOA: 11.01 m (36.12 ft), LWL: 8.23 m (27.0 ft), BOA: 3.25 m (10.67 ft), Calado: 1.52 m (5.0 ft), Disp: 7303 kg (16100 lb), Pot: 30 HP (Perkins/Yanmar), Vela: 57.79 m2 (622 sqft), Comb: 163 L (43 gal), Vmax: 7.0 kn, Vcruz: 5.8 kn
cd36 = {
    'nome': 'Cape Dory 36 (EUA)',
    'loa': 11.01, 'lwl': 8.23, 'boa': 3.25, 'calado': 1.52, 'disp': 7303,
    'deadrise': 'N/A (Quilha corrida / Full Keel)',
    'pot': 30, 'motor': '1x Yanmar 3HM35 Diesel', 'vela': 57.79, 'comb': 163,
    'vmax': 7.0, 'vcruz': 5.8, 'autonomia': 220
}

# 5. Saveiro Tradicional Baiano (Referência Histórica Recôncavo - Porte 12m)
# LOA: 12.20 m, LWL: 10.50 m, BOA: 3.75 m, Calado: 1.15 m, Disp: 11500 kg, Pot: 35 HP (MWM/Yanmar), Vela: 78 m2 (Vela de Içar), Comb: 120 L, Vmax: 7.8 kn, Vcruz: 5.5 kn
saveiro_trad = {
    'nome': 'Saveiro Tradicional Baiano (12m)',
    'loa': 12.20, 'lwl': 10.50, 'boa': 3.75, 'calado': 1.15, 'disp': 11500,
    'deadrise': 'N/A (Bojo redondo / Taça com Alefriz)',
    'pot': 35, 'motor': '1x Yanmar / MWM 35 HP Diesel', 'vela': 78.0, 'comb': 120,
    'vmax': 7.8, 'vcruz': 5.5, 'autonomia': 150
}

barcos = [caua, saveiro_trad, ip38, shannon38, cd36]

for b in barcos:
    loa_boa = b['loa'] / b['boa']
    dl = calc_dl(b['disp'], b['lwl'])
    disp_pot = b['disp'] / b['pot']
    print(f"=== {b['nome']} ===")
    print(f"LOA/BOA: {loa_boa:.2f}")
    print(f"D/L: {dl:.1f}")
    print(f"Disp/Pot: {disp_pot:.1f} kg/HP")
    print(f"SA/D: { (b['vela'] * 10.7639) / ((b['disp']*2.20462/64)**(2/3)):.2f}")
