JAVA中直线与正方形的交点

发布于 2024-10-09 09:13:56 字数 172 浏览 2 评论 0原文

JAVA:

我正在研究一个网格,其中每个正方形的中心点是一个整数坐标,我在两个整数之间画一条线,并且需要检查它是否穿过基于整数坐标的特定网格正方形。

我看过类似的帖子/谷歌结果,但我的结果更基本,所以我想知道是否有一个我无法掌握的简单解决方案。 (最有可能)

感谢您提供的任何帮助!

JAVA:

I'm working on a grid where the centre point of each square is an integer co-ordinate and I'm drawing a line between two integers and need to check whether it goes through a specific grid square based around integer coordinates.

I've seen similar posts/google results but mine's a lot more basic so I'm wondering whether there's a simple solution I can't grasp. (Most probable)

Appreciate any help you can give!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉默的熊 2024-10-16 09:13:56

我认为您是在问一条特定的线是否与一个特定的正方形相交(如果该问题得到解决,则它适用于任意数量的正方形)。

试试这个。假设这条线有方程 y = a*x + b,并且正方形的左下角有
坐标为 (x1, y1),而左上角的坐标为 (x2, y2)。

找到点 y' = a*x1 + b, y'' = a*x2 + b(“*”表示乘法);

然后取决于是否 y' > y'' 或反之亦然,你有一个区间 [y', y''] 或 [y'', y'],假设参数区间为 [y', y'']。

(在数学符号中,[m, n] 代表所有大于等于 m 且小于等于 n 的数字。)

如果 [y', y''] 与 [y1, y2] 相交,则直线进入正方形。

I think you are asking if one specific line intersects one specific square (if that problem is solved, it applies to any number of squares).

Try this. Say the line has equation y = a*x + b, and the lower left of the squares has
coordinates (x1, y1) while the upper left corner has coordinates (x2, y2).

Find the points y' = a*x1 + b, y'' = a*x2 + b ("*" for multiply);

then depending on whether y' > y'' or vice versa, you have an intervals [y', y''] or [y'', y'], say for argument that the interval is [y', y''].

(In math notation, [m, n] stands for all numbers >= m, and <= n.)

If [y', y''] intersects [y1, y2], the line enters the square.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文