import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default')
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(18, 10), dpi=300)

c_hull1 = '#1E3A8A'      # Azul Marinho (Saveiro)
c_hull2 = '#047857'      # Verde Garrafa / Verde Clássico (Catboat)
c_wood = '#B45309'       # Madeira
c_sail = '#FEF3C7'       # Lona clara
c_wl = '#0284C7'         # Linha d'Água
c_bottom = '#B91C1C'     # Vermelho vivo

# -------------------------------------------------------------------------
# 1. SAVEIRO DE UMA VELA DE PENA (6,30 m — Bahia, Brasil)
# -------------------------------------------------------------------------
ax1.set_title("1. SAVEIRO DE UMA VELA DE PENA (6,30 m — Bahia, Brasil)\nArmação Latina Tradicional | Fundo Chato Rasa Maré | 1 Vela de Pena (21,5 m²)", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

xs1 = np.linspace(0, 6.30, 80)
sheer1 = 0.65 + 0.35 * (xs1 / 6.30)**2.2
ax1.fill(np.concatenate([xs1, [6.30, 5.5, 3.0, 0, 0]]),
         np.concatenate([sheer1, [1.00, -0.20, -0.45, -0.40, 0.65]]),
         color=c_hull1, edgecolor='black', lw=1.8, label="Casco Saveiro 6,30 m")
ax1.fill([0, 0, 3.0, 5.5, 5.9, 0], [0, -0.40, -0.45, -0.20, 0, 0], color=c_bottom, alpha=0.85)
ax1.axhline(0, color=c_wl, lw=1.2, linestyle='--', label="Linha d'Água (WL)")

# Mastro e Pena 6,30m (P = 7,80 m | E = 5,90 m)
ax1.plot([4.10, 3.90], [-0.40, 3.80], color=c_wood, lw=5) # Mastro
ax1.plot([6.10, 0.40], [0.85, 6.20], color='#78350F', lw=4) # Pena
ax1.fill([6.10, 0.40, 0.20, 6.10], [0.85, 6.20, 0.90, 0.85], color=c_sail, edgecolor='#D97706', lw=1.2)
ax1.text(2.6, 3.2, "Vela de Pena Latina\nÁrea = 21,5 m²", ha='center', fontsize=8, fontweight='bold', color='#78350F')

# Leme externo tradicional
ax1.plot([-0.05, -0.15], [0.70, -0.45], color=c_wood, lw=3)
ax1.add_patch(patches.Rectangle((-0.25, -0.45), 0.15, 0.35, facecolor=c_wood, edgecolor='black'))

ax1.set_xlim(-0.8, 7.5)
ax1.set_ylim(-1.0, 7.5)
ax1.set_aspect('equal')
ax1.axis('off')
desc1 = (
    "• LOA: 6,30 m (20,7 ft) | Boca: 2,40 m\n"
    "• Calado: 0,45 m (Fundo chato com lastro interno)\n"
    "• Armação: Latina Pura (Sem vela de proa)\n"
    "• Motor: Diesel Centro 10–14 CV (Yanmar B10)\n"
    "• Missão: Pesca e transporte na Baía de Todos-os-Santos"
)
ax1.text(0, -0.85, desc1, fontsize=7.8, family='monospace', color='#0F172A',
         bbox=dict(boxstyle='square,pad=0.5', facecolor='#FEF3C7', edgecolor='#D97706', lw=1.2))

# -------------------------------------------------------------------------
# 2. CAPE COD CATBOAT (Marshall 22 / 6,50 m — Nova Inglaterra, EUA)
# -------------------------------------------------------------------------
ax2.set_title("2. CAPE COD CATBOAT (Marshall 22 — 6,50 m — EUA)\nArmação Áurica (Gaff Rig) | Bolina Retrátil | 1 Só Vela Grande (36 m²)", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

xs2 = np.linspace(0, 6.50, 80)
# Sheerline clássica de Catboat (proa alta, boca enorme)
sheer2 = 0.70 + 0.45 * (xs2 / 6.50)**2.2
ax2.fill(np.concatenate([xs2, [6.50, 5.8, 3.2, 0, 0]]),
         np.concatenate([sheer2, [1.15, -0.20, -0.58, -0.50, 0.70]]),
         color=c_hull2, edgecolor='black', lw=1.8, label="Casco Catboat 6,50 m")
ax2.fill([0, 0, 3.2, 5.8, 6.1, 0], [0, -0.50, -0.58, -0.20, 0, 0], color=c_bottom, alpha=0.85)
ax2.axhline(0, color=c_wl, lw=1.2, linestyle='--')

# Bolina retrátil abaixada (Centerboard)
ax2.add_patch(patches.Polygon([[3.0, -0.55], [3.6, -0.55], [3.3, -1.45]], closed=True, facecolor='#1E293B', edgecolor='black', lw=1.2))
ax2.text(3.3, -1.6, "Bolina Retrátil\n(Calado 0,60 m a 1,55 m)", ha='center', fontsize=6.8, fontweight='bold', color='#1E293B')

# Cabinezinha clássica (Cuddy)
ax2.fill([3.2, 5.4, 5.4, 3.2], [0.85, 0.95, 1.45, 1.45], color='#F8FAFC', edgecolor='black', lw=1.2)

# Mastro no bico da proa (Marca do Catboat: mastro sem estais a 0,5 m da proa!)
mast2_x = 5.80
ax2.plot([mast2_x, mast2_x - 0.20], [-0.30, 7.20], color=c_wood, lw=6, label="Mastro no Bico de Proa")

# Retranca longa (Boom passando da popa)
ax2.plot([mast2_x - 0.10, -0.40], [1.25, 0.95], color=c_wood, lw=4, label="Retranca Longa")

# Carangueja (Gaff superior)
ax2.plot([mast2_x - 0.20, 1.80], [6.50, 6.80], color='#78350F', lw=3.5, label="Carangueja Áurica")

# Vela Áurica de 4 lados (Gaff Mainsail)
ax2.fill([mast2_x - 0.10, mast2_x - 0.20, 1.80, -0.35, mast2_x - 0.10],
         [1.25, 6.50, 6.80, 1.00, 1.25], color=c_sail, edgecolor='#047857', lw=1.2)
ax2.text(2.8, 3.8, "Vela Áurica (Gaff)\nÁrea = 36,0 m²", ha='center', fontsize=8, fontweight='bold', color='#047857')

# Leme "orelha de elefante" (Barn-door rudder)
ax2.add_patch(patches.Rectangle((-0.45, -0.50), 0.35, 0.85, facecolor=c_wood, edgecolor='black'))

ax2.set_xlim(-0.8, 7.5)
ax2.set_ylim(-1.8, 7.5)
ax2.set_aspect('equal')
ax2.axis('off')
desc2 = (
    "• LOA: 6,50 m (21,4 ft) | Boca: 3,10 m (Super larga!)\n"
    "• Calado: 0,60 m (bolina levantada) / 1,55 m (arriada)\n"
    "• Armação: Cat-rig Áurica (1 só vela sem buja)\n"
    "• Motor: Diesel Centro 15–20 CV (Yanmar 2YM15)\n"
    "• Missão: Pesca costeira de mariscos e cruzeiro tradicional"
)
ax2.text(0, -0.85, desc2, fontsize=7.8, family='monospace', color='#0F172A',
         bbox=dict(boxstyle='square,pad=0.5', facecolor='#ECFDF5', edgecolor='#047857', lw=1.2))

plt.tight_layout()
output_catboat = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/comparativo_saveiro_vs_catboat.png"
plt.savefig(output_catboat, dpi=300, bbox_inches='tight')
plt.close()
print("Comparativo Saveiro vs Catboat gerado com sucesso!")
