4

コードをコンパイルすることはできますが、目的の領域が生成されません。どこでつまずいたのかわかりません。

三角形の3点の6つの座標(xとyの値)をユーザーに入力して、面積を取得してもらいたいと考えています。私のコードは次のとおりです。

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);
    }
}
4

3 に答える 3

4

この方程式を実装してみてください。http://www.mathopenref.com/coordtrianglearea.html

于 2013-01-29T00:44:33.540 に答える
2

@Michaelの提案は良いものです。あなたのコードに従って、私は次のようにピタゴラスの定理を使用します:

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

あなたのコードでは:

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

side10計算前であり、累乗のほとんどすべて0が1です。したがってside1、ポイントに関係なく1で終了します。

于 2013-01-29T01:01:45.243 に答える
0

私が発見したもう1つの方法は、外積を使用して三角形の領域を見つけることができるということです。あなたはすでにポイントを持っているので、これはあなたにとって少し簡単かもしれません。3つのポイントを2つのベクトルに変換し、外積を取ることができます。

編集: おっと、三角形の領域に追加するのを忘れると、外積の半分になります。外積は、2つのベクトルによって形成される平行四辺形の領域を与えるからです(三角形はその半分です)。

于 2013-01-29T00:45:10.420 に答える