如何获得线段和圆之间的投影距离?

问题描述 投票:0回答:1

我正在用Java制作一个2D射击游戏,我需要能够计算出一个圆可以向前移动的最大距离(仅在Y轴上)并获得浮点值的距离,我已经到处查看并且可以只找到离线最近的距离,但我只想要前进的距离。这张图片是我如何让它工作的一个例子,线条是墙,圆圈是子弹。如果有人能给我一个简单的 Java 函数,那就太好了。我需要它考虑到圆的整个周长,所以即使它的边缘稍微夹住墙壁,我也需要这个距离。如果线位于圆上方,我希望它返回负值,如果线位于圆下方,我希望返回正值,如果它们不会碰撞,则返回 POSITIVE_INFITITY。

我尝试了在网上找到的许多不同的功能,但似乎没有一个适合我仅使用 Y 轴距离的目的。

java 2d collision axis bullet
1个回答
0
投票

您可以使用 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
© www.soinside.com 2019 - 2024. All rights reserved.