c++ - 从一条线上找到网格方 block

标签 c++ line trace

我正在尝试找到一种合适的算法,使我能够找到一条线在穿过网格时相交的所有正方形。 Bresenham 的算法在我的场景中不起作用,因为一条线的端点不一定必须在正方形的中心开始或结束。即使经过一个角,也算一个正方形。

我试过谷歌搜索,但没有找到很多结果。

enter image description here

Red 是 Bresenham 的算法,它执行我想要它执行的操作,但它仅在直线端点从正方形的中心开始时才有效。 绿色是我的理想场景。

最佳答案

为什么不遵循“数字”算法?
只需计算直线中有限数量的点。
根据点的坐标,很容易确定它们落在哪个方格上。
(当点所在的方 block 与上一个点不同时,您只需在列表中添加一个新方 block 。)

关于c++ - 从一条线上找到网格方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17207805/

相关文章:

javascript - 如何获取网页的 JavaScript 调用轨迹?

c++ - 使用 C++ 中的 Luabind 在循环中创建的对象导致应用程序崩溃

r - 如何在 ggplot2 R 中创建 react 规范(按行加入)?

python - 更改 matplotlib 线条样式中图

c# - 无法将跟踪事件记录到 Application Insights

linux-kernel - LTTng/性能 : Difference between events used for exiting (sched_process_exit) and freeing (sched_process_free) a process

c++ - 我可以在模板参数中声明一个 constexpr lambda 吗?

javascript - 将 JS 数字数组传递给 emscripten C++ 而无需 reinterpret_cast

为非虚拟方法指定的c++初始化

MATLAB:设置要并行应用的线条的颜色和样式顺序