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

# Configurar prancha técnica estilo clássico naval
plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default')
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(18, 14), dpi=300)

c_wood = '#B45309'       # Mogno / Cedro envernizado
c_gold = '#D97706'       # Friso dourado
c_hull = '#F8FAFC'       # Casco branco puro
c_bottom_us = '#065F46'  # Verde clássico escuro (Dark Harbor)
c_bottom_br = '#B91C1C'  # Vermelho óxido brasileiro (Guanabara)
c_sail = '#FEF3C7'       # Velame dacron creme/branco clássico
c_dark = '#0F172A'       # Linhas e ferragens
c_wl = '#0284C7'         # Linha d'Água
c_dim = '#DC2626'        # Cotas vermelhas

# =========================================================================
# 1. VELEIRO DA FOTO: DARK HARBOR 17 1/2 (EUA, 1908)
# =========================================================================
ax1.set_title("1. REFERÊNCIA INTERNACIONAL DA SUA FOTO: DARK HARBOR 17 1/2 (EUA, 1908 — B. B. CROWNINSHIELD)\nLOA: 7,87 m (25' 10\") | LWL: 5,33 m | Boca: 1,91 m | Calado: 1,30 m | Quilha Longa de Chumbo (635 kg) | Sloop Fracionado", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

xs1 = np.linspace(0, 7.87, 150)
sheer1 = 0.62 + 0.43 * ((xs1 - 2.80)/5.07)**2.0 * np.where(xs1 >= 2.80, 1.0, 0.6)

poly_hull_x1 = np.concatenate([xs1, [7.87, 6.68, 5.20, 3.80, 2.40, 1.35, 0.20, 0.0]])
poly_hull_y1 = np.concatenate([sheer1, [1.05, 0.00, -0.85, -1.30, -0.95, 0.00, 0.45, 0.75]])
ax1.fill(poly_hull_x1, poly_hull_y1, color=c_hull, edgecolor=c_dark, lw=2.0, label="Casco Branco Clássico (DH 17)")

# Friso Dourado
ax1.plot(xs1, sheer1 - 0.06, color=c_gold, lw=2.5)

# Fundo / Quilha Longa de Chumbo
x_bot1 = [1.35, 2.40, 3.80, 5.20, 6.68, 1.35]
y_bot1 = [0.00, -0.95, -1.30, -0.85, 0.00, 0.00]
ax1.fill(x_bot1, y_bot1, color=c_bottom_us, edgecolor='black', lw=1.2, label="Fundo Verde Escuro (Quilha Fixa 1,30 m)")
ax1.axhline(0, color='#38BDF8', lw=1.8, linestyle='-', label="Linha d'Água (LWL = 5,33 m)")

# Lastro de chumbo
ax1.fill([2.80, 4.40, 4.20, 3.00], [-0.85, -0.85, -1.28, -1.28], color='#334155', edgecolor='black', lw=1.0)
ax1.text(3.60, -1.05, "LASTRO CHUMBO 635 kg", ha='center', va='center', fontsize=6.5, fontweight='bold', color='white')

# Braçola de Mogno
ax1.plot([1.80, 1.85, 4.80, 4.90], [0.65, 0.85, 0.82, 0.68], color=c_wood, lw=4.5)

# Mastro e Velame (28,8 m²)
mast_x1 = 4.70
ax1.plot([mast_x1, mast_x1 - 0.35], [0.68, 10.40], color=c_wood, lw=5.5)
ax1.plot([mast_x1 - 0.05, 0.60], [1.10, 0.95], color=c_wood, lw=3.8) # Retranca
# Vela Grande
ax1.add_patch(patches.Polygon([[mast_x1 - 0.05, 1.15], [mast_x1 - 0.35, 10.20], [0.65, 1.05]], closed=True, facecolor=c_sail, edgecolor='#D97706', lw=1.2))
# Buja c/ Clube
ax1.plot([6.50, 4.80], [0.82, 0.88], color=c_wood, lw=2.8)
ax1.add_patch(patches.Polygon([[6.45, 0.90], [mast_x1 - 0.25, 7.80], [4.85, 0.95]], closed=True, facecolor=c_sail, edgecolor='#B45309', lw=1.2))

# Cotas
ax1.annotate('', xy=(0, -1.50), xytext=(7.87, -1.50), arrowprops=dict(arrowstyle='<->', color=c_dim, lw=1.5))
ax1.text(3.93, -1.68, "LOA = 7,87 m (25' 10\") | LWL = 5,33 m | Boca = 1,91 m | Calado = 1,30 m", ha='center', va='top', fontsize=8.0, fontweight='bold', color=c_dim)

ax1.set_xlim(-0.8, 8.8)
ax1.set_ylim(-1.9, 11.0)
ax1.set_aspect('equal')
ax1.axis('off')
ax1.legend(loc='upper right', fontsize=7.2)

# =========================================================================
# 2. SIMILAR CLÁSSICO BRASILEIRO: CLASSE GUANABARA (7,20 m — RIO/BRASIL, 1950)
# =========================================================================
ax2.set_title("2. O EQUIVALENTE HISTÓRICO BRASILEIRO: VELEIRO CLÁSSICO 'CLASSE GUANABARA' (1950)\nLOA: 7,20 m (24 ft) | LWL: 6,00 m | Boca: 2,36 m | Calado: 0,35 m a 1,40 m (Bolina Pesada) | Construção em Cedro e Peroba", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

xs2 = np.linspace(0, 7.20, 150)
# Sheerline clássico brasileiro com suave curvatura e boca generosa (2,36 m)
sheer2 = 0.65 + 0.38 * ((xs2 - 2.50)/4.70)**2.0 * np.where(xs2 >= 2.50, 1.0, 0.7)

# Casco do Guanabara: Proa lançada (spoon bow), popa clássica em balanço e fundo raso com bolina móvel de ferro
keel_pts_x2 = [0.0, 0.30, 1.00, 2.50, 4.20, 5.80, 7.20]
keel_pts_y2 = [0.70, 0.35, 0.00, -0.35, -0.38, 0.00, 1.03]

poly_hull_x2 = np.concatenate([xs2, [7.20, 5.80, 4.20, 2.50, 1.00, 0.30, 0.0]])
poly_hull_y2 = np.concatenate([sheer2, [1.03, 0.00, -0.38, -0.35, 0.00, 0.35, 0.70]])
ax2.fill(poly_hull_x2, poly_hull_y2, color='#F8FAFC', edgecolor=c_dark, lw=2.0, label="Casco em Cedro/Peroba (Guanabara)")

# Friso em madeira de lei envernizada na borda (Verdugo)
ax2.plot(xs2, sheer2, color=c_wood, lw=3.0)

# Obra Viva / Fundo Vermelho Anti-incrustante clássico da Baía de Guanabara
x_bot2 = [1.00, 2.50, 4.20, 5.80, 1.00]
y_bot2 = [0.00, -0.35, -0.38, 0.00, 0.00]
ax2.fill(x_bot2, y_bot2, color=c_bottom_br, edgecolor='black', lw=1.2, label="Obra Viva / Fundo Raso (-0,35 m)")
ax2.axhline(0, color='#38BDF8', lw=1.8, linestyle='-', label="Linha d'Água (LWL = 6,00 m)")

# A grande bolina móvel pesada de ferro/aço abaixada (Calado vai de 0,35 m a 1,40 m)
centerboard_pts = [[3.20, -0.36], [4.10, -0.37], [3.60, -1.40], [3.10, -1.35]]
ax2.fill([3.20, 4.10, 3.60, 3.10], [-0.36, -0.37, -1.40, -1.35], color='#1E293B', edgecolor='black', lw=1.2, label="Bolina Retrátil Pesada (Calado 0,35 / 1,40 m)")
ax2.text(3.60, -0.85, "BOLINA PESADA\n(0,35 m a 1,40 m)", ha='center', va='center', fontsize=6.5, fontweight='bold', color='white')

# Leme externo tradicional de cana no espelho de popa
ax2.add_patch(patches.Polygon([[0.05, 0.65], [0.05, -0.55], [-0.25, -0.55], [-0.20, 0.65]], closed=True, facecolor=c_wood, edgecolor='black', lw=1.2))
ax2.plot([-0.15, 0.85], [0.72, 0.78], color=c_wood, lw=3.0) # Cana do leme

# Braçola de cockpit em madeira envernizada
ax2.plot([1.20, 1.30, 4.20, 4.30], [0.68, 0.82, 0.80, 0.70], color=c_wood, lw=4.0, label="Braçola em Madeira de Lei")

# Pequena cabine de abrigo / casaria baixa (Cuddy clássico)
ax2.fill([4.20, 4.20, 5.20, 5.20], [0.70, 0.95, 0.98, 0.78], color='#FEF3C7', edgecolor='black', lw=1.0)
ax2.add_patch(patches.Ellipse((4.70, 0.85), 0.35, 0.14, facecolor='#38BDF8', edgecolor='black', lw=0.8))

# Mastro Marconi Brasileiro (H = 9,00 m acima do convés)
mast_x2 = 4.25
ax2.plot([mast_x2, mast_x2 - 0.25], [0.80, 9.60], color=c_wood, lw=5.5, label="Mastro Marconi em Pinho/Alumínio")
ax2.plot([mast_x2 - 0.05, 0.70], [1.15, 0.95], color=c_wood, lw=3.8) # Retranca

# Velame da Classe Guanabara (20,0 m² total)
# Vela Grande (13,5 m²)
sail_main2 = [[mast_x2 - 0.05, 1.20], [mast_x2 - 0.25, 9.40], [0.75, 1.05]]
ax2.add_patch(patches.Polygon(sail_main2, closed=True, facecolor=c_sail, edgecolor='#D97706', lw=1.2, label="Vela Grande (13,5 m²)"))
# Genoa / Buja (6,5 m²)
sail_jib2 = [[5.95, 0.90], [mast_x2 - 0.20, 7.20], [4.40, 0.95]]
ax2.add_patch(patches.Polygon(sail_jib2, closed=True, facecolor=c_sail, edgecolor='#B45309', lw=1.2, label="Buja / Genoa (6,5 m²)"))

# Estaiamento
ax2.plot([mast_x2 - 0.20, 6.10], [7.20, 0.85], color='#64748B', lw=1.2) # Estai proa
ax2.plot([mast_x2 - 0.20, 0.80], [7.20, 0.70], color='#64748B', lw=1.2) # Brandal

# Cotas Guanabara
ax2.annotate('', xy=(0, -1.50), xytext=(7.20, -1.50), arrowprops=dict(arrowstyle='<->', color=c_dim, lw=1.5))
ax2.text(3.60, -1.68, "Comprimento Total (LOA) = 7,20 m (24 pés) | LWL = 6,00 m | Boca = 2,36 m | Calado = 0,35 / 1,40 m", ha='center', va='top', fontsize=8.0, fontweight='bold', color=c_dim)

ax2.set_xlim(-0.8, 8.8)
ax2.set_ylim(-1.9, 11.0)
ax2.set_aspect('equal')
ax2.axis('off')
ax2.legend(loc='upper right', fontsize=7.2)

plt.tight_layout()
output_guanabara = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/comparativo_dark_harbor_vs_guanabara.png"
plt.savefig(output_guanabara, dpi=300, bbox_inches='tight')
plt.close()
print("Comparativo com similar brasileiro gerado com sucesso!")
