我需要针对特定情况的解决方案。我有一个基本上适用于线段的算法。我只知道线段的终点和起点。(点有2个坐标x,y。这些是图像上的像素点。我也知道图像的大小。)我想检查这些线段并对它们做一些事情。但是,我还需要跟踪检查过的线段,这样我就不会再次检查相同的线段。我正在使用 C++,所以我想使用 stl set 容器。
我的问题是如何根据它们的终点和起点存储这些线段?我需要为终点和起点生成唯一编号。(除了使用 stl set 之外,我也愿意接受任何其他建议 :))
一种可能的解决方案是我为这两个像素生成索引号:(y*image->Witdh) + x。然后我得到两个索引号(顺便说一下它们是整数。)然后我通过以下方式连接这些数字:(indexStart << 32)+ indexEnd.(我得到双)。现在我有了唯一的编号,我可以轻松地存储在集合中。但问题是在我的搜索中,一旦线段的起点可以是同一线段的终点。如果我从端点遇到相同的线段,则连接的线段唯一编号变为 (indexEnd << 32) + indexStart。然后我会将相同的线段添加到我需要避免的设置容器中。
感谢您的任何建议。