我有几个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;
我的问题是:是否有更好或更快的方式存储线条和面孔?或者我做得好吗?
谢谢,
詹姆斯
答案 0 :(得分:2)
你所拥有的几乎就是如何在计算机程序中表示向量。我无法想象有任何其他方法可以做到这一点。这非常好:
typedef struct
{
float x, y, z;
} Vector;
顺便说一句,(DirectX stores vector components like this。)
然而,3D密集型程序通常将面部索引到矢量数组中以节省空间,因为相同的点经常出现在3D模型的不同面上:
typedef struct
{
int vectorIndex1, vectorIndex2, vectorIndex3;
} Face;