看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《hcl012 (怪龍-卡西歐魯)》之銘言: 引入一個類別: struct Position { Position( float x, float y, float z ) { this->x = x; this->y = y; this->z = z; } float x, y, z; }; 呼叫時便可以使用這樣的語法: create_box(modelbox1, Position(1, 0.5, 2), 0.5); 但是 create_box() 這個函式內部有太多相同程式碼了, 還可以修 改一下: typedef int Coef; Coef x_coef[] = { -1, 1, 1, -1, -1, 1, 1, -1 }, y_coef[] = { -1, -1, 1, 1, -1, -1, 1, 1 }, z_coef[] = { -1, -1, -1, -1, 1, 1, 1, 1 }; for( size_t i = 0; i != 8; ++i ) boxmodel->m_v.push_back( Vec3f(p.x + x_coef[i]*size, p.y + y_ceof[i]*size, p.z + z_coef[i]*size) ); size_t indices[] = { 1, 2, 3, 1, 3, 4, 5, 6, 7, 5, 7, 8 }; boxmodel->m_vi.assign( indices, indices + 12 ); 這樣就可以把注意力分別著重在兩個面向: (1) 初始值正不正確 (2) 賦值方法有沒有失當 粉紅底色的地方表示你儲存的是索引而非其他數值, 儲存的資料型 態不是 size_t 就是 vector<T>::size_type 黃色底色的地方表示你的元素個數均固定, 這時候使用陣列會比 vector來得好, 因為又可以顯示出大小不變的這個事實 還有很多需要改進的地方..你先學習如何把各程式碼片段的歸屬分 好吧... -- ★ ★ ███ ███ █▌█ ██◣ ███ ▋▋█ █▂█ █▃█ ███ █▆█ █▄█ ███ █ ◣ █ █ ▋██ █▆◤ ███ ███ Kim Jae Kyung Koh Woo Ri Cho Hyun Young Kim Ji Sook φwindyhorse No Eul Oh Seung A Jung Yoon Hye -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115
hcl012:之前也有想過該怎麼像這樣用更簡潔的方式寫create_box函式 10/02 14:52
hcl012:這篇文章對我很有幫助,真是多謝了 10/02 14:52