Java:计算三角形的面积
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));
} ...
http://upload.wikimedia.org/math/f/e/5/fe56529cdaaaa9bb2f71c1ad8a1a454f.png
<-区域公式
我试图从2D笛卡尔坐标系中的3个点(x,y)计算三角形的面积。我假设我的上述公式正确产生了三角形的面积(如果不是,请更正我),但是我的编译器说“运算符-
无法应用于java.awt.Point,java.awt.Point”。我假设这是因为您不能互相减去点,但是公式中的每个值都是x或y值,而不是点。我该如何修复我的代码,这样才能正常工作?谢谢!
-
根据维基百科,您的公式是正确的。本文包含大量有用且清晰的数据。
根据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;
使用可能不是一个好习惯
point.x
,因为如果您有执行此操作的getter方法,则不应访问对象的变量。这是接口和实现之间分离的一方面:数据point.x
可以以多种形式存储,而不仅仅是存储int
;接口方法可确保您每次使用它都会得到一个int值。