我想知道如何专门化网格类?例如,如果我们有一个由多边形类中的多边形组成的网格类。我们如何根据应用专门化网格以支持标量场、 vector 场等。也许对于高度复杂的模拟,我们需要 3 个标量场和 4 个 vector 场。相反,对于简单的模拟,我们只需要一个标量场就可以了。
所以所谓特化,我的意思是向多边形添加属性以存储本地数量。
这是一个悬而未决的问题,我不知道该怎么做。这可能是不可能的。但是 c++ 很灵活,每个允许在实践中做一些接近的事情的解决方案都会有所帮助。
最佳答案
您可以使用模板(假设多边形是顶点的集合,网格是多边形的集合)。这是一个简单的例子:
#include <array>
#include <vector>
template <typename T>
struct Vector {
T x, y, z;
};
template <typename T, size_t N>
struct Polygon {
std::array<T, N> vertices;
};
template <typename T>
struct Mesh {
std::vector<T> polygons;
};
int main() {
// mesh with polygons of float-vertices with 3 dimensions
Mesh<Polygon<Vector<float>, 3>> mesh;
mesh.polygons.push_back(
{{{{1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}}}});
}
关于c++ - 如何专门化网格类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598858/