使用自定义对象对向量进行排序

时间:2018-11-15 18:46:20

标签: c++ sfml

我正在尝试使射线投射适用于2D游戏,并达到将我的昆虫正确存储在矢量中的程度,但是我不知道如何正确地对矢量进行排序,就像绘制一样从播放器到屏幕左侧的一条水平线,然后从其创建一个圆 (有点像https://www.redblobgames.com/articles/visibility/中的内容)

我正在使用的结构:

struct Intersect
{
    bool result = false; Vec2 pos; float angle;
};

尝试对其进行排序:

std::stable_sort(points.begin(), points.end(), [&playerPos](const Intersect& lhs, const Intersect& rhs)
{

    if (playerPos.y < lhs.pos.y)
    {
        if (lhs.pos.x < playerPos.x)
        {
            return  lhs.pos.x < rhs.pos.x;
        }
        else
        {
            return lhs.pos.y > rhs.pos.x;
        }
    }
    else
    {
        return lhs.pos.x > rhs.pos.x;
    }
});

playerPos是一个简单的Vec2,其中包含xy

points是在代码的前面填充的相交矢量。

通过这种尝试,我主要是得到无效的比较器,因为它并不是严格的弱排序。

0 个答案:

没有答案