在C ++中存储三角形和线条的最佳(和最快)方法?

时间:2010-11-14 20:39:59

标签: variables 3d

我有几个3D应用程序,我想知道,存储线和三角形的最佳方法是什么?目前,我将行作为typedef'd向量的数组:

typedef struct
{
    float x, y, z;
}
Vector

Vector line[2];

现在,我可以这样做:

typedef struct 
{
    Vector start, end;
}
Line

Line lineVar;

面孔可能类似:

typdef struct
{
    Vector v1, v2, v3;
}

Face faceVar;

我的问题是:是否有更好或更快的方式存储线条和面孔?或者我做得好吗?

谢谢,

詹姆斯

1 个答案:

答案 0 :(得分:2)

你所拥有的几乎就是如何在计算机程序中表示向量。我无法想象有任何其他方法可以做到这一点。这非常好:

typedef struct
{
    float x, y, z;
} Vector;
顺便说一句,(DirectX stores vector components like this。)

然而,3D密集型程序通常将面部索引到矢量数组中以节省空间,因为相同的点经常出现在3D模型的不同面上:

typedef struct
{
    int vectorIndex1, vectorIndex2, vectorIndex3;
} Face;