c++ - 检查线是否穿过二维 map 上的墙

标签 c++ dictionary line collision intersect

我有 2d map ,我想检查线是否与任何元素发生碰撞。我需要一个函数来告诉我直线是否与途中的任何对象相交。

看看:

enter image description here

红线不正确(函数应返回 false),绿线正确(返回 true)。 我的碰撞贴图是 bool 值贴图,1 代表墙,0 代表空白。

这怎么办?我读到我需要检查线是否与任何墙相交,但我完全不知道如何在 2d map 上执行此操作。

感谢任何回复。

最佳答案

这取决于您的墙的表示方式。

如果它们是矩形,则寻找 line/segment您的线与代表矩形的 4 段之间的交点。

如果它们是像素,您可以使用 bresenham line算法来查看线上的像素是否在这些 block 上。

关于c++ - 检查线是否穿过二维 map 上的墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707643/

相关文章:

java - 使用包含重复键或值的 Map 中的值获取键

c# - 如何在C#中获取字典的键

python - 如何在 python 中找到嵌套字典中项目的最大值?

file - 如何按行号将大文件拆分成小文件

java - 遍历java中一条线/路径上的每个点

python - 如何在一行中找到一个子字符串并从该行追加到下一个子字符串?

c++ - 两个指针存储不同的信息

C++删除指针

c++ - x86-64 调用约定中的返回值

c++ - 错误 C2664 : cannot convert 'IDWriteFactory2 **' to 'IUnknown **'