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 envernizado (braçolas)
c_gold = '#D97706'       # Friso dourado (Cove stripe)
c_hull = '#F8FAFC'       # Casco branco puro
c_bottom = '#065F46'     # Verde clássico escuro / anti-incrustante
c_boot = '#38BDF8'       # Linha d'água verde-água/azul claro
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. PERFIL DO VELEIRO DA FOTO: DARK HARBOR 17 1/2 (CLASSIC DAYSAILER)
# =========================================================================
ax1.set_title("1. PERFIL TÉCNICO COMPLETO: DARK HARBOR 17 1/2 (DESIGN B. B. CROWNINSHIELD, 1908)\nLOA: 7,87 m (25' 10\") | LWL: 5,33 m (17' 6\") | Boca: 1,91 m | Calado: 1,30 m | Quilha Longa c/ Lastro de Chumbo (635 kg)", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

xs1 = np.linspace(0, 7.87, 150)
# Sheerline clássica elegante: proa lançada (+1,05 m), meia-nau (+0,62 m), popa lançada em balanço (+0,75 m)
sheer1 = 0.62 + 0.43 * ((xs1 - 2.80)/5.07)**2.0 * np.where(xs1 >= 2.80, 1.0, 0.6)

# Linhas do Casco Tradicional com Balanços Longos (Overhangs)
# Popa x=0 (y=0.75m), balanço de popa até entrar na água em x=1.35m (y=0.0m),
# quilha longa descendo até x=3.2m (y=-1.30m), subindo suavemente até tocar a água na proa em x=6.68m (y=0.0m),
# roda de proa em colher (spoon bow) subindo até x=7.87m (y=1.05m)
keel_pts_x = [0.0, 0.20, 1.35, 2.40, 3.80, 5.20, 6.68, 7.87]
keel_pts_y = [0.75, 0.45, 0.00, -0.95, -1.30, -0.85, 0.00, 1.05]

# Costado Branco Naval (Obra Morta)
poly_hull_x = np.concatenate([xs1, [7.87, 6.68, 5.20, 3.80, 2.40, 1.35, 0.20, 0.0]])
poly_hull_y = np.concatenate([sheer1, [1.05, 0.00, -0.85, -1.30, -0.95, 0.00, 0.45, 0.75]])
ax1.fill(poly_hull_x, poly_hull_y, color=c_hull, edgecolor=c_dark, lw=2.0, label="Casco Branco Clássico")

# Friso Dourado Esculpido (Gold Cove Stripe)
ax1.plot(xs1, sheer1 - 0.06, color=c_gold, lw=2.5, label="Friso Dourado (Cove Stripe)")

# Fundo / Quilha Longa de Chumbo (Obra Viva abaixo da WL = 0)
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, edgecolor='black', lw=1.2, label="Obra Viva / Fundo Verde Escuro")
ax1.axhline(0, color=c_boot, lw=2.0, linestyle='-', label="Linha d'Água (LWL = 5,33 m | 17' 6\")")

# Lastro de Chumbo fundido na quilha (635 kg 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 DE CHUMBO (635 kg)", ha='center', va='center', fontsize=6.5, fontweight='bold', color='white')

# Leme fixado no calcanhar da quilha (Keel-hung rudder)
ax1.add_patch(patches.Polygon([[1.45, 0.0], [2.15, -0.75], [2.35, -0.90], [1.70, -0.10]], closed=True, facecolor=c_wood, edgecolor='black', lw=1.2))

# Braçolas do Cockpit em Mogno Envernizado (Varnished Mahogany Coaming)
coam_x = [1.80, 1.85, 4.80, 4.90]
coam_y = [0.65, 0.85, 0.82, 0.68]
ax1.plot(coam_x, coam_y, color=c_wood, lw=4.5, label="Braçola de Mogno Envernizado")

