Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Direct3D] Додекаэдр, не отображаются грани... частично... 
V
    Опции темы
Sfate
  Дата 20.12.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

Репутация: нет
Всего: нет



надо написать программу, которая будет выводить на экран крутящийся додекаэдр...
написал... но несколько граней отображаются неправильно или вообще не отображаются... smile 
Код

        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 МБ)
надеюсь, что кто нибудь поможет smile 

Это сообщение отредактировал(а) Sfate - 21.12.2009, 00:14
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
Sfate
  Дата 22.12.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

Репутация: нет
Всего: нет



все проблема решена... smile 
перепутал координаты 16й вершины))
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.