Windrichtung per Vektorrechnung mitteln
Verfasst: 03 Feb 2021, 02:41
Hallo,
oftmals "flattern" ja die Windfahnen ziemlich stark und wenn man nicht die Möglichkeit hat, sie mechanisch etwas zu dämpfen oder aber die Aufstellungsbedingungen lassen gewisse Verwirbelungen einfach nicht vermeiden, kommt man auf die Idee, die Windrichtung softwartechnisch zu "dämpfen" indem man einfach über einen gewissen Zeitraum den Mittelwert bildet.
Jetzt könnte man meinen, dass man einfach die Gradzahlen addieren muss und dann durch die Anzahl teilen, doch dieser Schuß geht nach Hinten los, was folgendes Beispiel sehr anschaulich verdeutlicht:
Windrichtung 5° + Windrichtung 355° würden rechnerisch im Mittel (5° + 355°)/2 = 180° = S ergeben, doch tatsächlich wäre die gemittelte Windrichtung 0° = N.
Habe mich diesbezüglich mal durchs Internet gekämpt und bin dabei auf die Lösung der Vektoraddition gestoßen.
Dazu teilt man den 360°-Kreis in eine x-Achse (west-ost-Achse) und eine y-Achse (Süd-Nord-Achse) auf.
Will man nun Windrichtungen addieren und dann mitteln, muss man die Gradzahlen in ihren x- und y-Vektor zerlegen, dann jeweils die x-Werte untereinander und dann die y-Werte untereinander addieren und am Ende aus den summierten x-Werten und summierten y-Werten wieder auf die Gradzahl zurückrechnen.
Als Beispiel:
Kommt der Wind aus Nord, d.h. 0° so folgt für $x = 0, $y=1
Kommt er aus Ost, d.h. 90° so folgt für $x = 1 und $y = 0.
Kommt er aus Süd, d.h. 180° so folgt für $x = 0, $y = -1
Kommt er aus West, d.h. 270° so folgt für $x = -1, $y = 0
Damit ich hier im Forum nicht immer nur mit Fragen auftauche, habe ich mal versucht hier was zurück zu geben und habe mich diesbezüglich mal an einen PHP-Script versucht.
Ich habe es bei mir ausprobiert, es funktioniert, damit kann man das "Flattern" der Windfahne softwaretechnisch "dämpfen".
Sicherlich kann man das Script noch optimieren, da meine PHP-Kenntnisse noch in den Kinderschuhen stecken, doch für den Anfang sieht das doch mal ganz gut aus, gerne kann hier ein PHP-Profi das aber noch verbessern/optimieren.
Gruß Frank
oftmals "flattern" ja die Windfahnen ziemlich stark und wenn man nicht die Möglichkeit hat, sie mechanisch etwas zu dämpfen oder aber die Aufstellungsbedingungen lassen gewisse Verwirbelungen einfach nicht vermeiden, kommt man auf die Idee, die Windrichtung softwartechnisch zu "dämpfen" indem man einfach über einen gewissen Zeitraum den Mittelwert bildet.
Jetzt könnte man meinen, dass man einfach die Gradzahlen addieren muss und dann durch die Anzahl teilen, doch dieser Schuß geht nach Hinten los, was folgendes Beispiel sehr anschaulich verdeutlicht:
Windrichtung 5° + Windrichtung 355° würden rechnerisch im Mittel (5° + 355°)/2 = 180° = S ergeben, doch tatsächlich wäre die gemittelte Windrichtung 0° = N.
Habe mich diesbezüglich mal durchs Internet gekämpt und bin dabei auf die Lösung der Vektoraddition gestoßen.
Dazu teilt man den 360°-Kreis in eine x-Achse (west-ost-Achse) und eine y-Achse (Süd-Nord-Achse) auf.
Will man nun Windrichtungen addieren und dann mitteln, muss man die Gradzahlen in ihren x- und y-Vektor zerlegen, dann jeweils die x-Werte untereinander und dann die y-Werte untereinander addieren und am Ende aus den summierten x-Werten und summierten y-Werten wieder auf die Gradzahl zurückrechnen.
Als Beispiel:
Kommt der Wind aus Nord, d.h. 0° so folgt für $x = 0, $y=1
Kommt er aus Ost, d.h. 90° so folgt für $x = 1 und $y = 0.
Kommt er aus Süd, d.h. 180° so folgt für $x = 0, $y = -1
Kommt er aus West, d.h. 270° so folgt für $x = -1, $y = 0
Damit ich hier im Forum nicht immer nur mit Fragen auftauche, habe ich mal versucht hier was zurück zu geben und habe mich diesbezüglich mal an einen PHP-Script versucht.
Ich habe es bei mir ausprobiert, es funktioniert, damit kann man das "Flattern" der Windfahne softwaretechnisch "dämpfen".
Sicherlich kann man das Script noch optimieren, da meine PHP-Kenntnisse noch in den Kinderschuhen stecken, doch für den Anfang sieht das doch mal ganz gut aus, gerne kann hier ein PHP-Profi das aber noch verbessern/optimieren.

Code: Alles auswählen
<?php
$windrichtung //Windrichtungs-Variable in ° aus dem Wetterprogramm
//x- und y-Komponete aus der Windrichtungsgradzahl ermitteln:
$x = sin($windrichtung * pi() / 180);
$x = round($x,5);
$y = cos($windrichtung * pi() / 180);
$y = round($y,5);
//die Windrichtung so zerlegt kann man nun jeweils die einzelnen $x zu einer Summe $xSumme
//und die einzelnen $y zur Summe $ySumme zusammenzählen, dazu muss man nun über eine bestimmte Zeit die
//Windrichtunswerte abspeichern und jeweils den $x und $y Vektor nach obigen Schema ermitteln
//und dann jeweils die $xSumme und $ySumme bilden und
//dann im Script wie folgt fortfahren:
If($xSumme < 0) //falls $xSumme negativ ist -> umwandeln in einen positiven Wert
{
$xSummePositiv = -$xSumme;
}
else
{
$xSummePositiv = $xSumme;
}
if($ySumme < 0) //falls $ySumme negativ ist -> umwandeln in einen positiven Wert
{
$ySummePositiv = -$ySumme;
}
else
{
$ySummePositiv = $ySumme;
}
//aus den Vektoren wieder auf den Windrichtungswinkel rückrechnen:
$windrichtung = atan($xSummePositiv/$ySummePositiv)*180/pi();
//den 360° Kreis in 4 Sektionen aufteilen und den obigen errechneten Winkel entsprechend dem Sektor zuteilen
//und dementsprechend umrechnen:
if($xSumme >= 0 && $ySumme >= 0)
{
$windrichtung;
}
if($xSumme >= 0 && $ySumme < 0)
{
$windrichtung = 180 - $windrichtung;
}
if($xSumme < 0 && $ySumme >= 0)
{
$windrichtung = 360 - $windrichtung;
}
if($xSumme < 0 && $ySumme < 0)
{
$windrichtung = 180 + $windrichtung;
}
//gemittelte Windrichtung in ° ausgeben:
$windrichtung = round($windrichtung);
echo $windrichtung;
?>