我可以让我的代码进行编译,但它不会产生所需的区域。我不知道我在哪里跌跌撞撞。
他们希望您让用户为三角形的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);
}
}
答案 0 :(得分:3)
你应该尝试实现这个等式。 http://www.mathopenref.com/coordtrianglearea.html
答案 1 :(得分: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);
在计算之前,{p> side1
为0
,而权力0
的几乎任何内容都是1.因此side1
无论点数如何都以1结尾。
答案 2 :(得分:0)
我发现的另一种方法是你可以使用十字产品来找到三角形的区域。这对您来说可能稍微容易些,因为您已经拥有积分。您可以将三个点转换为两个向量并获取叉积。
修改强> 哎呀,忘了添加三角形区域将是交叉积的一半,因为交叉积会给你两个向量形成的平行四边形区域(三角形是那个的一半)。