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

# Configuração da figura no padrão visual escuro da Brana
plt.style.use('dark_background')
fig, (ax_perfil, ax_planta) = plt.subplots(2, 1, figsize=(14, 9), dpi=200, sharex=True)
fig.patch.set_facecolor('#333333')

# -------------------------------------------------------------
# VISTA DE PERFIL (ELEVAÇÃO LATERAL)
# -------------------------------------------------------------
ax_perfil.set_facecolor('#404040')

# Casco (perfil simplificado)
x_casco = np.linspace(0, 14.80, 200)
z_quilha = 0.05 + 0.70 * ((x_casco - 7.4) / 7.4)**2
z_conves = 1.60 + 0.35 * ((x_casco - 7.4) / 7.4)**2

ax_perfil.fill_between(x_casco, z_quilha, z_conves, color='#8A5A36', alpha=0.6, label='Casco em Madeira (LOA 14,80 m)')
ax_perfil.plot(x_casco, z_conves, color='#FFFFFF', linewidth=1.5)
ax_perfil.plot(x_casco, z_quilha, color='#5C3A21', linewidth=2.0)

# Casaria na Popa (X: 0,80 a 4,60 m)
# Altura da casaria = 1,40 m acima do convés (Z convés ~ 1,75 m -> Z teto ~ 3,15 m)
x_cas = [0.80, 4.60, 4.60, 0.80, 0.80]
z_cas = [1.80, 1.68, 3.08, 3.20, 1.80]
ax_perfil.fill(x_cas, z_cas, color='#D4AF37', alpha=0.35, edgecolor='#FBB12F', linewidth=2, label='Casaria de Popa (Massa: ~1.000 kg)')

# Usina Solar no teto (X: 1,00 a 4,40 m, Z = 3,25 m)
ax_perfil.plot([1.00, 4.40], [3.25, 3.13], color='#4A90E2', linewidth=4.5, label='Usina Solar (5,5 kWp / 210 kg)')

# Mastro (X = 10,80 m) e Retranca
ax_perfil.plot([10.80, 10.80], [0.10, 16.50], color='#E8E8E8', linewidth=3.5, label='Mastro de Içar (16,5 m / X=10,80 m)')
# Retranca a Z = 3,55 m (passando livre sobre o teto solar)
ax_perfil.plot([10.80, 0.20], [2.20, 3.55], color='#FBB12F', linewidth=2.5, linestyle='--', label='Retranca (Curso livre a 0,40 m acima do teto solar)')

# Praça de carga livre (X: 4,60 a 10,80 m)
rect_carga = patches.Rectangle((4.60, 1.60), 6.20, 1.20, linewidth=1.5, edgecolor='#9BD79B', facecolor='#9BD79B', alpha=0.25, hatch='//')
ax_perfil.add_patch(rect_carga)
ax_perfil.text(7.70, 2.10, 'PRAÇA DE CARGA LIVRE (15 t)\nComprimento contínuo: 6,2 a 7,0 m', color='#9BD79B', fontweight='bold', fontsize=9, ha='center')

# CG da Casaria
ax_perfil.scatter([2.60], [2.40], color='#FF6B6B', s=160, zorder=6)
ax_perfil.annotate('CG Casaria\n(X=2,60m, Z=2,40m)', (2.60 + 0.2, 2.40 + 0.15), color='#FF6B6B', fontweight='bold', fontsize=8.5)

ax_perfil.set_title('1. VISTA DE PERFIL: Localização da Casaria na Popa e Convivência Náutica com o Velame', color='#FFFFFF', fontsize=11, fontweight='bold', pad=8)
ax_perfil.set_ylabel('Altura - Z (m)', color='#E8E8E8', fontsize=9)
ax_perfil.set_ylim(-0.2, 17.5)
ax_perfil.grid(True, linestyle='--', alpha=0.25, color='#888888')
ax_perfil.legend(loc='upper right', fontsize=8, facecolor='#2E2E2E', edgecolor='#555555')

# -------------------------------------------------------------
# VISTA DE PLANTA (LAYOUT DE CONVÉS)
# -------------------------------------------------------------
ax_planta.set_facecolor('#404040')

# Linhas de meia-boca do casco
y_borda = 2.45 * np.sin(np.pi * x_casco / 14.80)**0.45
ax_planta.fill_between(x_casco, -y_borda, y_borda, color='#8A5A36', alpha=0.5, label='Bordo do Casco (BOA 4,90 m)')
ax_planta.plot(x_casco, y_borda, color='#FFFFFF', linewidth=1.2)
ax_planta.plot(x_casco, -y_borda, color='#FFFFFF', linewidth=1.2)

