嗨,朋友们,我需要用java oop方法计算两点之间的线长度,从3个点得到3条线,然后证明它是三角形,如果它是三角形,则计算三角形面积谢谢你
对于计算线长,在二维情况下,http://en.wikipedia.org/wiki/Euclidean_distance
要从点得到线,将点i % n
和(i + 1) % n
组成线,其中n
是点的数目,i
的范围从0
到n-1
,就像一个标准的for循环。
为了证明三条线是三角形——如果你用三个点组成它们,它们显然是三角形。如果它们之间只有三个点共享,它们也是一个三角形(例如,你可以将它们添加到Set
中,看看是否只有三个唯一的点存在)。
编辑:Daniel Robertus指出它们也不需要共线,即使你知道它们的点是相同的。证明三条线不共线的一种方法是用y2-y1
和x2-x1
计算tan2(y,x)
,这就给出了那条线的角度——如果它们共线,那么其中两条线的角度就相同。如果它们不共线,就没有一条线有相同的角。(这个证明很简单)
要计算三角形的面积,请从http://en.wikipedia.org/wiki/Triangle#Computing_the_area_of_a_triangle
Point2D p1 = new Point2D.Double (10.0, 15.0);
Point2D p2 = new Point2D.Double (16.0, 7.0);
Point2D p3 = new Point2D.Double (12.0, 11.0);
System.out.println ("Distance from p1 to p2: " + p1.distance (p2));
System.out.println (
"Area of {p1, p2, p3} triangle: " +
0.5 * p1.distance (p2) * new Line2D.Double (p1, p2).ptLineDist (p3));