import Foundation

func area(x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double) -> Double {
    /* Die Funktion Area berechnet anhand der x und y Koordinaten der Punkte
     die Fläche der Dreiecke. Und gibt das entsprechende Ergebnis zurück.*/
    var resultat : Double
    
    resultat = abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0)
    
    return resultat
}

func isInside(x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double, x: Double, y: Double) -> Boolean {
    /* 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. */
    var a : Double
    var a1 : Double
    var a2 : Double
    var a3 : Double
    
    /* Dann die Boolesche Variable result, die der Rückgabewert der 
        Funktion isInside ist. */
    var resultat : Boolean
    
    // Die Fläche des Dreiecks ABC mit Hilfe der Funktion Area berechnen.
    a = area(x1: x1, y1: y1, x2: x2, y2: y2, x3: x3, y3: y3)
    
    // Die Fläche des Dreiecks PBC mit Area berechnen.
    a1 = area(x1: x, y1: y, x2: x2, y2: y2, x3: x3, y3: y3)
    
    // Die Fläche des Dreiecks PAC mit Area berechnen.
    a2 = area(x1: x, y1: y, x2: x1, y2: y1, x3: x3, y3: y3)
    
    // Die Fläche des Dreiecks PAB mit Area berechnen.
    a3 = area(x1: x, y1: y, x2: x1, y2: y1, x3: x2, y3: 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)
var x1 : Double
var y1 : Double

// Koordinaten für B (x2,y2)
var x2 : Double
var y2 : Double

// Koordinaten für C (x3,y3)
var x3 : Double
var y3 : Double

// Koordinaten von P(x,y)
var x : Double
var y : Double

/* Jetzt werden die Koordinaten für A abgefragt, zuerst der X-Wert und
 dann der Y-Wert.*/
print("X-Koordinate x1 von A(x1,y1)")
x1 = Double(readLine()!)!
print("Y-Koordinate y1 von A(x1,y1)")
y1 = Double(readLine()!)!

// Jetzt die Koordinaten x2 und y2 von B(x2,y2).
print("X-Koordinate x2 von B(x2,y2)")
x2 = Double(readLine()!)!
print("Y-Koordinate y2 von B(x2,y2)")
y2 = Double(readLine()!)!

// Am Schluss die Koordinaten von C(x3,y3)
print("X-Koordinate x3 von C(x3,y3)")
x3 = Double(readLine()!)!
print("Y-Koordinate y3 von C(x3,y3)")
y3 = Double(readLine()!)!

// Die Koordinaten des Punktes P
print("Die X-Koordinate von P(x,y)")
x = Double(readLine()!)!
print("Die Y-Koordinate von P(x,y)")
y = Double(readLine()!)!

/* 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: x1, y1: y1, x2: x2, y2: y2, x3: x3, y3: y3, x: x, y: y) {
    print("Der Punkt P(" + String(x) + "," + String(y) + ") befindet sich innerhalb des Dreiecks")
} else {
    print("Der Punkt P befindet sich nicht innerhalb des Dreiecks.")
}
        
        
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