сортировка вектора с пользовательскими объектами - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь заставить работать лучи для 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 с x и y.

points - векторпересекает, что заполнено ранее в коде.

С этой попыткой я в основном получаю недопустимый компаратор, так как я думаю, что это не совсем слабая сортировка.

...