# Planta da Casaria (X: 0,80 a 4,60 m, Largura de 3,10 a 3,40 m -> Y: -1,70 a +1,70 m)
x_cas_planta = [0.80, 4.60, 4.60, 0.80, 0.80]
y_cas_planta = [-1.55, -1.70, 1.70, 1.55, -1.55]
ax_planta.fill(x_cas_planta, y_cas_planta, color='#D4AF37', alpha=0.4, edgecolor='#FBB12F', linewidth=2, label='Casaria de Popa (3,80 m x 3,25 m méd.)')

# Compartimentos internos da Casaria
# Cabine Gerador (Popa centro)
ax_planta.add_patch(patches.Rectangle((1.0, -0.6), 1.2, 1.2, facecolor='#4A90E2', alpha=0.5, edgecolor='#FFFFFF', linewidth=1))
ax_planta.text(1.6, 0.0, 'Gerador\n25 kVA', color='#FFFFFF', fontsize=7.5, ha='center', va='center', fontweight='bold')

# Tanque Diesel (BB)
ax_planta.add_patch(patches.Rectangle((2.3, -1.3), 1.0, 0.5, facecolor='#FF6B6B', alpha=0.5, edgecolor='#FFFFFF', linewidth=1))
ax_planta.text(2.8, -1.05, 'Tanque\n200 L', color='#FFFFFF', fontsize=7, ha='center', va='center', fontweight='bold')

# Quadro Elétrico / MPPT (BE)
ax_planta.add_patch(patches.Rectangle((2.3, 0.8), 1.0, 0.5, facecolor='#9BD79B', alpha=0.5, edgecolor='#FFFFFF', linewidth=1))
ax_planta.text(2.8, 1.05, 'Quadro\nElétrico', color='#FFFFFF', fontsize=7, ha='center', va='center', fontweight='bold')

# Acomodações Tripulação (3 beliches nas laterais)
ax_planta.text(3.7, 0.0, 'Acomodação Tripulação\n(3 Beliches / Pernoite)', color='#E8E8E8', fontsize=8, ha='center', va='center', fontweight='bold')

# Praça de Carga na Planta (X: 4,60 a 10,80 m)
ax_planta.add_patch(patches.Rectangle((4.60, -2.10), 6.20, 4.20, facecolor='#9BD79B', alpha=0.2, edgecolor='#9BD79B', hatch='//'))
ax_planta.text(7.70, 0.0, 'PORÃO E CONVÉS DE CARGA LIVRE (15 t DE CANA)\nÁrea útil de convés: ~24 m²', color='#9BD79B', fontweight='bold', fontsize=9.5, ha='center', va='center')

# Mastro e Carlinga (X = 10,80 m)
ax_planta.scatter([10.80], [0.0], color='#FFFFFF', s=180, zorder=6)
ax_planta.text(10.80, 0.6, 'Mastro\nX=10,80m', color='#FFFFFF', fontsize=8, fontweight='bold', ha='center')

# Passadiço lateral (largura mínima de 0,75 m)
ax_planta.annotate('Passadiço lateral livre: 0,75 m\n(Trânsito seguro da tripulação)', xy=(2.70, 1.95), xytext=(2.70, 2.65),
                   arrowprops=dict(facecolor='#E8E8E8', shrink=0.08, width=1.2, headwidth=5),
                   color='#E8E8E8', fontsize=8, ha='center')

ax_planta.set_title('2. VISTA DE PLANTA (CONVÉS): Arranjo Interno da Casaria, Passadiços e Praça de Carga', color='#FFFFFF', fontsize=11, fontweight='bold', pad=8)
ax_planta.set_xlabel('Posição Longitudinal ao longo do Casco - X (metros)', color='#E8E8E8', fontsize=9.5)
ax_planta.set_ylabel('Meia-Boca - Y (m)', color='#E8E8E8', fontsize=9)
ax_planta.set_ylim(-3.2, 3.2)
ax_planta.set_xlim(-0.8, 15.5)
ax_planta.grid(True, linestyle='--', alpha=0.25, color='#888888')
ax_planta.legend(loc='lower right', fontsize=8, facecolor='#2E2E2E', edgecolor='#555555')

plt.suptitle('BRANA / ESTALEIRO ESCOLA EMBRIÃO — DIMENSIONAMENTO E LOCALIZAÇÃO DA CASARIA\nSaveiro Mestre da Cana (LOA 14,80 m | Capacidade de Carga: 15 t | Massa da Casaria: ~1.000 kg)', 
             color='#EE9A98', fontsize=12.5, fontweight='bold', y=0.985)

plt.tight_layout(rect=[0, 0.02, 1, 0.95])

out_air = '/home/magdalena/eee/alunos/air/arranjo_e_localizacao_casaria_popa.png'
out_g3 = '/home/magdalena/eee/grupos/grupo-3/arranjo_e_localizacao_casaria_popa.png'

plt.savefig(out_air, facecolor=fig.get_facecolor(), edgecolor='none', dpi=200)
plt.savefig(out_g3, facecolor=fig.get_facecolor(), edgecolor='none', dpi=200)
print('Gráfico do arranjo da casaria gerado!')
