# Capitolo 4: Gestione di Scenari e Target

Questo capitolo illustra il flusso di lavoro pratico per creare, modificare e gestire gli scenari di simulazione e i target che li compongono. Il cuore di questa attività si svolge attraverso l'Editor di Traiettoria e l'Editor dei Waypoint.

## 4.1. Creare, Salvare e Caricare uno Scenario

La gestione degli scenari avviene tramite il **Pannello di Controllo Scenari** (descritto nel Capitolo 3.3). Il flusso tipico è:

1.  **Creazione:** Si preme il pulsante `New...` e si assegna un nome al nuovo scenario. L'applicazione crea uno scenario vuoto e lo seleziona.
2.  **Popolamento:** Si aggiungono uno o più target utilizzando il pannello "Editing scenario" (vedi sezione successiva).
3.  **Salvataggio:** Le modifiche vengono salvate periodicamente tramite il pulsante `Save`. Utilizzando `Save As...` è possibile creare una copia dello scenario corrente con un nuovo nome.
4.  **Caricamento:** Utilizzando il menu a tendina, è possibile passare da uno scenario all'altro. L'applicazione caricherà la configurazione del target dal file `.json` corrispondente.

Tutti gli scenari sono salvati come file `JSON` individuali all'interno di una cartella `scenarios/` situata nella directory principale dell'applicazione.

## 4.2. L'Editor di Traiettoria (`TrajectoryEditorWindow`)

Questa finestra di dialogo è il principale strumento per definire il comportamento di un singolo target. Si apre quando si aggiunge un nuovo target o se ne modifica uno esistente.

*(Placeholder per l'immagine)*

**Descrizione dell'Immagine:** `editor_traiettoria.png`
*Qui ti aspetti uno screenshot della `TrajectoryEditorWindow`. Evidenzia le due aree principali:*
1.  *Un riquadro a sinistra etichettato "**Lista Waypoint e Controlli**", che mostra la tabella con le manovre e i pulsanti "Add", "Edit", "Remove".*
2.  *Un riquadro a destra etichettato "**Anteprima Traiettoria e Controlli di Playback**", che mostra il PPI con la traccia disegnata e i pulsanti Play/Pause/Stop.*

---

La finestra è divisa in due sezioni:

*   **A sinistra: Lista dei Waypoint**
    *   Questa tabella elenca in sequenza tutte le manovre (waypoint) che compongono la traiettoria del target.
    *   I pulsanti `Add`, `Edit`, `Remove` permettono di gestire la lista.
    *   L'opzione `Use Spline` consente di interpolare i punti della traiettoria utilizzando una curva Catmull-Rom per un movimento più fluido (richiede almeno 4 waypoint).

*   **A destra: Anteprima della Traiettoria**
    *   Un PPI dedicato mostra un'anteprima statica del percorso completo del target.
    *   I controlli di playback (`Play`, `Pause`, `Stop`, `Speed`) permettono di avviare una simulazione visiva della traiettoria per verificarne il comportamento dinamico prima di salvarla. Lo slider sottostante consente di navigare rapidamente lungo la timeline della simulazione.

## 4.3. L'Editor dei Waypoint e le Manovre (`WaypointEditorWindow`)

Questa è la finestra modale in cui si definiscono i parametri di una singola manovra. Il contenuto della finestra cambia dinamicamente in base al "Tipo di Manovra" selezionato.

*(Placeholder per l'immagine)*

**Descrizione dell'Immagine:** `editor_waypoint_dynamic.png`
*Qui ti aspetti uno screenshot della `WaypointEditorWindow` con la "Dynamic Maneuver" selezionata. Evidenzia le sezioni chiave:*
1.  *Il menu a tendina "Maneuver Type".*
2.  *La sezione "Turn Definition" con le opzioni "By G-Force" e "By Turn Rate".*
3.  *I campi per le accelerazioni longitudinali e verticali.*

---

### 4.3.1. Fly to Point

Questa manovra è **obbligatoria come primo waypoint** di ogni traiettoria, poiché definisce lo stato iniziale del target.
*   **Parametri Principali:**
    *   `Target Range`, `Target Azimuth`, `Target Altitude`: Definiscono la posizione iniziale del target in coordinate polari relative all'origine della simulazione.
    *   `Initial Velocity`, `Initial Heading`: Definiscono il vettore velocità iniziale del target.
    *   `Duration to Point`: Se usato come waypoint successivo al primo, questo parametro definisce il tempo che il target impiegherà per raggiungere le coordinate specificate. La velocità risultante viene calcolata e mostrata automaticamente.

### 4.3.2. Fly for Duration

Questa manovra istruisce il target a mantenere uno stato cinematico costante.
*   **Parametri Principali:**
    *   `Duration`: Per quanti secondi mantenere lo stato.
    *   `Constant Velocity`, `Constant Heading`, `Constant Altitude`: I valori cinematici da mantenere.

### 4.3.3. Dynamic Maneuver

Questa è la manovra più complessa e potente, che permette di simulare virate, accelerazioni e cabrate/picchiate. Il movimento viene calcolato integrando le accelerazioni nel tempo.
*   **Parametri Principali:**
    *   `Duration`: La durata della manovra.
    *   `Maneuver Speed`: La velocità di riferimento per il calcolo della virata.
    *   **Turn Definition:** È possibile definire la virata in due modi equivalenti:
        1.  **By G-Force:** Specificando l'accelerazione laterale in 'g'. Questo è il modo più comune in ambito aeronautico.
        2.  **By Turn Rate:** Specificando la velocità angolare in gradi al secondo (°/s).
        *   **Soluzione Tecnica:** I due campi sono sincronizzati. Modificandone uno, l'altro viene ricalcolato automaticamente in base alla velocità di manovra, usando la formula `a = v * ω`, dove `a` è l'accelerazione, `v` è la velocità e `ω` è la velocità angolare.
    *   **Longitudinal Accel (g):** Accelerazione lungo l'asse di volo del target (per accelerare o decelerare).
    *   **Vertical Accel (g):** Accelerazione lungo l'asse verticale del target (per cabrate o picchiate).

La combinazione di questi waypoint permette di costruire traiettorie estremamente varie e realistiche, adatte a coprire un'ampia gamma di scenari di test.