我正在用 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)传递给它,并让它自动设置顶点。我不会对制作单面骰子和双面骰子采取保护措施,因为我有一些特别的想法。我将在其他地方输入这些顶点。
在此先感谢您的帮助!
顺便说一句,我有一个算法可以规范化完成的顶点数组。你不必费心帮忙。