优雅的方式找到立方体的顶点

时间:2012-12-19 13:29:27

标签: c++ algorithm opengl cube vertices

几乎每个OpenGL教程都允许您实现绘制多维数据集。因此需要立方体的顶点。在示例代码中,我看到了一个定义每个顶点的长列表。但我想计算一个立方体的顶点而不是使用预先计算的坐标的超长列表。

立方体由八个顶点和十二个三角形组成。顶点由x,y和z定义。三角形由三个顶点的索引定义。

是否有一种优雅的方法来计算多维数据集的顶点和element索引?

1 个答案:

答案 0 :(得分:0)

我用这段代码(C#)解决了这个问题:

public CubeShape(Coord3 startPos, int size) {
    int l = size / 2;
    verts = new Coord3[8];
    for (int i = 0; i < 8; i++) {
        verts[i] = new Coord3(
            (i & 4) != 0 ? l : -l,
            (i & 2) != 0 ? l : -l,
            (i & 1) != 0 ? l : -l) + startPos;
    }

    tris = new Tris[12];
    int vertCount = 0;
    void AddVert(int one, int two, int three) =>
        tris[vertCount++] = new Tris(verts[one], verts[two], verts[three]);
        
    for (int i = 0; i < 3; i++) {
        int v1 = 1 << i;
        int v2 = v1 == 4 ? 1 : v1 << 1;
        AddVert(0, v1, v2);
        AddVert(v1 + v2, v2, v1);
        AddVert(7, 7 - v2, 7 - v1);
        AddVert(7 - (v1 + v2), 7 - v1, 7 - v2);
    }
}

如果您想了解更多情况,可以查看the github page我写的解释它的内容。