<?php

# Die folgende Funktion wird immer dann aufgerufen, wenn in ihr Programm Daten eingegeben werden..
# Sie können sie ändern, um andere Quellen zu verwenden.
function input() {
    return fgets(STDIN);
}
function area($x1, $y1, $x2, $y2, $x3, $y3) {
    # Die Funktion Area berechnet anhand der x und y Koordinaten der Punkte die Fläche der Dreiecke. Und gibt das entsprechende Ergebnis zurück.
    $resultat = abs(($x1 * ($y2 - $y3) + $x2 * ($y3 - $y1) + $x3 * ($y1 - $y2)) / 2.0);
    
    return resultat;
}

function isInside($x1, $y1, $x2, $y2, $x3, $y3, $x, $y) {
    # Die Funktion isInside ruft für die Berechnung der Fläche der Dreiecke die Funktion Area auf, die wiederum anhand der Koordinatenwerte die Fläche der einzelnen Dreiecke berechnet.
    # Zuerst werden die vier Variablen für die Ergebnisse der Flächenberechnung deklariert.
    # Dann die Boolesche Variable result, die der Rückgabewert der Funktion isInside ist.
    # Die Fläche des Dreiecks ABC mit Hilfe der Funktion Area berechnen.
    $a = area($x1, $y1, $x2, $y2, $x3, $y3);
    
    # Die Fläche des Dreiecks PBC mit Area berechnen.
    $a1 = area($x, $y, $x2, $y2, $x3, $y3);
    
    # Die Fläche des Dreiecks PAC mit Area berechnen.
    $a2 = area($x, $y, $x1, $y1, $x3, $y3);
    
    # Die Fläche des Dreiecks PAB mit Area berechnen.
    $a3 = area($x, $y, $x1, $y1, $x2, $y2);
    
    # In der nachfolgenden Fallunterscheidung wird geprüft, ob die Fläche des ursprünglichen Dreiecks (ABC) mit der Summe der drei Dreiecke, die durch die hinzunahme von P gebildet wurden, übereinstimmt. Im Fall, dass die beiden Wert gleich sind, wird der Variablen result der Wert true zugewiesen, andernfalls der Wert false.
    if ($a == $a1 + $a2 + $a3) {
        $resultat = True;
    } else {
        $resultat = False;
    }
    
    return resultat;
}

# Main
# Zu Beginn werden die Variablen für die acht Koordinaten, jeder der vier Punkte besitzt, eine y und x Koordinaten, deklariert.
# Koordinaten für A (x1,y1)
# Koordinaten für B (x2,y2)
# Koordinaten für C (x3,y3)
# Koordinaten von P(x,y)
# Jetzt werden die Koordinaten für A abgefragt, zuerst der X-Wert und dann der Y-Wert.
echo "X-Koordinate x1 von A(x1,y1)" . PHP_EOL;
$x1 = input();
echo "Y-Koordinate y1 von A(x1,y1)" . PHP_EOL;
$y1 = input();

# Jetzt die Koordinaten x2 und y2 von B(x2,y2).
echo "X-Koordinate x2 von B(x2,y2)" . PHP_EOL;
$x2 = input();
echo "Y-Koordinate y2 von B(x2,y2)" . PHP_EOL;
$y2 = input();

# Am Schluss die Koordinaten von C(x3,y3)
echo "X-Koordinate x3 von C(x3,y3)" . PHP_EOL;
$x3 = input();
echo "Y-Koordinate y3 von C(x3,y3)" . PHP_EOL;
$y3 = input();

# Die Koordinaten des Punktes P
echo "Die X-Koordinate von P(x,y)" . PHP_EOL;
$x = input();
echo "Die Y-Koordinate von P(x,y)" . PHP_EOL;
$y = input();

# Die eingegebenen Werte werden jetzt an die Funktion isInside übergeben.Der Rückgabewert dieser Funktion ist entweder true oder false. Im Fall, dass sich der Punkt P innerhalb des Dreiecks befindet, gibt die Funktion isInside den Wert true zurück, anderfalls den Wert false.
if (isInside($x1, $y1, $x2, $y2, $x3, $y3, $x, $y)) {
    echo "Der Punkt P(" . $x . "," . $y . ") befindet sich innerhalb des Dreiecks" . PHP_EOL;
} else {
    echo "Der Punkt P befindet sich nicht innerhalb des Dreiecks." . PHP_EOL;
}
?>
        
        
akzeptieren ablehen

Diese Website verwendet Cookies und Zählpixel, um Ihnen die bestmögliche Nutzung dieser Website zu ermöglichen.Learn more about cookies sehen Sie auch Datenschutz