【问题标题】:Best (and fastest) way to store triangles and lines in C++?在 C++ 中存储三角形和直线的最佳(和最快)方法?
【发布时间】:2010-11-14 20:39:58
【问题描述】:

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

typedef 结构
{
    浮动 x, y, z;
}
向量

向量线[2];

现在,我可以这样做:

类型定义结构 { 向量开始,结束; } 线 线 lineVar;

面孔可能相似:

类型定义结构 { 向量 v1、v2、v3; } 面对 faceVar;

我的问题是:有没有更好或更快的方法来存储线条和面?还是我做的好吗?

谢谢,

詹姆斯

【问题讨论】:

    标签: variables 3d


    【解决方案1】:

    您所拥有的几乎就是向量在计算机程序中的表示方式。我无法想象任何其他方式来做到这一点。这很好:

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

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

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

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

    【讨论】:

    • 谢谢 :-) 正是我所需要的
    • @JamWaffles:我应该注意,人脸通常由矢量索引而不是矢量本身表示 - 请参阅我的编辑。
    • 谢谢。我现在只是在玩一些小的数学演示——编写小的 sn-p progs 以确保最终应用程序(游戏)的所有组件都能正常工作。我将从一个文件中加载模型,该文件将在同一个地方有多个点,所以我一定会考虑删除重复项 - 感谢速度提升的灵感!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2021-06-28
    • 2016-12-07
    相关资源
    最近更新 更多