如何专用化网格类
How to specialize a mesh class?
我想知道网格类如何专业化?例如,如果我们有一个由多边形类中的多边形组成的网格类。我们如何根据应用对网格进行专业化以支持标量场、向量场等。也许对于高度复杂的模拟,我们需要 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}}}});
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- 使用对象文件读取三角形数据网格
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 如何从 Skia 路径几何体中获取网格?
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- CGAL:如何创建填充边界曲线的曲面网格?
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 如何专用化网格类