/**
 * Excentricidade da força de arrasto — NBR 6123:2023, sec. 6.1.4
 *
 * Para edificações paralelepipédicas, considerar excentricidades:
 *  - Sem efeitos de vizinhança: eₐ = 0,075·a ; e_b = 0,075·b
 *  - Com efeitos de vizinhança:  eₐ = 0,15·a ; e_b = 0,15·b
 */

export interface ExcentricityInput {
  /** Maior dimensão em planta */
  a: number;
  /** Menor dimensão em planta */
  b: number;
  /** true se há efeitos de vizinhança relevantes */
  hasNeighborhood: boolean;
}

export interface ExcentricityResult {
  /** Excentricidade na direção a (maior dimensão) */
  ea: number;
  /** Excentricidade na direção b (menor dimensão) */
  eb: number;
  /** Momento torsor devido à excentricidade (F·ea ou F·eb) */
  momentFactorA: number;
  momentFactorB: number;
}

export function calculateExcentricity(input: ExcentricityInput): ExcentricityResult {
  const k = input.hasNeighborhood ? 0.15 : 0.075;
  const ea = k * input.a;
  const eb = k * input.b;
  return {
    ea,
    eb,
    momentFactorA: ea,
    momentFactorB: eb,
  };
}