提问人:Reiss Gomez 提问时间:10/18/2023 更新时间:10/19/2023 访问量:68
如何获得线段和圆之间的投影距离?
How can I get the projected distance between a line segment and a circle?
问:
我正在用 Java 制作一个 2D 射击游戏,我需要能够计算出一个圆可以向前移动的最大距离(仅在 Y 轴上)并将距离作为浮点值,我到处寻找,只能找到离线最近的距离,但我只想要向前距离。这张图片是我如何尝试让它工作的一个例子,线是一堵墙,圆圈是子弹。如果有人能给我一个简单的 Java 函数,那就太棒了。我需要它考虑到圆的整个圆周,所以即使它稍微夹住了带有边缘的墙壁,我也需要这个距离。如果这条线高于圆圈,我希望它返回一个负值,如果这条线低于我想要一个正值,如果它们不会碰撞,则返回POSITIVE_INFITITY。
我尝试了许多在网上找到的不同功能,但似乎没有一个适合我只使用 Y 轴距离的目的。
答:
-1赞
Reilas
10/19/2023
#1
大多数 java.awt.geom 框架都包含有用的数学函数。
Line2D 类具有 Line2D#ptLineDist 方法,用于计算此距离,不计算半径。
为此,我想你正在为子弹计算一个不同的角度。
对于该解决方案,这至少是一种资源。
double a = Line2D.ptLineDist(20, 40, 100, 10, 40, 100);
double b = Line2D.ptLineDist(20, 40, 100, 10, 65, 100);
System.out.printf("a = %s, b = %s", a, b);
输出
a = 63.202219485910504, b = 71.9803055256203
评论
0赞
Old Dog Programmer
10/19/2023
是的,O/P 正在计算子弹的不同角度。虽然没有特别提到,但 O/P 确实说他/她找到了如何进行这种总结,这不是想要的。Line2D#ptLineDist
0赞
Reilas
10/20/2023
@OldDogProgrammer,如果半径为 10,则使用 30、90 和 50、110 等。
评论