Java:计算三角形的面积

duk*_*vin 4 java math geometry area

import java.lang.Math;
import java.awt.*
public class Triangle implements Shape
{
    java.awt.Point a;
    java.awt.Point b;
    java.awt.Point c;

    public Triangle(java.awt.Point a, java.awt.Point b, java.awt.Point c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }    
public double getArea( )
    {
       double area;
       return area = Math.abs((a-c)*(b-a)-(a-b)*(c-a));
    } ...
Run Code Online (Sandbox Code Playgroud)

http://upload.wikimedia.org/math/f/e/5/fe56529cdaaaa9bb2f71c1ad8a1a454f.png < - 面积公式

我试图从2D笛卡尔坐标系中计算3点(x,y)的三角形面积.我假设我的上面的公式正确地产生了三角形的区域(如果没有,请纠正我),但我的编译器说"operator - 不能应用于java.awt.Point,java.awt.Point".我假设它是这样说的,因为你不能相互减去点,但公式中的每个值都是x或y值,而不是点.如何修复我的代码以便这样做?谢谢!

Ada*_*tan 12

根据维基百科,你的公式是正确的.本文包含大量有用且清晰的数据.
根据java.awt.point文档,您应该使用getX()getY()方法,它们返回一个点的坐标值.

那是,

替代文字

应表达为:

Math.abs((a.getX()-c.getX())*(b.getY()-a.getY())-
         (a.getX()-b.getX())*(c.getY()-a.getY()))*0.5;
Run Code Online (Sandbox Code Playgroud)

使用它可能不是一个好习惯point.x,因为如果你有一个getter方法可以访问一个对象的变量.这是界面和实现之间分离的一个方面:数据point.x可能以多种形式存储,而不仅仅是int; 接口方法确保每次使用时都会得到一个int.