0

我正在用 C 语言制作一个简单的测试应用程序,它应该生成三维骰子。我将使用 OpenGL 进行实际绘图,但我无法弄清楚如何实际生成顶点。当然,这个测试的重点是看看我的算法是否有效,但我发现了一个我无法修复的主要逻辑错误。有人可以给我指出一篇文章、网站或解释这个概念的东西吗?如果不是,虽然我更愿意自己进行实际实现,但 C 代码是可以接受的。

基本上,这是我在忘记我为算法做了什么之前所做的:

void calculateVertices(int sides) {
    BOOL isDone = FALSE;
    int vectorsPerSide = 3;
    VDVector3f *vertices = malloc((sizeof(VDVector3f) * (sides + 1)));
    VDVector3f *normals = malloc((sizeof(VDVector3f) * (sides + 1)));

    while (!isDone) {
        // Start by positioning the first vertex.
        vertices[0] = VDVector3fMake(0.0, 0.0, 1.0);

        for (int index = 1; index <= sides; index ++) {

        }

        // Not a match, increase the number of vectors
        vectorsPerSide ++;
    }
}

基本上,它会循环直到找到匹配项。这对我来说听起来效率低下,但我不知道如何做到这一点。第一个顶点实际上将在最后从数组中删除;我打算用它来创建第一面,它本来可以用来正确定位其他面。

我的主要目标是能够将数字(如 30)传递给它,并让它自动设置顶点。我不会对制作单面骰子和双面骰子采取保护措施,因为我有一些特别的想法。我将在其他地方输入这些顶点。

在此先感谢您的帮助!

顺便说一句,我有一个算法可以规范化完成的顶点数组。你不必费心帮忙。

4

1 回答 1

2

我认为这不可能一概而论。例如,您如何制作公平的 5 面或 9 面骰子?我想我从来没有见过这样的事情。在维基百科上的快速搜索表明柏拉图立体可能是你所追求的。http://en.wikipedia.org/wiki/Platonic_solid

于 2012-07-05T23:36:58.847 回答