Blitz 3D - полезная дипломная работа (часть 1)
[ Поделиться ]
[ Спасибо! ]
|
Введение 5
Программное обеспечение 6
Урок 1 – Введение в трехмерную графику и основы работы в Blitz3D 7
Понятие трехмерной графики и сфера ее применения 7
Знакомство с интерфейсом Blitz3D 8
Переменные 10
Урок 2 – трехмерная сцена и объекты 11
Структура трехмерной сцены и проекция ее на экран 11
Экран 11
Адресация объектов 12
Простейшие объекты 12
Камера 13
Двойная буферизация и визуализация 13
Позиционирование объектов 14
Угол поворота объектов 14
Освещение 15
Масштабирование 15
Цвет объекта 16
Прозрачность объекта 16
Задание: создать трехмерный объект - елку 16
Задание: создать трехмерный объект - стул 18
Урок 3 – работа с переменными, циклы 21
Команда PRINT 22
Команда INPUT 22
Действия над переменными 22
Программа, переводящая значение угла градусов в радианы 23
Задание: сделать программу, переводящую значение температуры из градусов Цельсия в Кельвины 23
Цикл FOR-NEXT 23
Программа изображения бильярдных шаров с помощью циклов: 25
Урок 4 – Условия, бесконечные циклы, опрос клавиатуры 26
Условие IF-THEN-ELSE-END IF 26
Программа, проверяющая пароль 27
Программа, проверяющая, больше ли пятидесяти введенное число 28
Бесконечные циклы 28
Остановка программы 28
Команда EXIT 28
Управление камерой с клавиатуры 29
Урок 5 – Функции и группирование объектов 30
Функции 30
Игра "Угадай число" 31
Задание: изменить программу так, чтобы у играющего было только 8 попыток, количество попыток выводилось на экран и при их исчерпании выводилось сообщение о проигрыше. 32
Группирование объектов 33
Программа, выводящая на экран лес из уже созданных елок 33
Урок 6 – текстуры, плоскости, модели 36
Плоскости и текстуры 36
Программа "Лес на траве" 37
Зеркала 37
Программа "Зеркальная земля" 38
Задание: оттекстурировать ели текстурами moss.jpg и wood.jpg 38
Трехмерные модели 39
Наведение камеры на объект 39
Управление объектом с клавиатуры 40
Анимация 41
Добавление анимации в программу 42
Физическая модель прыжка 43
Урок 7 – спрайты, поверхности 45
"Проволочный каркас" 45
Спрайты 46
Программа "Звездное небо" 46
Трехмерная поверхность 47
Программа, выводящая на экран поверхность воды с рябью 48
Создание холмистой поверхности 49
Урок 8 – Чтение данных, построение моделей 51
Операторы READ и DATA 51
Программа, выводящая фигуру из сфер, считывая их координаты 52
Построение трехмерных фигур по треугольникам 53
Создание модели меча 54
Урок 9 – массивы, взаимодействие объектов 59
Массивы 59
Программа, заполняющая массив – таблицу умножения 59
Задание: вывести элементы массива, соответствующие умножению 60
Обработка массива объектов 60
Взаимодействие объектов 62
Программа, создающая нагромождение шаров 63
Заключение 65
Памятка 67
Литература 70
Введение
Ни для кого не секрет сколь важны компьютеры в современном мире. На заре компьютерной эры компьютеры занимали целые комнаты и возможности их были очень ограничены. Такие вычислительные центры были доступны лишь крупным фирмам. Но производительность компьютеров, благодаря новым технологиям, стремительно возрастала, а стоимость снижалась и теперь компьютер стал вполне доступен даже для людей с средним достатком. Мало того, сфера его применения значительно расширилась, от сырых математических вычислений до управления космическими аппаратами. Вообще, применение компьютеров - обработка информации, но так как человек по сути тоже существо, накапливающее и перерабатывающее информацию, то компьютер способен заменить человека там, где требуется большая точность и быстрота реакции, компьютер не устает и работает круглые сутки. Но творческие задачи, все-таки остаются за человеком, компьютер здесь выступает в роли помощника, инструмента. Для эффективного творческого процесса человеку необходимо проделать массу рутинной однообразной работы. Это с успехом и быстро может сделать компьютер. Мало того, компьютер по первому запросу выдает человеку нужную информацию в нужном виде. Один из самых наглядных методов - моделирование событий реального мира. Но тут мы сталкиваемся с задачей: как представить трехмерную реальность на двумерном экране компьютера? Изображение трехмерных объектов на экране называется трехмерной графикой. Цель данной дипломной работы - разработка курса обучения школьников и студентов базовым знаниям о системе, выдающей трехмерную графику на экран и основам программирования приложений, использующих трехмерную графику на языке Blitz3D.
Курс рассчитан на школьников старших классов и студентов. Желательно наличие опыта в работе с компьютером, навыков печатания, а также базовых знаний о программировании. Каждый урок рассчитан на 2 академических часа.
Уроки проводятся следующим образом: учитель делает доклады, объясняет новые понятия, учащиеся в это время слушают и запоминают. В практической части спецкурса учитель пишет на доске программу, учащиеся в это время набирают ее на компьютере. Часто требуется только изменить некоторую часть программы. После этого, если результат по каким-то причинам не достигнут (выдается сообщение об ошибке или программа работает неверно), учитель подходит к учащемуся и помогает исправить ошибку. Примеры, помеченные звездочкой (*) можно просто продемонстрировать на доске, как иллюстрацию к сказанному, остальные программы и примеры рекомендуется дать учащимся для набора. Синтаксис команд можно записать на доске, а можно указать в памятке.
Текст пояснений и методических рекомендаций выделен курсивом, обычным текстом напечатаны объяснения учителя и задания, которые он дает ученикам. Крупными буквами приведен текст программ.
Программное обеспечение
Для проведения спецкурса необходимо установить на каждый компьютер, за которым будут сидеть ученики, язык программирования Blitz3D. Для этого, запустите установочный файл (выберите директорию по умолчанию - C:\Program Files\Blitz3D). Для удобства, можно сделать ярлык к запускаемому файлу C:\Program Files\Blitz3D\Blitz3D.exe на рабочем столе.
Для работы с трехмерными режимами необходимо установить DirectX 7. Установочный файл находится на диске в директории DirectX - запустите его и следуйте инструкциям.
Скопируйте директорию MEDIA в корневую директорию диска C:. Чтобы вводить русские буквы в редакторе, замените файл C:\Program Files\Blitz3D\cfg\blitzide.prefs на одноименный с диска.
Рекомендуется отпечатать и раздать каждому ученику памятки (приведена в конце дипломной работы)
Урок 1 – Введение в трехмерную графику и основы работы в Blitz3D
Понятие трехмерной графики и сфера ее применения (15 мин)
Урок начинается с доклада учителя, в котором дается понятие трехмерной графики и приводятся примеры ее использования. Цель доклада – ознакомить учащихся с предметом спецкурса, заинтересовать их.
Трехмерной графикой называется изображение трехмерных объектов на двумерном экране компьютера. Трехмерная графика применяется, для моделирования процессов реального (и не только) мира. Прежде всего, это научные эксперименты. Вот, например, в физике: очень важно представить, как двигаются объекты (физические тела, атомы, молекулы), как они взаимодействуют межу собой, чтобы вникнуть в суть процесса. Можно попробовать собственноручно создать и расставить объекты, задать их скорость и др. параметры и посмотреть, что получится без покупки дорогостоящего оборудования. Химия: моделирование реакций при смешивании и изменении состояния реактивов. Биология: деление клеток, работа органов, организмов, действие препаратов, размножение существ, их взаимодействие и др. Геология: показ трехмерных ландшафтов, моделирование тектонических и др. геологических процессов. Трехмерное моделирование применяется в подавляющем большинстве научных дисциплин.
Широко применяется трехмерная графика и в искусстве. Возьмем кино: наверняка вы смотрели знаменитый фильм "Парк юрского периода". Это был первый проект, где упор делался именно на компьютерную трехмерную графику. Одними из самых значительных в этом отношении фильмов являются "Терминатор 2", "Матрица". В кино использовать трехмерную графику (которая достигла такого реализма, что только эксперт может отличить ее от реальности) очень выгодно (легче нанять компьютерный зал специалистов, чем делать декорации и нанимать массовку) и удобно, а иногда и необходимо для создания эффектов, невозможных в реальном мире. Уже появился фильм, полностью сделанный с помощью трехмерной графики - "Последняя Фантазия", сериал «Прогулки с динозаврами», мультфильмы "Шрэк", "Ледниковый период", "Корпорация монстров", есть виртуальные телеведущие, виртуальная певица "Глюкоза". Целое направление в художественном искусстве - построение трехмерных виртуальных скульптур, рисунков с применением компьютерной графики... Нельзя не упомянуть компьютерные игры - эта отрасль как ничто другое стимулирует развитие данного направления и компьютеров, а трехмерные миры становятся все реалистичней и реалистичней..
Знакомство с интерфейсом Blitz3D (20 мин)
На этом этапе идет ознакомление с интерфейсом языка и основными операциями, такими, как запуск программы, запись, загрузка. Также отрабатываются навыки набора текста и использования текстового буфера для ускорения набора программ.
В ходе работы будут составляться программы на языке, который называется Blitz3D. Чтобы запустить интерпретатор Blitz3D, нужно нажать на кнопку затем выбрать "Программы", "Blitz3D", "Blitz3D". Перед вами появится окно, в котором в данный момент отображается помощь (Help) на английском языке. Нажмите на первую кнопку сразу над этим окном либо выберите пункт меню File->New, чтобы создать новую программу.
Учащимся раздаются памятки, содержащие в сжатом виде информацию о ключевых словах, которые будут использоваться в программах в течение всего спецкурса. По этим памяткам можно будет сверять правильность написания операторов и синтаксис
Теперь напишем первую программу на Blitz3D:
PRINT "Hello!”
WAITKEY
Обратите внимание на то, что как только было напечатано ключевое слово "PRINT", оно сразу же поменяло цвет на голубой. Это значит, что компьютер распознал это слово. Если в будущем при наборе команд, они не будут изменят цвет, то это значит, что вы неправильно набрали эту команду и нужно свериться с памяткой.
Можно писать программу построчно, а можно в одной строке, разделяя операторы двоеточиями, вот так:
PRINT "Hello!”: WAITKEY (*)
Запустим программу, нажав на кнопку с изображением ракеты. Появилось черное окно, это значит, интерпретатор начал исполнять программу построчно - сначала вывел строку "Hello!" (PRINT "Hello!”), затем стал ждать нажатия клавиши (Waitkey). Нажмите любую клавишу, чтобы вернуться в редактор.
При нажатии на клавишу F1, когда курсор стоит на какой-либо команде, в нижней строчке появляется краткое описание команды со всеми параметрами. Если же нажать F1 еще раз, появится детальное описание команды и пример. Нажатием на ссылку "Example”, вы сможете отредактировать и запустить пример.
Теперь запишем эту программу на диск: нажмите кнопку с изображением дискеты. Компьютер попросит ввести имя файла, наберите "first" и нажмите "Сохранить". Заметьте, что название программы появилось на активной закладке сверху от окна. Здесь будут появляться новые закладки, по мере того, как вы будете открывать или создавать новые программы.
Закроем теперь программу, нажав на кнопку с изображением лампочки. Загрузить программу теперь можно, нажав на кнопку с рисунком открытой папки, затем выбрав программу (first) и нажав "Открыть". Пропавшая вкладка снова появится. Пробуйте открывать и запускать программы из разных папок. Чтобы запустить программу, нажмите Enter, чтобы выйти из нее - Esc.
В программе можно вводить комментарии на русском языке. Для этого нужно ввести символ ";" и после этого переключить клавиатуру на русский шрифт (Shift + Ctrl). После ввода комментария не забудьте переключить шрифт обратно (тоже Shift + Ctrl). По-русски также можно вводить строки в кавычках.
Можно выделять фрагменты текста, зажав клавишу Shift и перемещая курсор клавишами - стрелками. Выделенный фрагмент можно удалять (Del) копировать в буфер (Ctrl-Ins) и вставлять из буфера (Shift-Ins). Потренируйтесь: скопируйте и вставьте следующую строчку 5 раз:
PRINT "Абракадабра”
Переменные (10 мин)
Здесь вводится понятие переменной для следующих уроков.
Переменная - это величина, которая может меняться при выполнении программы. Чтобы различать переменные, у каждой из них есть имя - слово из латинских букв и цифр.
Переменные бывают трех типов:
Целые - переменные, которым можно присвоить целое число
Примеры:
A = 10, B = 5, STEPS = 30 (*)
Дробные - переменные, которым можно присвоить десятичную дробь. В конце имени переменной ставится символ # (решетка)
Примеры:
С# = 5.5, D# = 20.133, ANGLE# = 30.25 (*)
Строковые - переменные, которым можно присвоить строку. В конце имени переменной ставится символ $ (знак доллара)
Примеры:
E$ = F$ = ”Привет!”, Writer$ = М. Достоевский” (*)
Можно присваивать строковым переменным числа и числовым - строки:
Примеры:
A$ = 100, B = (*)
Pi - значение числа Pi
В заключительной части урока, учащимся предоставляется время для запуска примеров программ из пакета Blitz3D, в которых демонстрируются возможности этого языка. В ходе спецкурса будут разъяснены некоторые принципы работы этих программ.
Для просмотра примеров, нужно перейти в раздел (Help->Samples), переместиться в одну из директорий и загрузить программу. Обычно, используются клавиши "Enter" (запуск), стрелки, пробел, "A", "Z".
Урок 2 – трехмерная сцена и объекты
Структура трехмерной сцены и проекция ее на экран (5 мин)
В этой части урока учитель объясняет базовые понятия трехмерной системы координат и проецирования трехмерного мира на экран. Без ознакомления с этими ключевыми понятиями дальнейшая работа будет крайне затруднительна, если не невозможна.
Трехмерная система координат - это двумерная система с дополнительной осью z. Каждая точка в трехмерной системе координат имеет не две, а три координаты.
Начало координат - точка О(0, 0, 0) в ней пересекаются все координатные оси. Точка О разбивает все оси на 2 луча. Луч, по направлению совпадающий с направлением оси называется положительной полуосью, другой - отрицательной. Трехмерной сценой называется совокупность трехмерных объектов, заданных в трехмерной системе координат. Представьте себе съемки фильма: расставляются декорации, выходят актеры (все это по сути является трехмерными объектами) и затем сцена снимается на видеопленку с помощью камеры. Позже, мы можем посмотреть фильм на двумерном экране телевизора. То есть, с помощью камеры трехмерный мир проецируется на двумерный экран. Точно так же и трехмерная сцена с помощью виртуального объекта – камеры проецируется на экран монитора
Экран (5 мин)
Следующий этап – учитель рассказывает о структуре экрана. Это необходимо для уяснения учениками принципа составления изображений на экране.
Экран монитора можно представить, как прямоугольный лист бумаги в клетку, где каждая клетка имеет свой цвет. Клетки экрана называются пикселями. Разрешение экрана - это количество пикселей по горизонтали и вертикали. Уже при разрешении 640х480 пиксели достаточно малы, чтобы мы могли видеть качественное изображение, к примеру, фотографии или рабочего стола.
Установка режима экрана производится с помощью следующей команды (параметр, находящийся в квадратных скобках вводить не обязательно):
GRAPHICS3D ширина, длина [,глубина_цвета] [,режим]
Возможные режимы экрана: 320х200, 640х480, 800х600, 1024х768. Глубина цвета может быть 16 или 32 бит на пиксель - картинка с большей глубиной цвета качественней картинки с меньшей. Режимы: 0 - авто, 1 - показ рабочего поля в окне, 2 - поле развернуто на весь экран.
Адресация объектов (2 мин)
Для этого ключевого этапа в предыдущем уроке было введено понятие переменной. Понятие адресации необходимо для работы с объектами.
Теперь перейдем к программированию. Каждый созданный трехмерный объект в Blitz3D имеет адрес, по которому к нему можно обращаться. Этот адрес заносится в переменную при создании объекта, например:
SphereAddr = CREATESPHERE()
Также, каждый трехмерный объект имеет координаты, размеры, углы поворота вокруг осей, цвет и другие параметры.
Простейшие объекты (5 мин)
Далее будут перечислены команды для создания простейших трехмерных объектов. Объекты первоначально располагаются в точке (0, 0, 0)
Из этих объектов в следующих уроках будут строиться трехмерные модели
Куб: a = CREATECUBE([род])
Сфера: a = CREATESPHERE([детализация] [,род])
Цилиндр: a = CREATECYLINDER([детализация] [,наличие оснований] [,род])
Конус: a = CREATECONE([детализация] [,наличие основания] [,род])
Параметр "наличие оснований” может быть равен 0 (нет оснований) и 1 (есть основания).
Все тела вращения, как и все объекты, составлены из граней. Детализация - параметр, указывающий, насколько объект будет приближен по форме к идеалу (сфера с большей детализацией будет иметь больше граней, выглядеть более округлой, зато на ее прорисовку понадобится больше времени).
О параметре будет рассказано позже.
Камера (2 мин)
Для того чтобы увидеть созданный трехмерный мир, нам необходима камера. Она создается командой:
a = CREATECAMERA([род])
Камера, как и все объекты, изначально располагается в начале координат и ориентирована в направлении оси Z.
Двойная буферизация и визуализация (5 мин)
Информация в этой части урока несет мало практической пользы, но будет полезна для разъяснения процесса вывода графики на экран.
При инициализации режима экрана, Blitz3D создает еще один скрытый экран - экранный буфер, который невидим для пользователя. Команда RENDERWORLD отображает все, что находится в поле зрения камеры на этот скрытый экран, а команда FLIP копирует содержимое экранного буфера на экран. Для чего это делается? Предположим, вы создаете трехмерный мир с массой объектов. Если визуализировать его прямо на экране, то пользователь сможет наблюдать весь процесс, то есть объекты будут появляться один за другим. Обычно, в программах требуется часто менять содержимое экрана, в зависимости от положения камеры - стирать старый образ и тут же создавать новый. Двойная буферизация позволяет избавиться от неприятного мерцания экрана при этом, так как визуализация происходит на скрытом от глаз пользователя экране.
Далее будут описаны простейшие трансформации и движения объектов, изменения их свойств, необходимые для построения моделей, а также освещение. Хотя освещение – довольно комплексный процесс, в данном спецкурсе он рассматривается без углубления в подробности, используется простейший метод.
Позиционирование объектов (7.5 мин)
Если камера будет в одной и той же точке, что и сфера, мы увидим сферу изнутри. Чтобы этого не произошло, нужно переместить ее в другую точку. Это можно сделать с помощью следующей команды:
POSITIONENTITY объект, X, Y, Z
Точно так же можно двигать и другие объекты. Итак, теперь мы можем вывести на экран сферу:
GRAPHICS3D 640, 480, 32
Camera = CREATECAMERA()
Sphere = CREATESPHERE(20)
POSITIONENTITY Sphere, 0, 0, 5
RENDERWORLD
FLIP
WAITKEY
Пока мы видим только смутные очертания объекта. Поменяйте сферу на конус или цилиндр.
Угол поворота объектов(7.5 мин)
Для каждого объекта можно задать угол поворота командой:
ROTATEENTITY объект, RX, RY, RZ
RX, RY, RZ - угол поворота в градусах относительно осей X, Y и Z соответственно.
Пример (изменим несколько строк в предыдущей программе):
GRAPHICS3D 640, 480, 32
cam = CREATECAMERA()
cone = CREATECONE(20)
POSITIONENTITY cone, 0, 0, 5
ROTATEENTITY cone, 0, 0, 90
RENDERWORLD
FLIP
WAITKEY
Поменяйте углы в команде ROTATEENTITY.
Освещение (7.5 мин)
Ранее на экране отображались только серые многоугольники. Пришло время добавить немного реализма в трехмерную сцену: создать источник освещения. Это можно сделать с помощью команды:
a = CREATELIGHT([тип][,род])
Пока мы будем использовать тип 1, который задается по умолчанию - направленный свет. Добавим строки для создания и поворота светового источника в программу:
GRAPHICS3D 640, 480, 32
cam = CREATECAMERA()
l = CREATELIGHT()
ROTATEENTITY l, 90, 0, 0
cone = CREATECONE(20)
POSITIONENTITY cone, 0, 0, 5
ROTATEENTITY cone, 0, 0, 90
RENDERWORLD
FLIP
WAITKEY
Масштабирование (2 мин)
Менять размеры объектов можно с помощью следующей команды:
SCALEENTITY объект, SX, SY, SZ
SX, SY, SZ - новый размер объекта вдоль осей X, Y и Z. Размер 1, 1, 1 устанавливается по умолчанию. Чтобы уменьшить объект, нужно ввести значения меньше 1, но больше 0. Чтобы увеличить объект, нужно ввести значения больше 1.
Цвет объекта (5 мин)
Цвет задается командой:
ENTITYCOLOR объект, красный, зеленый, синий
Красный, зеленый и синий - это градации соответствующего компонента в цвете объекта, лежащие в диапазоне 0 - 255. К примеру, (255, 255, 255) - белый цвет, (255, 255, 0) - желтый (смесь красного и зеленого), (0, 0, 0) - черный.
Для более наглядной демонстрации получения цвета путем смешения красного, зеленого и синего, можно получить, предложив учащимя поэкспериментировать с диалогом выбора цвета в редакторе Paint.
Прозрачность объекта (2 мин)
Команда ENTITYALPHA изменяет прозрачность объекта:
ENTITYALPHA объект, коэффициент прозрачности
Коэффициент прозрачности лежит в диапазоне от 0 (объект невидим) до 1 (объект непрозрачен). Например, объект с коэффициентом прозрачности 0.5 будет полупрозрачным.
Задание: создать трехмерный объект – елку (25 мин)
Это задание, как и следующее, включает в себя определение свойств объекта, построение чертежа, работу с ним, разбивку объекта на примитивы, определение их параметров, а также построение шаблона. Так как сама по себе система составления объекта поначалу покажется учащимся сложной, рекомендуется в первом задании использовать наводящие вопросы, построить с помощью учащихся чертеж и помочь в написании программы. Второе задание во многом схоже с первым, поэтому можно ограничиться построением чертежа.
Построим чертеж: видно, что части елки (трехмерные примитивы) лежат на оси OY, так что они будут иметь координаты 0, y, 0:
Далее - копируем все строки предыдущей программы, которые задают экранное разрешение, создают камеру, свет и выводят трехмерный объект на экран (зададим новую позицию камеры). Теперь сделаем нижний конус (c1): его размеры - 10 х 10 х 10 (т. к. созданный конус первоначально имеет размеры 2 х 2 х 2, то необходимо увеличить его в 5 раз с помощью команды SCALEENTITY). Он изначально находится в точке 0, 0, 0, поэтому перемещать его не нужно. Зададим для него зеленый цвет (0, 255, 0) командой ENTITYCOLOR. Итак, нижний конус готов, добавляем остальные (копируем команды и заменяем значения). Добавим еще команду для перемещения объектов - POSITIONENTITY:
конус с2: размер - 4 х 4 х 4, положение - (0, 4, 0), цвет - зеленый (0, 255, 0)
конус с3: размер - 3х3х3, положение - (0, 7, 0), цвет - зеленый (0, 255, 0)
конус с4: размер - 2х2х2, положение - (0, 10, 0), цвет - зеленый (0, 255, 0)
Создадим ствол дерева - добавим цилиндр (cyl) с помощью команды CREATECYLINDER:
размер - 2х2х2, положение - (0, -6, 0), цвет - коричневый (170, 130, 30)
Программа:
GRAPHICS3D 640, 480
cam = CREATECAMERA()
POSITIONENTITY cam, 0, 0, -20
l l, 170, 130, 30
RENDERWORLD
FLIP
WAITKEY
Запишем созданную программу под именем "fir.bb”.
Задание: создать трехмерный объект - стул (20 мин)
Это задание выходит за рамки временного интервала урока, поэтому его лучше провести отдельно.
Нам потребуется более детальный чертеж для построения (вы, наверное, уже строили такой на уроках черчения) - чертеж объекта с трех сторон.
Как видим, стул состоит из параллелепипедов. Для того, чтобы построить параллелепипед, нужно масштабировать куб по осям с разными коэффициентами. Для правильного построения нужно определить размеры параллелепипеда и координаты его центра. Цвет каждого параллелепипеда зададим, как темно-коричневый (160,100,40). Для удобства будем использовать одну переменную (т.к. адреса параллелепипедов нам больше не понадобятся).
Скопируем основу из предыдущей программы, изменив ее для большей наглядности:
cam = CREATECAMERA()
POSITIONENTITY cam, 20, 30, -20
ROTATEENTITY cam, 45, 45, 0
l = CREATELIGHT()
ROTATEENTITY l, 45, 135, 45
Напишем шаблон для построения параллелепипеда:
p = CREATECUBE()
SCALEENTITY p, , ,
POSITIONENTITY p, , ,
ENTITYCOLOR p, 160, 100, 40
Далее, копируем этот шаблон, и заполняем его данными:
Ножки:
1: Размер: 1, 6, 1, координаты:(5, -8, 5)
2: Размер: 1, 6, 1, координаты:(-5, -8, 5)
3: Размер: 1, 6, 1, координаты:(5, -8, -5)
4: Размер: 1, 6, 1, координаты:(-5, -8, -5)
Сиденье:
Размер: 6, 1, 6, координаты:(0, -1, 0)
Доски спинки:
Широкая: Размер: 2, 7, 1, координаты:(0, 7, 5)
Левая узкая: Размер: 1, 7, 1, координаты:(-5, 7, 5)
Правая узкая: 1, 7, 1, координаты:(5, 7, 5)
Поперечная: Размер: 6, 1, 1, координаты:(0, 15, 5)
Программа:
GRAPHICS3D 640, 480, 32
cam = CREATECAMERA()
POSITIONENTITY cam,20, 30, -20
ROTATEENTITY cam, 45, 45, 0
l = CREATELIGHT()
ROTATEENTITY l, 45, 135, 45
Урок 3 – работа с переменными, циклы
Цель первой части третьего урока – ознакомить учащихся с операциями над переменными, при этом необходимо изучить операторы вывода переменных на экран и ввода их с клавиатуры.
Команда PRINT (5 мин)
Данная команда выводит значения переменных на экран. После слова PRINT указывают имя переменной.
Примеры:
A$ = ”Привет!”: PRINT A$
B=25: PRINT B
Также можно выводить просто строки и числа:
PRINT "Хорошая погода!”
PRINT 25.6
Команда INPUT (5 мин)
С помощью этой команды можно вводить значения переменных с клавиатуры. В скобках нужно указать приглашение (например, "Введите число:”).
Примеры:
Name$ = INPUT$("Введите ваше имя:”) (*)
Age = INPUT$("Сколько вам лет?”) (*)
Действия над переменными (7.5 мин)
Переменным можно присваивать значения выражений. Числовые переменные и числа можно складывать (+), вычитать (-), умножать (*), делить (/), возводить в степень (^), находить остаток от деления (MOD).
Примеры:
A = 5: B = 3: C = A + B: D = A * B: B = 2 ^ 2 (*)
F = A MOD 5 ; F равно остаток от деления A на 5 (*)
E# = 2.5 * A + F# - 3 (*)
Строки тоже можно складывать:
Imya$ = ”Сергей”: Familiya$ = ”Иванов” (*)
Man$ = Imya$ + + Familiya$ (*)
Программа, переводящая значение угла градусов в радианы (10 мин)
Данный пример хорошо демонстрирует применение математических формул в программе.
Пользователь задает значение в градусах:
AngDeg# = INPUT$("Введите значение угла в градусах:”)
Переменная AngDeg# - значение угла в градусах, AngRad# - в радианах:
AngRad# = AngDeg# / 180 * 3.14
Вывод значения переменной на экран:
PRINT "Значение в радианах - + AngRad#
Ожидание нажатия любой клавиши:
WAITKEY
Задание: сделать программу, переводящую значение температуры из градусов Цельсия в Кельвины (15 мин)
Задание идентично примеру, поэтому для учащихся не составит труда сделать его самостоятельно, модифицировав программу примера.
Celsius = INPUT$("Введите значение температуры в градусах Цельсия:”)
Kelvin = Celsius + 273
PRINT "Температура в Кельвинах:” + Kelvin
WAITKEY
Цикл FOR-NEXT (17.5 мин)
В последующих уроках циклы будут использоваться для создания множества однотипных объектов и манипуляции массивами и массивоподобными структурами.
FOR и NEXT - команды создания цикла. Синтаксис:
FOR переменная = начало TO конец STEP шаг
….
операторы
….
NEXT
Программа будет исполняться так: сначала переменной присваивается начальное значение, затем после достижения команды NEXT к значению переменной прибавляется шаг и программа возвращается на начало цикла. Это происходит до тех пор, пока значение переменной не станет больше или равно конечному значению. Шаг по умолчанию равен 1.
Эти операторы позволяют упростить создание программы, т.е. вместо
PRINT 1
PRINT 2
PRINT 3
PRINT 4
PRINT 5
WAITKEY
Мы можем написать:
FOR A = 1 TO 5
PRINT A
NEXT A
WAITKEY
Команда PRINT A будет повторена 5 раз, и переменная A будет принимать значения от 1 до 5
Чтобы вывести цифры 1, 3, 5, 7, 9, нужен цикл от 1 до 9 с шагом 2:
FOR A = 1 TO 9 STEP 2
PRINT A
NEXT A
WAITKEY
Можно вкладывать циклы друг в друга:
FOR X=1 TO 3
FOR Y=1 TO 3
PRINT X+Y
NEXT
NEXT
WAITKEY
Еще пример:
FOR Z=9 TO -9 STEP -3
PRINT PRINT "-Z=”+(-Z)
NEXT
WAITKEY
Программа изображения бильярдных шаров с помощью циклов (20 мин)
Программа совмещает использование циклов и вывод на экран трехмерного изображения, высокий уровень наглядности.
Создаем заголовок:
Graphics3D 640, 480, 32
c = CREATECAMERA()
l = CREATELIGHT()
Итак, нам нужно построить четыре ряда из шаров. Задаем цикл по y от 1 до 4:
FOR y = 1 TO 4
В первом ряду 1 шар, во втором 2, в третьем – 3, в четвертом – 4. Количество шаров в ряду равно номеру ряда, поэтому создаем цикл по x от 1 до y:
FOR x = 1 TO y
Создаем шар:
s = CREATESPHERE(20)
Теперь размещаем его в соответствующих координатах:
POSITIONENTITY s, x * 2 – y - 1, 1.7 * y - 4, 7
Закрываем циклы, визуализируем сцену:
NEXT
NEXT
RENDERWORLD
FLIP
WAITKEY
Категория: Blitz 3D |
Просмотров: 5758 |
Добавил: ДядяВолк (11.08.2010)
| Рейтинг: 0.0/0
Источник: http://quadrathell.cn.ua/ | |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 0 | |