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, ax3) = plt.subplots(3, 1, figsize=(16, 15), dpi=300)

c_hull1 = '#1E3A8A'      # Azul Marinho (Saveiro)
c_hull2 = '#065F46'      # Verde Escuro (Cornish Shrimper)
c_hull3 = '#9A3412'      # Ocre / Terracota (Catboat)
c_wood = '#B45309'       # Madeira
c_sail = '#FEF3C7'       # Lona bege clara
c_jib = '#FDE68A'        # Bujarrona / Vela de proa
c_wl = '#0284C7'         # Linha d'Água
c_bottom = '#B91C1C'     # Vermelho fundo

# -------------------------------------------------------------------------
# 1. MODELO PRINCIPAL: MINI SAVEIRO DE VELA DE IÇAR (6,30 m — Bahia, Brasil)
# -------------------------------------------------------------------------
ax1.set_title("1. MODELO PRINCIPAL: MINI SAVEIRO DE VELA DE IÇAR (6,30 m — Baía de Todos-os-Santos)\nArmação Gaff Sloop/Cutter: Vela Quadrangular c/ Carangueja + Bujarrona no Baucot | Motor Diesel 10-14 CV", fontsize=10, fontweight='bold', color='#0F172A', pad=6)

# Casco 6,30m
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.5)
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='--')

# Baucot / Gurupés projetado 1,50 m além da proa (total x = 7,80 m)
ax1.plot([5.50, 7.80], [0.90, 1.15], color=c_wood, lw=4, label="Baucot / Gurupés")

# Mastro (Posição x = 4,00 m | H = 5,80 m acima do convés)
ax1.plot([4.00, 3.80], [-0.40, 5.80], color=c_wood, lw=5.5)

# Vela Grande (Vela de Içar com Carangueja Ve = 3,40 m | P = 4,20 m | E = 4,50 m)
gaff1_x = [3.85, 1.40]
gaff1_y = [5.10, 6.30]
ax1.plot(gaff1_x, gaff1_y, color='#78350F', lw=3.5) # Carangueja Ve
ax1.fill([3.95, 3.85, 1.40, 0.20, 3.95],
         [0.85, 5.10, 6.30, 0.90, 0.85], color=c_sail, edgecolor='#D97706', lw=1.2)
ax1.text(2.3, 3.2, "Vela de Içar (P x E x Ve)\n(16,5 m²)", ha='center', fontsize=7.2, fontweight='bold', color='#78350F')

# Bujarrona na Proa (I = 4,80 m | J = 3,80 m)
ax1.fill([3.88, 7.75, 4.20, 3.88], [4.80, 1.15, 0.90, 4.80], color=c_jib, edgecolor='#B45309', lw=1.2, alpha=0.9)
ax1.text(5.2, 2.3, "Bujarrona\n(6,0 m²)", ha='center', fontsize=7.0, fontweight='bold', color='#B45309')

# 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, 9.0)
ax1.set_ylim(-1.0, 7.5)
ax1.set_aspect('equal')
ax1.axis('off')
ax1.text(0, -0.85, "★ PROJETO ALBERICO (6,30 m): Boca: 2,40 m | Calado: 0,45 m | Área Vélica: 22,5 m² (Içar + Buja) | Motor: Diesel 12 CV | Vel. Cruzeiro: 5,5 nós", fontsize=7.5, fontweight='bold', color='#0F172A')

# -------------------------------------------------------------------------
# 2. SIMILAR 1: CORNISH SHRIMPER 19 (5,87 m / 6,90 m c/ Gurupés — Reino Unido)
# -------------------------------------------------------------------------
ax2.set_title("2. SIMILAR BRITÂNICO: CORNISH SHRIMPER 19 (Gaff Cutter / Sloop Tradicional)\nCasco Clássico c/ Quilha e Bolina | Gurupés Retrátil | Vela Áurica + Buja | Motor Yanmar 9 HP", fontsize=10, fontweight='bold', color='#0F172A', pad=6)

xs2 = np.linspace(0, 5.87, 80)
sheer2 = 0.70 + 0.35 * (xs2 / 5.87)**2.2
ax2.fill(np.concatenate([xs2, [5.87, 5.2, 2.8, 0, 0]]),
         np.concatenate([sheer2, [1.05, -0.20, -0.48, -0.46, 0.70]]),
         color=c_hull2, edgecolor='black', lw=1.5)
ax2.fill([0, 0, 2.8, 5.2, 5.6, 0], [0, -0.46, -0.48, -0.20, 0, 0], color=c_bottom, alpha=0.85)
ax2.axhline(0, color=c_wl, lw=1.2, linestyle='--')

# Bolina do Shrimper (0,46 m / 1,22 m)
ax2.add_patch(patches.Polygon([[2.6, -0.48], [3.2, -0.48], [2.9, -1.22]], closed=True, facecolor='#1E293B', edgecolor='black', lw=1.0))

