/**
 * Achteck-Footprint für den Kamera-Fit liegender, runder Layouts (pieStairs).
 *
 * Problem: Die Szenen-Bbox ist achsenparallel (AABB). Bei einer flach liegenden,
 * runden Pie-Scheibe ist der Grundriss aber rund — die vier Ecken des AABB-Grundriss-
 * Rechtecks sind leer. Der Kamera-Fit projiziert die 8 AABB-Ecken; die leeren Ecken
 * werden schräg perspektivisch stark verzerrt und treiben sowohl Zoom (zu weit raus)
 * als auch Zentrierung (off-center) in die Irre.
 *
 * Lösung: Das Grundriss-Rechteck zu einem Achteck abschrägen — nur die vier (leeren)
 * Ecken werden gekappt, die Kantenmitten (Scheibe + Callouts) bleiben voll erhalten.
 * Mit dem Chamfer (2-√2)/2 umschreibt das Achteck den eingeschriebenen Kreis exakt
 * tangential → es schneidet die runde Scheibe garantiert nicht an.
 */

/** Eckabschrägung als Anteil der jeweiligen Kantenlänge. (2-√2)/2 ≈ 0.293 ⇒ das Achteck
 *  umschreibt den in das Rechteck eingeschriebenen Kreis tangential (kein Clipping). */
export const OCTAGON_CHAMFER = (2 - Math.SQRT2) / 2;

/**
 * Liefert die 8 Grundriss-Eckpunkte (im Uhrzeigersinn) des aus dem Rechteck
 * [minX,maxX] × [minZ,maxZ] abgeschrägten Achtecks als `[x, z]`-Paare.
 */
export function octagonFootprintXZ(minX, maxX, minZ, maxZ) {
  const cx = OCTAGON_CHAMFER * (maxX - minX);
  const cz = OCTAGON_CHAMFER * (maxZ - minZ);
  return [
    [minX + cx, minZ], [maxX - cx, minZ],
    [maxX, minZ + cz], [maxX, maxZ - cz],
    [maxX - cx, maxZ], [minX + cx, maxZ],
    [minX, maxZ - cz], [minX, minZ + cz],
  ];
}