# Tripulantes desenhados na posição da foto
# Timoneiro à popa (Colete vermelho + boné branco): x = 2.40 m
ax1.add_patch(patches.Rectangle((2.25, 0.70), 0.30, 0.45, facecolor='#DC2626', edgecolor='black', lw=1.0)) # Colete vermelho
ax1.add_patch(patches.Circle((2.40, 1.25), 0.12, facecolor='#FED7AA', edgecolor='black', lw=0.8)) # Rosto
ax1.add_patch(patches.Ellipse((2.40, 1.35), 0.28, 0.08, facecolor='white', edgecolor='black', lw=0.8)) # Boné
# Tripulante de proa (Chapéu de palha): x = 3.60 m
ax1.add_patch(patches.Rectangle((3.45, 0.70), 0.30, 0.45, facecolor='#3B82F6', edgecolor='black', lw=1.0)) # Camisa azul
ax1.add_patch(patches.Circle((3.60, 1.25), 0.12, facecolor='#FED7AA', edgecolor='black', lw=0.8)) # Rosto
ax1.add_patch(patches.Ellipse((3.60, 1.35), 0.38, 0.10, facecolor='#FDE047', edgecolor='#B45309', lw=1.0)) # Chapéu de palha

# Mastro Marconi / Fracionado em Madeira Envernizada (H = 9,80 m acima convés)
mast_x = 4.70
ax1.plot([mast_x, mast_x - 0.35], [0.68, 10.40], color=c_wood, lw=6.0, label="Mastro de Madeira Envernizada")
# Retranca de madeira
ax1.plot([mast_x - 0.05, 0.60], [1.10, 0.95], color=c_wood, lw=4.0)

# Velame Completo da Foto
# 1. Vela Grande Marconi (Main Sail — 20,5 m²)
sail_main = [[mast_x - 0.05, 1.15], [mast_x - 0.35, 10.20], [0.65, 1.05]]
ax1.add_patch(patches.Polygon(sail_main, closed=True, facecolor=c_sail, edgecolor='#D97706', lw=1.2, label="Vela Grande (20,5 m²)"))
# 2. Buja Autovirante com Clube (Club-footed Jib — 8,3 m²)
ax1.plot([6.50, 4.80], [0.82, 0.88], color=c_wood, lw=3.0) # Retranca da buja (Club)
sail_jib = [[6.45, 0.90], [mast_x - 0.25, 7.80], [4.85, 0.95]]
ax1.add_patch(patches.Polygon(sail_jib, closed=True, facecolor=c_sail, edgecolor='#B45309', lw=1.2, label="Buja Autovirante (8,3 m²)"))

# Estaiamento
ax1.plot([mast_x - 0.25, 6.60], [7.80, 0.82], color='#64748B', lw=1.2) # Estai de proa fracionado
ax1.plot([mast_x - 0.25, 1.40], [7.80, 0.70], color='#64748B', lw=1.2) # Brandal ré

# Cotas
ax1.annotate('', xy=(0, -1.55), xytext=(7.87, -1.55), arrowprops=dict(arrowstyle='<->', color=c_dim, lw=1.5))
ax1.text(3.93, -1.72, "Comprimento Total (LOA) = 7,87 m (25' 10\") | Balanço Proa = 1,19 m | Balanço Popa = 1,35 m", ha='center', va='top', fontsize=8.0, fontweight='bold', color=c_dim)

ax1.annotate('', xy=(1.35, -0.25), xytext=(6.68, -0.25), arrowprops=dict(arrowstyle='<->', color=c_wl, lw=1.2))
ax1.text(4.01, -0.40, "Linha d'Água (LWL) = 5,33 m (17' 6\")", ha='center', va='top', fontsize=7.5, fontweight='bold', color=c_wl)

ax1.set_xlim(-0.8, 9.0)
ax1.set_ylim(-2.0, 11.2)
ax1.set_aspect('equal')
ax1.axis('off')
ax1.legend(loc='upper right', fontsize=7.2)