# Gurupés do Shrimper (avança 1,03 m além da proa -> x = 6,90 m)
ax2.plot([5.00, 6.90], [0.95, 1.10], color=c_wood, lw=3.5)

# Mastro Shrimper (x = 3,70 m)
ax2.plot([3.70, 3.55], [-0.30, 5.50], color=c_wood, lw=5)

# Vela Grande Áurica Shrimper (13,5 m²)
ax2.plot([3.58, 1.60], [4.80, 5.80], color='#78350F', lw=3.0) # Gaff
ax2.fill([3.65, 3.58, 1.60, 0.40, 3.65],
         [0.85, 4.80, 5.80, 0.90, 0.85], color=c_sail, edgecolor='#065F46', lw=1.2)
ax2.text(2.3, 3.0, "Vela Áurica\n(13,5 m²)", ha='center', fontsize=7.0, fontweight='bold', color='#065F46')

# Buja no Gurupés Shrimper (4,5 m²)
ax2.fill([3.60, 6.85, 3.90, 3.60], [4.60, 1.10, 0.90, 4.60], color=c_jib, edgecolor='#065F46', lw=1.0, alpha=0.85)
ax2.text(4.8, 2.2, "Buja Jib\n(4,5 m²)", ha='center', fontsize=6.8, fontweight='bold', color='#065F46')

ax2.set_xlim(-0.8, 9.0)
ax2.set_ylim(-1.4, 7.5)
ax2.set_aspect('equal')
ax2.axis('off')
ax2.text(0, -0.95, "CORNISH SHRIMPER 19: LOA: 5,87 m (6,90 m c/ gurupés) | Boca: 2,19 m | Calado: 0,46/1,22 m | Área: 18,0 m² | Motor: 9 HP | Vel: 5,2 nós", fontsize=7.5, fontweight='bold', color='#0F172A')

# -------------------------------------------------------------------------
# 3. SIMILAR 2: CAPE COD CATBOAT (Marshall 22 — 6,50 m — EUA)
# -------------------------------------------------------------------------
ax3.set_title("3. SIMILAR AMERICANO: CAPE COD CATBOAT (Marshall 22 — 6,50 m — EUA)\nBoca Gigante (3,10 m) | Mastro no Bico de Proa | 1 Só Vela Áurica Grande (Sem Gurupés)", fontsize=10, fontweight='bold', color='#0F172A', pad=6)

xs3 = np.linspace(0, 6.50, 80)
sheer3 = 0.70 + 0.45 * (xs3 / 6.50)**2.2
ax3.fill(np.concatenate([xs3, [6.50, 5.8, 3.2, 0, 0]]),
         np.concatenate([sheer3, [1.15, -0.20, -0.58, -0.50, 0.70]]),
         color=c_hull3, edgecolor='black', lw=1.5)
ax3.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)
ax3.axhline(0, color=c_wl, lw=1.2, linestyle='--')

# Bolina
ax3.add_patch(patches.Polygon([[3.0, -0.55], [3.6, -0.55], [3.3, -1.45]], closed=True, facecolor='#1E293B', edgecolor='black', lw=1.0))

# Mastro no bico e vela áurica
mast3_x = 5.80
ax3.plot([mast3_x, mast3_x - 0.20], [-0.30, 7.20], color=c_wood, lw=6)
ax3.plot([mast3_x - 0.10, -0.40], [1.25, 0.95], color=c_wood, lw=4) # Retranca
ax3.plot([mast3_x - 0.20, 1.80], [6.50, 6.80], color='#78350F', lw=3.5) # Gaff
ax3.fill([mast3_x - 0.10, mast3_x - 0.20, 1.80, -0.35, mast3_x - 0.10],
         [1.25, 6.50, 6.80, 1.00, 1.25], color=c_sail, edgecolor='#9A3412', lw=1.2)
ax3.text(2.8, 3.8, "Vela Áurica Solteira\n(36,0 m²)", ha='center', fontsize=7.2, fontweight='bold', color='#9A3412')

ax3.set_xlim(-0.8, 9.0)
ax3.set_ylim(-1.6, 7.5)
ax3.set_aspect('equal')
ax3.axis('off')
ax3.text(0, -0.95, "CAPE COD CATBOAT: LOA: 6,50 m | Boca: 3,10 m | Calado: 0,60/1,55 m | Área: 36,0 m² (1 só vela) | Motor: 15–20 HP | Vel: 5,6 nós", fontsize=7.5, fontweight='bold', color='#0F172A')

plt.tight_layout()
output_sim_saveiro = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/estudo_similares_mini_saveiro.png"
plt.savefig(output_sim_saveiro, dpi=300, bbox_inches='tight')
plt.close()
print("Estudo de similares do Mini Saveiro gerado!")
