Java有毕达哥拉斯定理吗?

时间:2016-01-16 15:09:10

标签: java swing distance pythagorean

我使用Java Swing创建简单的游戏,如Pong和Air Hockey,我经常发现自己使用毕达哥拉斯定理来计算两点之间的距离。

虽然编写起来并不痛苦(可以简化为单行),但我想知道Java是否已将其包含在某处。

我浏览了数学课,但我没有看到任何东西。我不知道在哪里可以看,所以如果确实存在,有谁知道在哪里?

谢谢!

3 个答案:

答案 0 :(得分:5)

是的,Java在标准库中有这样的功能。它被称为Math.hypot。所以你可以写:

Math.hypot(x2 - x1, y2 - y1)

自Java 1.5以来,此方法是Java的一部分。

答案 1 :(得分:1)

您可以使用java awt.geom类。特别是,请看Point2D here

请注意,这些类是为图形界面设计的,并使用从0,0左上角开始的绘图点,随着向下和向下的增加而增加。因此,对于x=2, y=3,这一点是三个points向下,两个points位于图的左上角。

您可以以静态方式使用该类:

Point2D.distance(x1, y1, x2, y2);

但也是以oo的方式:

Point2D point1 = new Point2D.Double(x1, y1);
point1.distance(x2, y2);
point1.distance(new Point2D.Double(x2, y2));

我提到这些库不是因为它们最容易使用(Math库是最直接找到两点之间的距离),但是你在谈论2D图形程序。对于这类事情,java geom库中有很多好东西。因此,如果你想弄清楚你的点是否在正方形内(或者任何其他形状),你可以做到这一点。或者,如果你想弄清楚一个形状是否与另一个形状相交,或者两条线交叉,你也可以这样做。

答案 2 :(得分:1)

如果您使用Swing / AWT,您可以将坐标表示为java.awt.geom.Point2Djava.awt.Point,它是第一个的子类。在该课程中,您使用方法distance(Point2D),它可以为您提供所需的结果。

如果您决定从Swing切换到JavaFX,可以使用提供相同功能的javafx.geometry.Point2D