simplesso.php
<?php
declare(strict_types=1);
// Strumento didattico pubblico: nessuna autenticazione né controllo di origine
// (deciso dall'autore). Tutta la cartella simplex/ è ad accesso libero.
//
// Il driver è ora sottile: legge $_POST, costruisce un SimplexModel (parsing +
// forma standard/canonica + due fasi + piani di taglio, tutto in
// simplex_model.php, senza I/O) e ne rende la traccia passo-passo con
// SimplexRenderer. L'algoritmo vero e proprio resta in matrice.php.
require 'template.php';
require 'matrice.php';
require 'util.php';
require 'razionale.php';
require 'immagini.php';
require 'simplex_model.php';
require 'simplex_renderer.php';
function scrivi_pagina(string $content): void /* stampa a video l''output del programma, secondo il template */
{
$title = 'Analisi';
$pagina = new template();
$pagina->setta_titolo($title);
$pagina->setta_filename(basename($_SERVER['SCRIPT_NAME']));
$pagina->setta_contenuto($content);
print($pagina->mostra_pagina());
}
// ── Pulizia delle immagini temporanee precedenti ─────────────────────────────
$tmpimages = glob((getenv('IMAGE_DIR') ?: 'images/tmp/') . 'tmp*') ?: [];
foreach ($tmpimages as $filename) {
unlink($filename);
}
// ── Costruzione del modello dal payload del form ─────────────────────────────
$model = SimplexModel::fromPost($_POST);
// ── Grafico della regione (solo problemi a 2 variabili di decisione) ─────────
$image = null;
$imgName = '';
if ($model->haGrafico()) {
$postName = (string)($_POST['name'] ?? '');
if ($postName === '') {
$postName = 'tmp' . time();
}
$dirPath = getenv('IMAGE_DIR') ?: 'images/tmp/';
$urlPath = getenv('IMAGE_URL') ?: $dirPath;
$imgName = $urlPath . $postName;
$g = $model->datiGrafico();
$image = new grafico($g['a'], $g['b'], $g['c'], $g['lge'], !$model->eraMassimo(), $dirPath . $postName, $imgName);
}
// ── Rendering ───────────────────────────────────────────────────────────────
$content = (new SimplexRenderer($model, $image, $imgName))->render();
scrivi_pagina($content);
echo "\n<!--" . memory_get_peak_usage(true) . " bytes-->" . "\n";