4 Stimmen

Berechnung des Flächeninhalts eines Dreiecks mit 3 benutzerdefinierten Punkten -Anfänger

Ich kann meinen Code kompilieren, aber er erzeugt nicht den gewünschten Bereich. Ich bin nicht sicher, wo ich gestolpert bin.

Sie wollen, dass der Benutzer 6 Koordinaten (x- und y-Wert) für die 3 Punkte eines Dreiecks eingibt und die Fläche erhält. Mein Code ist wie folgt:

import java.util.Scanner;

public class AreaTriangle {
    // find the area of a triangle
    public static void main (String [] args) {
        double side1 = 0;
        double side2 = 0;
        double side3 = 0;

        Scanner input = new Scanner(System.in);

        //obtain three points for a triangle
        System.out.print("Enter three points for a triangle (x and y intercept): ");
        double side1x  = input.nextDouble();
        double side1y  = input.nextDouble();
        double side2x  = input.nextDouble();
        double side2y  = input.nextDouble();
        double side3x  = input.nextDouble();
        double side3y  = input.nextDouble();

        //find length of sides of triangle
        side1 = Math.pow(Math.pow((side2x - side1x), 2) + Math.pow((side2y - side1y), 2) * .05, side1);
        side2 = Math.pow(Math.pow((side3x - side2x), 2) + Math.pow((side3y - side2y), 2) * .05, side2);
        side3 = Math.pow(Math.pow((side1x - side3x), 2) + Math.pow((side1y - side3y), 2) * .05, side3);

        double s = (side1 + side2 + side3) / 2;

        double area = Math.sqrt(s * (s - side1) * (s - side2) * (s-side3)) * 0.5;

        System.out.println("area" + area);
    }
}

4voto

Michael Punkte 3324

Sie sollten versuchen, diese Gleichung umzusetzen. http://www.mathopenref.com/coordtrianglearea.html

2voto

madth3 Punkte 7151

Der Vorschlag von @Michael ist ein guter Vorschlag. In Anlehnung an Ihren Code würde ich den Satz des Pythagoras wie folgt verwenden:

side1 = Math.sqrt(
            Math.pow((side2x - side1x), 2)
          + Math.pow((side2y - side1y), 2));

In Ihrem Code:

side1 = Math.pow(
            Math.pow((side2x - side1x), 2) 
          + Math.pow((side2y - side1y), 2) * .05
       , side1);

side1 es 0 vor der Berechnung, und fast alles in der Macht 0 ist 1. Daher side1 endet unabhängig von den Punkten mit 1.

0voto

mitim Punkte 3179

Eine andere Möglichkeit, die ich entdeckt habe, ist, dass man das Kreuzprodukt verwenden kann, um die Fläche eines Dreiecks zu bestimmen. Das könnte für dich etwas einfacher sein, da du die Punkte bereits kennst. Du kannst die drei Punkte in zwei Vektoren umwandeln und das Kreuzprodukt nehmen.

bearbeiten: Ups, ich habe vergessen hinzuzufügen, dass die Fläche eines Dreiecks die Hälfte des Kreuzprodukts ist, da das Kreuzprodukt die Fläche eines Parallelogramms ergibt, das durch die beiden Vektoren gebildet wird (und ein Dreieck ist die Hälfte davon).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X