c++ - 使用自定义对象对向量进行排序
问题描述
我正在尝试让光线投射适用于 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
是前面代码中填充的相交向量。
通过这种尝试,我主要得到了无效的比较器,因为我认为它不是严格的弱排序。
解决方案
推荐阅读
- r - 为什么 na.rm=TRUE 不适用于 R 中的加权 SD?
- ios - 解码从前端 IOS 应用程序获取的访问令牌以使用 Okta 和 Node JS 获取用户信息
- sql - Convert date column to new UTC date column
- ios - Access to the coordinates from an address swift
- python - python从请求中获取url
- c# - 在调用 Start 之前向 ServiceStack 的 ServerEventsClient 注册 displayName
- c# - UWP 中 ComboBox 的 CompositeCollection 的真正替代品?
- html - 存储在 spiffs 上的 chart.js 不起作用(图表未出现在网页上)
- templates - Helm 模板变量为零
- ios - 屏幕转换期间的 UINavigationItem backBarButtonItem 问题