import java.util.*;
import java.lang.Math;
public class JavaApplication {
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
// 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)
double x1;
double y1;
// Koordinaten für B (x2,y2)
double x2;
double y2;
// Koordinaten für C (x3,y3)
double x3;
double y3;
// Koordinaten von P(x,y)
double x;
double y;
// Jetzt werden die Koordinaten für A abgefragt, zuerst der X-Wert und dann der Y-Wert.
System.out.println("X-Koordinate x1 von A(x1,y1)");
x1 = input.nextDouble();
System.out.println("Y-Koordinate y1 von A(x1,y1)");
y1 = input.nextDouble();
// Jetzt die Koordinaten x2 und y2 von B(x2,y2).
System.out.println("X-Koordinate x2 von B(x2,y2)");
x2 = input.nextDouble();
System.out.println("Y-Koordinate y2 von B(x2,y2)");
y2 = input.nextDouble();
// Am Schluss die Koordinaten von C(x3,y3)
System.out.println("X-Koordinate x3 von C(x3,y3)");
x3 = input.nextDouble();
System.out.println("Y-Koordinate y3 von C(x3,y3)");
y3 = input.nextDouble();
// Die Koordinaten des Punktes P
System.out.println("Die X-Koordinate von P(x,y)");
x = input.nextDouble();
System.out.println("Die Y-Koordinate von P(x,y)");
y = input.nextDouble();
// 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)) {
System.out.println("Der Punkt P(" + x + "," + y + ") befindet sich innerhalb des Dreiecks");
} else {
System.out.println("Der Punkt P befindet sich nicht innerhalb des Dreiecks.");
}
}
public static double area(double x1, double y1, double x2, double y2, double x3, double 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.
double resultat;
resultat = Math.abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0);
return resultat;
}
public static boolean isInside(double x1, double y1, double x2, double y2, double x3, double y3, double x, double 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.
double a;
double a1;
double a2;
double a3;
// Dann die Boolesche Variable result, die der Rückgabewert der Funktion isInside ist.
boolean resultat;
// 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;
}
}