我正在C中製作一個簡單的測試應用程序,該應用程序應該生成三維骰子。我將使用OpenGL來完成實際繪圖,但我無法弄清楚如何實際生成頂點。當然,這個測試的重點是看我的算法是否有效,但是我發現了一個我無法修復的重大邏輯錯誤。有人可以請我指出一篇文章,網站或解釋這個概念的東西嗎?如果不是,雖然我寧願自己實際執行,但C代碼是可以接受的。3D骰子生成算法
基本上,這是我做之前,我忘了我在做什麼的算法:
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)傳遞給它,並讓它自動設置頂點。我會而不是有防止製造單面和雙面骰子,因爲我有一些特別的想法。我會將這些頂點輸入到別處。
在此先感謝您的幫助!
順便說一句,我有一個算法,可以規範化完成的頂點數組。你不必爲此煩心。
這是一個很好的觀點。我可以限制循環的數量或者其他東西,因爲我希望能夠生成更加「困難」的骰子,比如27個骰子。 – Justin 2012-07-05 23:38:49
我只是看着鏈接,這是一個非常好的匹配問題。我可以誠實地說,我已經儘可能聰明地搜尋了幾個小時,我不相信你能夠找到這麼快。感謝您的鏈接。 – Justin 2012-07-05 23:42:02