我想知道网格类如何专门化?例如,如果我们有一个由Polygon类中的Polygon组成的Mesh类。我们如何根据应用来专门化网格以支持标量字段,矢量字段等。也许对于高度复杂的仿真,我们需要3个标量场和4个矢量场。相反,对于简单的仿真,我们只需要一个标量场,仅此而已。

因此,通过专业化,我的意思是向多边形添加属性以存储局部数量。

这是一个悬而未决的问题,我不知道该怎么做。这样可能是不可能的。但是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/

10-13 06:23