Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Begin // будуємо грані куба (квадрати)Содержание книги
Поиск на нашем сайте
Edge4(A, B, C, D,N1,C_Red); // передня (front) Edge4(A1,D1,C1,B1,N2,C_Orange); // задня (back) Edge4(A, D, D1,A1,N3,C_Lemon); // права (right) Edge4(B,B1,C1,C, N4,C_Aqua); // ліва (left) Edge4(A, A1,B1,B, N5,C_Green); // верхня (top) Edge4(C, C1,D1,D, N6,C_Navy); // нижня (bottom) end; Викликається в кожному кадрі процедурою procedure Draw3D; begin DrawAxis; DrawSolidCube end; Правильні многранники взаємопов’язані, що можна використати для побудови наступних тіл Платона. З найбільш простої для побудови фігури – куба можна отримати тетраедр, провівши перехресні діагоналі на протилежних гранях куба (рис.6.2). Для виведення грані тетраедра (трикутника) з врахуванням нормалі і кольору процедура аналогічна Edge4 procedure Edge3(V1,V2,V3:V_Array; N:N_Array;Color:C_Array); begin glBegin (GL_TRIANGLES); glColor3fv(@Color); glNormal3fv(@N); glVertex3fv(@V1); glVertex3fv(@V2); glVertex3fv(@V3); glEnd end;
Рис.6.2. Тетраедр, вписаний в куб. Приклад 6.2. Процедура побудови тетраедра procedure DrawSolidTetrahedron; const q=0.577350269; {q=1/sqrt(3);} // вершини тетраедра // нормалі до граней A:V_Array=(1,1,-1); N1:N_Array=(q, q, q); B:V_Array=(1,-1,1); N2:N_Array=(-q,-q, q); C:V_Array=(-1,1,1); N3:N_Array=(q,-q,-q); D:V_Array=(-1,-1,-1); N4:N_Array=(-q, q,-q); Begin // будуємо грані тетраедра (прав.трикутники) Edge3(A, C, B, N1,C_Red); // 1 Edge3(C, D, B, N2,C_Orange); // 2 Edge3(A, B, D, N3,C_Lemon); // 3 Edge3(A, D, C, N4,C_Aqua); // 4 end;
Рис.6.3. Октаедр, вписаний в куб. Вершини октаедра є центрами граней куба (рис.6.3). Приклад 6.3. Процедура побудови октаедра procedure DrawSolidOctahedron; const q=0.577350269; {q=1/sqrt(3);} // вершини октаедра // нормалі до граней A:V_Array=(1,0,0); N1:N_Array=(q, q, q); B:V_Array=(0,0,1); N2:N_Array=(-q, q, q); C:V_Array=(-1,0,0); N3:N_Array=(-q, q,-q); D:V_Array=(0,0,-1); N4:N_Array=(q, q,-q); E:V_Array=(0,1,0); N5:N_Array=(q,-q, q); F:V_Array=(0,-1,0); N6:N_Array=(-q,-q, q); N7:N_Array=(-q,-q,-q); N8:N_Array=(q,-q,-q); Begin // будуємо грані октаедра(прав.трикутники) Edge3(E, B, A, N1,C_Red); // 1 Edge3(E, C, B, N2,C_Orange); // 2 Edge3(E, D, C, N3,C_Lemon); // 3 Edge3(E, A, D, N4,C_Aqua); // 4 Edge3(F, A, B, N5,C_Green); // 5 Edge3(F, B, C, N6,C_Cherry); // 6 Edge3(F, C, D, N7,C_Yellow); // 7 Edge3(F, D, A, N8,C_White) end; // 8
Рис.6.4. Послідовність побудови бічних граней ікосаедра. Додекаедр та ікосаедр також можна отримати з допомогою відрізання частин куба. Однак існує і більш простий спосіб. Будуються два кола одиничного радіуса, які лежать на циліндрі на відстані 1 одне від одного (рис.6.4). Кожне з кіл ділиться на 5 рівних частин, причому точки вибираються так, щоб на нижньому колі вершини утвореного правильного п’ятикутника лежали навпроти середин сторін верхнього і навпаки. Отримані на колах точки послідовно з’єднуються, утворюючи пояс із 10 правильних трикутників. Таким чином утворюється 10 вершин ікосаедра. Ще дві точки вибираються над центром верхнього і під центром нижнього п’ятикутників на відстані від них (). З’єднавши ці дві точки з вершинами п’ятикутників, до пояса додається “дах” із 5 правильних трикутників і подібне “дно”, утворюючи ікосаедр (рис.6.5).
Рис.6.5. Побудова ікосаедра з трьох частин. Координати (x, y) для V3,V4,V8,V9 обчислюються, як проекції одиничного вектора з кутом 72°, а для V2,V5,V7,V10 з кутом 36 °. Координати (x, y) для інших точок та значення z для всіх точок добре зрозумілі з процесу побудови ікосаедра на наведених вище рисунках. Координати вершин ікосаедра (список додається до прикладів 6.4 і 6.5). const cos72= 0.309016994; sin72= 0.951056516; cos36= 0.809016994; sin36= 0.587785252; q5div2=1.118033989; { sqrt(5)/2; } Var // задаємо вершини ікосаедра V1: V_Array=(0, -1, 0.5); V2: V_Array=(sin36, -cos36, -0.5); V3: V_Array=(sin72,-cos72, 0.5); V4: V_Array=(sin72, cos72, -0.5); V5: V_Array=(sin36, cos36, 0.5); V6: V_Array=(0, 1, -0.5); V7: V_Array=(-sin36, cos36, 0.5); V8: V_Array=(-sin72, cos72, -0.5); V9: V_Array=(-sin72,-cos72, 0.5); V10: V_Array=(-sin36,-cos36, -0.5); V11: V_Array=(0, 0, q5div2); V12: V_Array=(0, 0, -q5div2); Довжина всіх вищенаведених векторів
Рис.6.6. Взаємозв’язок додекаедра та ікосаедра Додекаедр і ікосаедр пов’язані між собою (рис.6.6). З’єднавши центри граней ікосаедра, одержимо додекаедр. І навпаки: з’єднавши центри граней додекаедра, одержимо ікосаедр. Додекаедр найпростіше побудувати, з’єднавши центри граней ікосаедра. Для обчислення координат вершин додекаедра досить додати і розділити на 3 координати вершин кожної із 20 граней ікосаедра (рис.6.7). Обчислення координат вершин додекаедра – центрів граней ікосаедра (додається до прикладів 6.4 і 6.5). Var M1,M2,M3,M4,M5, M6,M7,M8,M9,M10, M11,M12,M13,M14,M15,M16,M17,M18,M19,M20:V_Array; procedure Middle(V1,V2,V3:V_Array;var M:V_Array); begin M[0]:=(V1[0]+V2[0]+V3[0])/3; M[1]:=(V1[1]+V2[1]+V3[1])/3; M[2]:=(V1[2]+V2[2]+V3[2])/3 end;
|
||||
Последнее изменение этой страницы: 2016-04-08; просмотров: 418; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.129.241 (0.006 с.) |