JAVA中直线与正方形的交点
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您是在问一条特定的线是否与一个特定的正方形相交(如果该问题得到解决,则它适用于任意数量的正方形)。
试试这个。假设这条线有方程 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.