我正在尝试找到一种合适的算法,使我能够找到一条线在穿过网格时相交的所有正方形。 Bresenham 的算法在我的场景中不起作用,因为一条线的端点不一定必须在正方形的中心开始或结束。即使经过一个角,也算一个正方形。
我试过谷歌搜索,但没有找到很多结果。
Red 是 Bresenham 的算法,它执行我想要它执行的操作,但它仅在直线端点从正方形的中心开始时才有效。 绿色是我的理想场景。
最佳答案
为什么不遵循“数字”算法?
只需计算直线中有限数量的点。
根据点的坐标,很容易确定它们落在哪个方格上。
(当点所在的方 block 与上一个点不同时,您只需在列表中添加一个新方 block 。)
关于c++ - 从一条线上找到网格方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17207805/