代码之家  ›  专栏  ›  技术社区  ›  Bojangles Vincent Baillet

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

  •  2
  • Bojangles Vincent Baillet  · 技术社区  · 14 年前

    我有几个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 回复  |  直到 14 年前
        1
  •  2
  •   In silico    14 年前

    你所知道的是向量在计算机程序中是如何表示的。我想不出还有别的办法。这很好:

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

    ( DirectX stores vector components like this ,顺便说一句。)

    但是,三维密集型程序通常将面索引到矢量数组中以节省空间,因为同一点经常出现在三维模型的不同面上:

    typedef struct
    {
        int vectorIndex1, vectorIndex2, vectorIndex3;
    } Face;
    
    推荐文章