Ora funziona anche la direzione media del vento... scusate, ma sono troppo contento di me stesso per essere riuscito nell'impresa di calcolare questo valore!!! 3 settimane di calcoli, scartoffie, pagine e pagine di matematica vettoriale e di manuali di PHP per trovare la funzione giusta... e alla fine ho partorito tutto!
Scusate l'OT, ma voglio condividere questa funzione per coloro che ne avranno bisogno (non di questo forum ovviamente). Se avessi trovato in rete una cosa del genere avrei risparmiato 20 giorni di fatiche!
In parole povere: per calcolare la media della direzione del vento con valori vettoriali (in gradi quindi), occorre calcolare seno e coseno del primo valore, che poi dovranno andare a sommarsi a seno e coseno del valore successivo e così via... per tutti gli N valori per i quali dovrete andare a fare la media.
Ottenuto la sommatoria dei seni e dei coseni, occorrerà calcolare l'arcotangente dei 2, che corrisponderà appunto alle media degli N valori.
Tutto ciò, applicato al PHP porterà ad una funzione simile (da modificare poi in base alla provenienza dei valori stessi):
-
$query = mysql_query("SELECT colonna_valori_vento FROM tabella_database WHERE velocita_vento > 0");
-
-
// Initialize values
-
$WindDirectionVy = 0;
-
$WindDirectionVx = 0;
-
$y = 0;
-
$x = 0;
-
-
// Get sum
-
while ($list=mysql_fetch_array($query))
-
{
-
$WindDirectionVy = cos($list[0]*0.01745); // Pi/180 = 0.01745
-
$WindDirectionVx = sin($list[0]*0.01745);
-
-
$y = $WindDirectionVy + $y;
-
$x = $WindDirectionVx + $x;
-
}
-
-
// Get mean
-
$Davg = atan2($x,$y)*57.29582; // 180*Pi = 57.29582
-
-
// If param $x was indeed a negative number, if so we simply add 360 to the negative angle
-
if ($Davg>=0)
-
{
-
$davg = round($Davg);
-
}
-
else $davg = round($Davg+360);
Le 2 note più importanti riguardano l'ordine dei 2 valori (sin e cos), che generalmente per il calcolo dell'arcotangente vanno ordinati per y e x (es. su Excel), mentre per PHP i valori vanno invertiti.
Altra nota riguarda il risultato finale, che se positivo, va considerato tal quale, mentre se negativo, va sommato a 360.
Il 99% degli utenti non sarà di certo arrivato sin quì, ma spero che il restante 1% e soprattutto molti di coloro che raggiungeranno questa pagina da Google cercando "calcolo della media del vento" o "media vettoriale", abbiano apprezzato!
____________
Facebook:
lineameteo -
Twitter:
@lineameteo
Stazione meteo di San Mariano (PG)
Dati meteo in tempo reale
http://sanmariano.lineameteo.it