我使用 Java Swing 创建简单的游戏,例如 Pong 和 Air Hockey,并且我经常发现自己使用 Pythagoras Theorem 来计算两点之间的距离。
尽管编写起来并不痛苦(它可以简化为一行),但我想知道 Java 是否已经将它包含在某个地方。
我浏览了数学课,但我没有看到任何东西。我不知道还能去哪里看,所以如果它确实存在,有人知道在哪里吗?
谢谢!
我使用 Java Swing 创建简单的游戏,例如 Pong 和 Air Hockey,并且我经常发现自己使用 Pythagoras Theorem 来计算两点之间的距离。
尽管编写起来并不痛苦(它可以简化为一行),但我想知道 Java 是否已经将它包含在某个地方。
我浏览了数学课,但我没有看到任何东西。我不知道还能去哪里看,所以如果它确实存在,有人知道在哪里吗?
谢谢!
是的,Java在标准库中有这样的功能。它被称为Math.hypot。所以你可以写:
Math.hypot(x2 - x1, y2 - y1)
自 Java 1.5 以来,此方法是 Java 的一部分。
您可以为此使用 javaawt.geom
类。特别是,在这里查看 Point2D
请注意,这些类是为图形界面设计的,并使用从左上角开始的绘图点0,0
,随着向右和向下移动而增加。所以对于x=2, y=3
,这个点在图左上角的下三点points
和右二点。points
您都可以以静态方式使用该类:
Point2D.distance(x1, y1, x2, y2);
但也以一种方式:
Point2D point1 = new Point2D.Double(x1, y1);
point1.distance(x2, y2);
point1.distance(new Point2D.Double(x2, y2));
我提到这些库并不是因为它们最容易使用(Math
库是最直接找到两点之间距离的方法),而是您在谈论 2D 图形程序。Javageom
库中有很多针对这类事情的好东西。因此,如果您想确定您的点是否在正方形(或任何其他形状)内,您可以这样做。或者,如果您想确定一个形状是否与另一个形状相交,或者两条线是否交叉,您也可以这样做。
如果您使用的是 Swing/AWT,您可以将您的坐标表示为java.awt.geom.Point2D
或者java.awt.Point
是第一个的子类。在那个类上,你有方法distance(Point2D)
,它会给你想要的结果。
如果您决定从 Swing 切换到 JavaFX,您可以使用javafx.geometry.Point2D
提供相同功能的 JavaFX。