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.
| 归档时间: |
|
| 查看次数: |
13441 次 |
| 最近记录: |