Муниципальное бюджетное образовательное учреждение муниципального образования "Город Архангельск" "Общеобразовательная гимназия №6" Создание интерактивной трехмерной модели солнечной системы в среде программирования Delphi, используя возможности графической библиотеки OpenGL Исследовательская работа Выполнена ученицей 11А класса МБОУ ОГ №6 Родионовой Татьяной Научный руководитель: учитель информатики Харлова Елена Викторовна, ВКК г. Архангельск, 2013 2 СОДЕРЖАНИЕ ВВЕДЕНИЕ………………………………………………………………………………2 1. Моделирование и его виды……………………………………………………..3 1.1. Особенности компьютерного моделирования…………………………..4 1.1.2. 3D графика и моделирование…………………………………...5 1.2. Понятие о физическом моделировании………………………………….6 2. Моделирование солнечной системы…………………………………………...7 2.1. Описание и возможности программы «Интерактивная трехмерная модель солнечной системы»………………………........................7 2.2. Значение интерактивной трехмерной модели солнечной системы…..8 ЗАКЛЮЧЕНИЕ…………………………………………………………………………10 БИБЛИОГРАФИЧЕКИЙ СПИСОК…………………………………………………...11 ПРИЛОЖЕНИЕ 1……………………………………………………………………….12 ПРИЛОЖЕНИЕ 2……………………………………………………………………….13 3 ВВЕДЕНИЕ Компьютерное моделирование является одним из эффективных методов изучения сложных систем. Компьютерные модели проще и удобнее исследовать в силу их возможности проводить вычислительные эксперименты, в тех случаях, когда реальные эксперименты затруднены из-за финансовых или физических препятствий или могут дать непредсказуемый результат. В экспериментальной физике графическое моделирование процессов используется для различных целей, главной из которых является возможность наглядно проследить вид функциональной зависимости рассматриваемых величин и их закономерное изменение. Известно, что человеку нелегко дается восприятие огромных космических расстояний, отделяющих Землю от других небесных тел или одни космические тела от других. Это и понятно. В силу своего земного положения человек воспитывается на ограниченных пространственно-временных понятиях и все выходящее за привычные земные масштабы он воспринимает с таким трудом. Поэтому нами была поставлена цель: создать интерактивную трехмерную модель солнечной системы в среде программирования Delphi, используя возможности графической библиотеки OpenGL. Для достижения цели были поставлены следующие задачи: 1. Изучить возможности открытой графической библиотеки OpenGL. 2. Познакомиться с объектно-ориентированным программированием в среде программирования Delphi 7.0 3. Изучить литературу по теме «Солнечная система» для того, чтобы модель отражала реальные свойства оригинала. 4. Дополнить модель справочными материалами по каждой планете, входящей в Солнечную систему. 4 1. Моделирование и его виды Моделирование является одним из способов познания мира. Понятие моделирования достаточно сложное, оно включает в себя огромное разнообразие способов моделирования: от создания натуральных моделей (уменьшенных и или увеличенных копий реальных объектов) до вывода математических формул. Для различных явлений и процессов бывают уместными разные способы моделирования с целью исследования и познания. Объект, который получается в результате моделирования, называется моделью. Причем это совсем не обязательно реальный объект. Это может быть математическая формула, графическое представление и т.п. Однако он вполне может заменить оригинал при его изучении и описании поведения. Хотя модель и может быть точной копией оригинала, но чаще всего в моделях воссоздаются какие-нибудь важные для данного исследования элементы, а остальными пренебрегают. Это упрощает модель. Но с другой стороны, создать модель – точную копию оригинала – бывает абсолютно нереальной задачей. Например, если моделируется поведение объекта в условиях космоса. Можно сказать, что модель – это определенный способ описания реального мира. Моделирование проходит три этапа: 1. Создание модели. 2. Изучение модели. 3. Применение результатов исследования на практике и/или формулирование теоретических выводов. В силу многозначности понятия «модель» в науке и технике не существует единой классификации видов моделирования: классификацию можно проводить по характеру моделей, по характеру моделируемых объектов, по сферам приложения моделирования (в технике, физических науках, кибернетике и т. д.). Например, можно выделить следующие виды моделирования: Информационное моделирование Компьютерное моделирование Математическое моделирование Математико-картографическое моделирование Молекулярное моделирование Цифровое моделирование Логическое моделирование Педагогическое моделирование 5 Психологическое моделирование Статистическое моделирование Структурное моделирование Физическое моделирование Экономико-математическое моделирование Имитационное моделирование Эволюционное моделирование Графическое и геометрическое моделирование Над созданием модели могут работать специалисты из разных областей, т.к. в моделировании достаточно велика роль межпредметных связей. 1.1. Особенности компьютерного моделирования Совершенствование вычислительной техники и широкое распространение персональных компьютеров открыло перед моделированием огромные перспективы для исследования процессов и явлений окружающего мира, включая сюда и человеческое общество. Компьютерное моделирование – это в определенной степени, то же самое, описанное выше моделирование, но реализуемое с помощью компьютерной техники. Для компьютерного моделирования важно наличие определенного программного обеспечения. При этом программное обеспечение, средствами которого может осуществляться компьютерное моделирование, может быть как достаточно универсальным (например, обычные текстовые и графические процессоры), так и весьма специализированными, предназначенными лишь для определенного вида моделирования. Очень часто компьютеры используются для математического моделирования. Здесь их роль неоценима в выполнении численных операций, в то время как анализ задачи обычно ложится на плечи человека. Обычно в компьютерном моделировании различные виды моделирования дополняют друг друга. Так, если математическая формула очень сложна, что не дает явного представления об описываемых ею процессах, то на помощь приходят графические и имитационные модели. Компьютерная визуализация может быть намного дешевле реального создания натуральных моделей. С появлением мощных компьютеров распространилось графическое моделирование на основе инженерных систем для создания чертежей, схем, графиков. 6 Если система сложна, а требуется проследить за каждым ее элементом, то на помощь могут придти компьютерные имитационные модели. На компьютере можно воспроизвести последовательность временных событий, а потом обработать большой объем информации. Однако важно не путать компьютерную модель (моделирующую программу) с самим явлением. Модель полезна, когда она хорошо согласуется с реальностью. Но модели могут предсказывать и те вещи, которые не произойдут, а некоторые свойства действительности модель может и не прогнозировать. Тем не менее, полезность модели очевидна, в частности, она помогает понять, почему происходят те или иные явления. 1.1.2. 3D графика и моделирование Плоды технической фантазии всегда стремились вылиться на бумагу, а затем и воплотиться в жизнь. Если раньше, представить то, как будет выглядеть дом или интерьер комнаты мы могли лишь по чертежу или рисунку, то с появлением компьютерного трехмерного моделирования стало возможным создать объемное изображение спроектированного сооружения. Оно отличается фотографической точностью и позволяет лучше представить себе, как будет выглядеть проект, воплощенный в жизни, внести определенные коррективы. 3D модель обычно производит гораздо большее впечатление, чем все остальные способы презентации будущего проекта. Передовые технологии позволяют добиваться потрясающих результатов. 3D графика – это создание объемной модели при помощи специальных компьютерных программ. На основе чертежей, рисунков, подробных описаний или любой другой графический или текстовой информации, 3D дизайнер создает объемное изображение Конечно, в основном трехмерные модели используются в демонстрационных целях. Они незаменимы для презентаций, выставок, а также используются в работе с клиентами, когда необходимо наглядно показать, каким будет итоговый результат. Кроме того, методы трехмерного моделирования нужны там, где нужно показать в объеме уже готовые объекты или те объекты, которые существовали когда-то давно. Трехмерное моделирование это не только будущее, но и прошлое и настоящее. Преимущества трехмерного моделирования Преимуществ у трехмерного моделирования перед другими способами визуализации довольно много. Трехмерное моделирование дает очень точную модель, максимально приближенную к реальности. Современные программы помогают достичь высокой детализации. При этом значительно увеличивается наглядность проекта. 7 Выразить трехмерный объект в двухмерной плоскости не просто, тогда как 3D визуализации дает возможность тщательно проработать и что самое главное, просмотреть все детали. Это более естественный способ визуализации. 1.2. Понятие о физическом моделировании При физическом модели, элементы моделировании используют которых подобны физические натуральным объектам исследования, но имеют чаще всего иной масштаб (например, макет самолета, макет отдельного района города, макет плотины электростанции). Физические модели могут иметь вид полномасштабных макетов (например, авиационные тренажеры), выполняться в уменьшенном масштабе (например, глобус, модель солнечной системы) или в увеличенном масштабе (например, модель атома). Физические модели конкретны, очень наглядны, часто их можно даже потрогать руками. Хрестоматийный пример физической модели – макет самолета, летные свойства которого исследовались в аэродинамической трубе. Физическое моделирование применяется для моделирования сложных объектов исследования, не имеющих точного математического описания. Метод состоит в создании лабораторной физической модели явления в уменьшенных масштабах, и проведении экспериментов на этой модели. Выводы и данные, полученные в этих экспериментах, распространяются затем на явление в реальных масштабах. Метод может дать надёжные результаты, лишь в случае соблюдения физического подобия реального явления и модели. Подобие достигается за счёт равенства для модели и реального явления значений критериев подобия — безразмерных чисел, зависящих от физических (в том числе геометрических) параметров, характеризующих явление. Экспериментальные данные, полученные методом физического моделирования распространяются на реальное явление также с учётом критериев подобия. В широком смысле, любой лабораторный физический эксперимент является моделированием, поскольку в эксперименте наблюдается конкретный случай явления в частных условиях, а требуется получить общие закономерности для всего класса подобных явлений в широком диапазоне условий. Искусство экспериментатора заключается в достижении физического подобия между явлением, наблюдаемым в лабораторных условиях и всем классом изучаемых явлений. 8 2. Моделирование солнечной системы Человеку всегда было сложно понять структуру солнечной системы в связи с огромными космическими расстояниями, отделяющих Землю от других небесных тел или одни космические тела от других. В силу своего земного положения человек воспитывается на ограниченных пространственно-временных понятиях и все выходящее за привычные земные масштабы он воспринимает с таким трудом. Более того, не находя для таких расстояний привычной меры, он часто и не может их себе реально представить. Учитывая эту трудность при рассмотрении астрономических масштабов, люди стали обращается к моделям космических систем, которые очень хорошо помогают представить всю грандиозность космических просторов. 2.1. Описание и возможности программы «Интерактивная трехмерная модель солнечной системы» Созданная нами модель позволят изучить космическое пространство без специальных приборов, которые используются для астрономических наблюдений. Основу программы составляет интерактивная трехмерная модель солнечной системы, дополненная справочными сведениями о входящих в нее планетах и малых телах. Трехмерная динамическая модель показывает вращение планет Солнечной системы. В центре модели изображено Солнце, вокруг него – большие планеты Солнечной системы. Во время движения с помощью курсора можно менять значение угла зрения. При этом Солнечная система будет поворачиваться по отношению к наблюдателю вокруг горизонтальной оси. С помощью мыши можно приближаться или удаляться от объектов. В модели выдержаны реальные отношения орбит планет и их эксцентриситеты. Солнце находится в фокусе орбиты каждой планеты. Солнце изображено схематично, т.к. его размер очень большой в сравнении с размерами планет. Периоды обращения планет вокруг Солнца пропорциональны реальным. В таблице приводится расчет, выполненной в двух масштабах: расстояния в масштабе 1: 2000.000.000.000, диаметры планет - 1: 5000.000.000. Планеты Среднее расстояние от Солнца в действите льности в млн. км на модели в см Диаметры планет 1 в действитель ности в км на модели в см 9 1. Меркурий 58 3,5 4840 0,1 2. Венера 108 5,1 12400 0,6 3. Земля 150 9,4 12756 0,7 4. Марс 228 12,1 6800 0,2 5. Юпитер 778 14,5 142800 2 6. Сатурн 1426 18,5 120800 1,9 7. Уран 2869 22,6 47600 0,8 8. Нептун 4496 26,5 44600 0,9 Программа создана в среде программирования Delphi 7.0, имеет удобное меню с возможностью: 1. выбора таймера, который позволяет установить соответствие между реальным временем и временем солнечной системы (например, 1сек = 1 мин, 1 сек = 1 неделя, 1сек = 1 год и т.д.) 2. выбора вида просмотра (обычный или трехсторонний) 3. осуществить поворот модели по часовой или против часовой стрелки на выбранное пользователем число градусов 4. вызова справочной информации по каждой планете 5. выбора меню «О программе» с кратким описанием возможностей программы. Для разработки графического интерфейса модели мы использовали возможности библиотеки OpenGL, которая является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики. Трехмерные модели планет созданы с помощью библиотеки утилит для приложений под OpenGL DGLUT. Пользуясь возможностями библиотеки OpenGL был созданы текстуры для этих моделей. С помощью использования модуля MMSystem и команд OpenGL Rotatef и Translatef , мы перемещаем планеты по их орбитам. Вращение сцены вокруг горизонтальной оси, а также возможность приблизится и удалится от любого объекта с помощью мыши реализовано с помощью команд OpenGL Rotatef и Translatef .При наведении мыши на любую из планет, она подсвечивается. Такого эффекта мы достигли, пользуясь возможностями команд glTexEnvf и glReadPixels. Планеты выглядят достаточно реалистично, что стало 10 возможным благодаря наложению текстур и использованию источника света(исходный код представлен в приложении 1). 2.2. Значение интерактивной трехмерной модели солнечной системы С помощью данной интерактивной трехмерной модели солнечной системы можно изучить такие природные явления, как солнечные и лунные затмения, приливы и отливы, движения небесных тел. Трехмерная динамическая модель солнечной системы позволяет понять, почему солнце заходит и всходит, почему луна не всегда бывает круглой, как происходит смена дня и ночи, времени года и многое другое. Модель также содержит справочную информацию о каждой планете. Особенно она может быть полезна на уроках астрономии, географии и физики. При изучении солнечной системы созданная нами модель значительно облегчает им восприятие истинной картины окружающего нас мира, помогает представить в дальнейшем галактические и внегалактические расстояния. Выполненная нами модель солнечной системы позволяет показать не только сравнительные расстояния и размеры, но и взаимное расположение планет в различные моменты, которое устанавливается по их гелиоцентрическим долготам, взятым из Астрономического календаря. Возможность показать на модели взаимное расположение планет и Солнца позволяет учащимся более глубоко понять причины меняющихся условий видимости планет, изменения их расстояний от Земли, а, следовательно, и изменения их видимых угловых размеров. 11 ЗАКЛЮЧЕНИЕ Разработанная нами интерактивная трехмерная модель солнечной системы даст возможность пользователям достичь качественного понимания закономерностей движения планет солнечной системы на примере движения Земли вокруг Солнца. Работа носит ярко выраженный прикладной характер, модель будет полезна как на уроках старшей школы (астрономия, физика, география), так и для младших школьников на уроках окружающий мир. В данной исследовательской работе были освоены навыки работы с графической библиотекой OpenGL, навыки работы в среде программирования Delphi, закреплены навыки в разработке алгоритмов. Достоинством данной программы является ее простота и применимость в наиболее распространенной, на сегодняшний день, операционной системе Windows. Интерактивная трехмерная модель солнечной системы имеет большой потенциал для дальнейшего развития. Мы продолжим работу над усовершенствованием модели. 12 БИБЛИОГРАФИЧЕКИЙ СПИСОК 1. Краснов М. OpenGL. Графика в проектах DELPHI. - BHV, 2004 2. Левитан Е.П. Астрономия 11 кл. – М: Просвещение, 1994 3. Советов Б.Я., Яковлев С.А. С56 Моделирование систем: Учеб. Для вузов – 3-е изд., перераб. И доп. – М.: Высш. Шк., 2001. – 343 с. Хеннер Е.К., Шестаков А.П. Математическое моделирование (пособие для учителя). Пермь: Изд-во ПГПУ, 1995. — 259 с. 4. Уроки Delphi начинающим с нуля. URL: http://www.delphi-manual.ru/(дата обращения: 15.12.2010). 13 Приложение 1. Скриншоты программы 14 Приложение 2. Исходный код (представлен не полностью) Uses MMSystem, OpenGL..; … Sec:=false; … procedure TfrmGL.N13Click(Sender: TObject); begin sec:=true; week:=false; min:=false; hour:=false; month:=false; year:=false; end; … procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD) stdcall; var merct, merctt…: glfloat; sec: Boolean; begin With frmGL do begin if (sec=true) then begin //around sun merct := merct+0.0006; … //itself merctt := merctt+0.000071; If merctt>360 then merctt:=0.0; … end; … procedure TfrmGL.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Var Pixel : Array [0..2] of GLByte; begin glReadPixels(X, ClientHeight - Y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, @Pixel); If (Pixel [0] =1) then begin bwearth:=true; resize; end else begin bwearth:=false; resize; end; … … … if (bwearth=true) then begin glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_decal);