надо написать программу, которая будет выводить на экран крутящийся додекаэдр... написал... но несколько граней отображаются неправильно или вообще не отображаются... Код | float alpha, beta;
alpha = sqrt(2.0f / (3.0f + sqrt(5.0f))); beta = 1.0f + sqrt(6.0f / (3.0f + sqrt(5.0f)) - 2.0f + 2.0f * sqrt(2.0f / (3.0f + sqrt(5.0f))));
vertices[0] = s_vertex( sv.x - alpha * e, sv.y + 0 * e, sv.z + beta * e ); vertices[1] = s_vertex( sv.x + alpha * e, sv.y + 0 * e, sv.z + beta * e ); vertices[2] = s_vertex( sv.x - e, sv.y - e, sv.z - e ); vertices[3] = s_vertex( sv.x - e, sv.y - e, sv.z + e ); vertices[4] = s_vertex( sv.x - e, sv.y + e, sv.z - e ); vertices[5] = s_vertex( sv.x - e, sv.y + e, sv.z + e ); vertices[6] = s_vertex( sv.x + e, sv.y - e, sv.z - e ); vertices[7] = s_vertex( sv.x + e, sv.y - e, sv.z + e ); vertices[8] = s_vertex( sv.x + e, sv.y + e, sv.z - e ); vertices[9] = s_vertex( sv.x + e, sv.y + e, sv.z + e ); vertices[10] = s_vertex( sv.x + beta * e, sv.y + alpha * e, sv.z - 0 * e ); vertices[11] = s_vertex( sv.x + beta * e, sv.y - alpha * e, sv.z - 0 * e ); vertices[12] = s_vertex( sv.x - beta * e, sv.y + alpha * e, sv.z + 0 * e ); vertices[13] = s_vertex( sv.x - beta * e, sv.y - alpha * e, sv.z + 0 * e ); vertices[14] = s_vertex( sv.x - alpha * e, sv.y + 0 * e, sv.z - beta * e ); vertices[15] = s_vertex( sv.x + alpha * e, sv.y - 0 * e, sv.z - beta * e ); vertices[16] = s_vertex( sv.x - 0 * e, sv.y + alpha * e, sv.z + beta * e ); vertices[17] = s_vertex( sv.x - 0 * e, sv.y + beta * e, sv.z - alpha * e ); vertices[18] = s_vertex( sv.x + 0 * e, sv.y - beta * e, sv.z + alpha * e ); vertices[19] = s_vertex( sv.x + 0 * e, sv.y - beta * e, sv.z - alpha * e ); ... //1 indices[0] = 9; indices[1] = 16; indices[2] = 1; indices[3] = 16; indices[4] = 0; indices[5] = 1;///fail indices[6] = 16; indices[7] = 5; indices[8] = 0; //2 indices[9] = 18; indices[10] = 7; indices[11] = 1; indices[12] = 18; indices[13] = 1; indices[14] = 3;//ok(?) indices[15] = 3; indices[16] = 1; indices[17] = 0; //3 indices[18] = 7; indices[19] = 11; indices[20] = 10; indices[21] = 7; indices[22] = 10; indices[23] = 1;///ok indices[24] = 1; indices[25] = 10; indices[26] = 9; //4 indices[27] = 6; indices[28] = 11; indices[29] = 7; indices[30] = 6; indices[31] = 7; indices[32] = 19;///ok indices[33] = 19; indices[34] = 7; indices[35] = 18; //5 indices[36] = 9; indices[37] = 10; indices[38] = 8; indices[39] = 9; indices[40] = 8; indices[41] = 16;///fail indices[42] = 16; indices[43] = 8; indices[44] = 17; //6 indices[45] = 19; indices[46] = 2; indices[47] = 14; indices[48] = 19; indices[49] = 14; indices[50] = 6;///ok indices[51] = 6; indices[52] = 14; indices[53] = 15; //7 indices[54] = 14; indices[55] = 2; indices[56] = 13; indices[57] = 14; indices[58] = 13; indices[59] = 4;///ok indices[60] = 4; indices[61] = 13; indices[62] = 12; //8 indices[63] = 3; indices[64] = 13; indices[65] = 2; indices[66] = 3; indices[67] = 2; indices[68] = 19;///ok indices[69] = 18; indices[70] = 3; indices[71] = 19; //9 indices[72] = 3; indices[73] = 0; indices[74] = 5; indices[75] = 13; indices[76] = 3; indices[77] = 5;///ok indices[78] = 13; indices[79] = 5; indices[80] = 12; //10 indices[81] = 11; indices[82] = 6; indices[83] = 15; indices[84] = 11; indices[85] = 15; indices[86] = 8;///ok indices[87] = 11; indices[88] = 8; indices[89] = 10; //11 indices[90] = 14; indices[91] = 4; indices[92] = 17; indices[93] = 14; indices[94] = 17; indices[95] = 15;///fail indices[96] = 15; indices[97] = 17; indices[98] = 8; //12 indices[99] = 16; indices[100] = 17; indices[101] = 5; indices[102] = 5; indices[103] = 17; indices[104] = 12;///fail indices[105] = 12; indices[106] = 17; indices[107] = 4;
|
в куске кода: vertices - массив вершин; s_vertex - функция, куда передаются значения sv.x - e и т.п.(положения вершин); indices - массив индексов для создания граней... там где в камменте fail, те грани не отображаются... проект: d.o.d.e.k.a.e.d.r.rar (4 МБ)надеюсь, что кто нибудь поможет Это сообщение отредактировал(а) Sfate - 21.12.2009, 00:14
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
|