/**
 * Tabela 30 — Componentes das forças de arrasto nas faces de torres
 * reticuladas de seção quadrada ou triangular equilátera
 * (NBR 6123:2023, sec. 8.5).
 *
 * η é o fator de proteção (Figura 14) aplicado ao reticulado imediatamente
 * atrás. Componentes n (perpendicular à face) e t (paralela à face).
 *
 * Fonte: NBR 6123:2023, p. 60 (Tabela 30).
 * Última auditoria: 2026-07-07 — ⚠️ PENDENTE: revisar valores por
 *   direção × face.
 *   PDF página 73.
 */

export interface FaceForceComponent {
  faceI: number;
  faceII: number;
  faceIII: number;
  faceIV: number;
}

export type TowerShape = 'square' | 'triangular';
export type WindDirection = 'face' | 'diagonal';

/**
 * Componentes das forças de arrasto conforme direção do vento.
 * Para torre quadrada com vento perpendicular a uma face (4 faces).
 */
export function getFaceComponentsQuad(shape: TowerShape, dir: WindDirection): FaceForceComponent {
  if (shape === 'square' && dir === 'face') {
    return {
      faceI: 1.0,
      faceII: 0.20,
      faceIII: 0.20,
      faceIV: 0.15,
    };
  }
  if (shape === 'square' && dir === 'diagonal') {
    return {
      faceI: 0.50,
      faceII: 0.37,
      faceIII: 0.37,
      faceIV: 0,
    };
  }
  // triangular equilátero — força constante qq direção
  return {
    faceI: 1.0,
    faceII: 1.0,
    faceIII: 1.0,
    faceIV: 0,
  };
}

/** Força total no reticulado = Ca · q · Ae (kN) */
export function getTowerTotalForce(ca: number, q: number, ae: number): number {
  return Number((ca * q * ae).toFixed(3));
}