Я пытаюсь заставить работать лучи для 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
- векторпересекает, что заполнено ранее в коде.
С этой попыткой я в основном получаю недопустимый компаратор, так как я думаю, что это не совсем слабая сортировка.