Java有毕达哥拉斯定理吗?
Does Java have the Pythagoras Theorem?
我使用 Java Swing 来创建简单的游戏,例如 Pong 和 Air Hockey,我发现自己经常使用毕达哥拉斯定理来计算两点之间的距离。
虽然写起来并不痛苦(可以减少到一行),但我想知道Java是否已经在某处包含它了。
我查看了数学 class,但我没有看到任何东西。我不知道还能去哪里找,所以如果它确实存在,有人知道在哪里吗?
谢谢!
您可以为此使用 java awt.geom
classes。特别是看 Point2D here
请注意,这些 class 是为图形界面设计的,并且使用从左上角 0,0
开始的绘图点,随着向右和向下移动而增加。所以对于 x=2, y=3
,这个点在图的 top-left 下方三 points
和右侧两个 points
。
你们都可以静态地使用 class:
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 图形程序。 java geom
库中有很多针对这类事情的好东西。因此,如果您想确定您的点是否在正方形(或任何其他形状)内,您可以这样做。或者,如果您想计算一个形状是否与另一个形状相交,或者两条线是否交叉,您也可以这样做。
是的,Java标准库中有这样的函数。它被称为Math.hypot。所以你可以这样写:
Math.hypot(x2 - x1, y2 - y1)
此方法是 Java 的一部分,因为 Java 1.5.
如果您使用 Swing/AWT,您可以将您的坐标表示为 java.awt.geom.Point2D
或 java.awt.Point
,这是第一个坐标的子 class。在那个 class 上你有方法 distance(Point2D)
,它给你想要的结果。
如果您决定从 Swing 切换到 JavaFX,您可以使用提供相同功能的 javafx.geometry.Point2D
。
我使用 Java Swing 来创建简单的游戏,例如 Pong 和 Air Hockey,我发现自己经常使用毕达哥拉斯定理来计算两点之间的距离。
虽然写起来并不痛苦(可以减少到一行),但我想知道Java是否已经在某处包含它了。
我查看了数学 class,但我没有看到任何东西。我不知道还能去哪里找,所以如果它确实存在,有人知道在哪里吗?
谢谢!
您可以为此使用 java awt.geom
classes。特别是看 Point2D here
请注意,这些 class 是为图形界面设计的,并且使用从左上角 0,0
开始的绘图点,随着向右和向下移动而增加。所以对于 x=2, y=3
,这个点在图的 top-left 下方三 points
和右侧两个 points
。
你们都可以静态地使用 class:
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 图形程序。 java geom
库中有很多针对这类事情的好东西。因此,如果您想确定您的点是否在正方形(或任何其他形状)内,您可以这样做。或者,如果您想计算一个形状是否与另一个形状相交,或者两条线是否交叉,您也可以这样做。
是的,Java标准库中有这样的函数。它被称为Math.hypot。所以你可以这样写:
Math.hypot(x2 - x1, y2 - y1)
此方法是 Java 的一部分,因为 Java 1.5.
如果您使用 Swing/AWT,您可以将您的坐标表示为 java.awt.geom.Point2D
或 java.awt.Point
,这是第一个坐标的子 class。在那个 class 上你有方法 distance(Point2D)
,它给你想要的结果。
如果您决定从 Swing 切换到 JavaFX,您可以使用提供相同功能的 javafx.geometry.Point2D
。