我想知道是否有一种方法,使用标准库,找到两个3D点矢量的交集。 3D点是带有x,y和z的glm :: vec3。 x,y和z是浮点数。
我知道我们可以在1D数组上使用std :: set_intersection。
为了清楚我有2个向量:
std::vector<Point> v1;
std::vector<Point> v2;
其中Point是:
struct Point {
glm::vec3 m_position;
glm::vec2 m_texCoord;
glm::vec3 m_normal;
Point() {}
Point(glm::vec3& pos, glm::vec2& tex, glm::vec3& norm) {
m_position = pos;
m_normal = norm;
m_texCoord = tex;
}
Point(glm::vec3& pos, glm::vec3& norm) {
m_position = pos;
m_normal = norm;
}
Point(glm::vec3& pos) {
m_position = pos;
}
};
我想通过Point.m_position找到v1和v2的交集。
感谢您的帮助。
答案 0 :(得分:0)
在std::set_intersection()
的文档中提到了
1)使用运算符&lt;比较元素。并且范围必须按照相同的顺序排序。
所以基本上你需要为operator<()
提供一个重载的Point
,并在调用std::set_intersection()
之前对这些向量进行排序。