先通过模板定义一个Point类模板来保存顶点的坐标信息。Point坐标的类型是可变的,比如坐标类型可以是int,可以是float,可以是double等等。再定义一个Facet类来表示每一个面片。面片类也是模板,面片每个顶点的类型是可变的,跟Point模板对应。Facet通过一个vector数组vector<Point<T> *> vertices;记录组成它的几个顶点,每个顶点是一个Point类型的指针。写出这段程序
时间: 2024-02-11 12:05:07 浏览: 68
基于Threejs实现鼠标移动图片跟随变形动画特效.zip
好的,以下是代码实现:
```cpp
#include <iostream>
#include <vector>
template <typename T>
class Point {
public:
Point(T _x, T _y, T _z) : x(_x), y(_y), z(_z) {}
T x, y, z;
};
template <typename T>
class Facet {
public:
Facet(std::vector<Point<T>*> _vertices) : vertices(_vertices) {}
std::vector<Point<T>*> vertices;
};
int main() {
Point<float> p1(1.0f, 2.0f, 3.0f);
Point<float> p2(4.0f, 5.0f, 6.0f);
std::vector<Point<float>*> vertices;
vertices.push_back(&p1);
vertices.push_back(&p2);
Facet<float> f(vertices);
return 0;
}
```
在这个例子中,我们定义了一个Point类模板来保存顶点的坐标信息,坐标类型是可变的。我们也定义了一个Facet类模板来表示每个面片,通过一个vector数组来记录组成它的几个顶点,每个顶点是一个Point类型的指针。在main函数中,我们创建了两个Point<float>对象,并将它们的指针存储到一个vector中,然后创建了一个Facet<float>对象来表示一个面片。
阅读全文