# =========================================================================
# 2. QUADRO COMPARATIVO: O VELEIRO DA FOTO vs. OS 4 GRANDES SIMILARES
# =========================================================================
ax2.set_title("2. ESTUDO COMPARATIVO DE SIMILARES (CLASSIC DAYSAILERS & SPIRIT OF TRADITION)\nConfronto de Dimensões, Quilha, Área Vélica, Lastro e Estilo entre os Grandes Clássicos", fontsize=10.5, fontweight='bold', color='#0F172A', pad=10)

sim_data = [
    ["Veleiro / Estaleiro", "País / Tradição", "LOA (m / ft)", "LWL (m / ft)", "Boca (m)", "Calado (m)", "Desloc. (kg)", "Lastro (kg / %)", "Área Vélica", "Armação / Características"],
    ["★ VELEIRO DA FOTO\n(Dark Harbor 17 1/2)", "EUA (Maine / 1908)\nB.B. Crowninshield", "7,87 m (25' 10\")", "5,33 m (17' 6\")", "1,91 m (6' 3\")", "1,30 m (4' 3\")", "1.565 kg", "635 kg (41%)", "28,8 m²", "Sloop fracionado c/ buja autovirante (club-footed). Quilha longa e braçolas em mogno."],
    ["Herreshoff 12 1/2\n(N.G. Herreshoff)", "EUA (Rhode Island / 1914)\nCape Cod Shipbuilding", "4,83 m (15' 10\")", "3,81 m (12' 6\")", "1,78 m (5' 10\")", "0,76 m (2' 6\")", "567 kg", "333 kg (59%)", "13,0 m²", "O patriarca dos daysailers americanos. Quilha com bolina interna. Pernoite zero, pura elegância."],
    ["Rustler 24\n(David Thomas)", "Reino Unido (Cornwall)\nRustler Yachts", "7,32 m (24' 0\")", "5,38 m (17' 8\")", "1,91 m (6' 3\")", "1,04 m (3' 5\")", "1.640 kg", "940 kg (57%)", "26,0 m²", "Inspirado no clássico International Dragon. Quilha corrida profunda de chumbo, convés em teca."],
    ["Tofinou 7\n(Joubert-Nivelt)", "França (La Rochelle)\nLatitude 46", "7,00 m (23' 0\")", "5,40 m (17' 9\")", "2,25 m (7' 5\")", "1,10 m (3' 7\")", "1.300 kg", "500 kg (38%)", "24,5 m²", "Modern-Classic / Spirit of Tradition. Convés em teca com verniz espelhado e buja autovirante."],
    ["Alerion Express 28\n(Carl Schumacher)", "EUA (Rhode Island)\nAlerion Yachts", "8,61 m (28' 3\")", "6,93 m (22' 9\")", "2,50 m (8' 2\")", "1,37 m (4' 6\")", "2.040 kg", "907 kg (45%)", "32,7 m²", "Daysailer de alto luxo baseado nas linhas originais de Herreshoff. Mastro em carbono e buja autovirante."]
]

table_plot = ax2.table(cellText=sim_data[1:], colLabels=sim_data[0], loc='center', cellLoc='center')
table_plot.auto_set_font_size(False)
table_plot.set_fontsize(6.8)
table_plot.scale(1.0, 1.45)

for (r, c), cell in table_plot.get_celld().items():
    if r == 0:
        cell.set_facecolor('#0F2B48')
        cell.set_text_props(color='white', weight='bold')
    elif r == 1:
        cell.set_facecolor('#FEF3C7') # Destaque amarelo para o barco da foto
        cell.set_text_props(weight='bold')
    else:
        cell.set_facecolor('#F8FAFC' if r % 2 == 1 else 'white')

ax2.axis('off')

plt.tight_layout()
output_daysailer = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/estudo_similares_classic_daysailer.png"
plt.savefig(output_daysailer, dpi=300, bbox_inches='tight')
plt.close()
print("Prancha de Similares do Classic Daysailer gerada com sucesso!")
