создать трехмерный объект – елку (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 = CREATELIGHT()
ROTATEENTITY l, 0, 45, 45
c1 = CREATECONE(20, 1)
SCALEENTITY c1, 5, 5, 5
ENTITYCOLOR c1, 0, 255, 0
c2 = CREATECONE(20, 1)
SCALEENTITY c2, 4, 4, 4
POSITIONENTITY c2, 0, 4, 0
ENTITYCOLOR c2, 0, 255, 0
c3 = CREATECONE(20, 1)
SCALEENTITY c3, 3, 3, 3
POSITIONENTITY c3, 0, 7, 0
ENTITYCOLOR c3, 0, 255, 0
c4 = CREATECONE(20, 1)
SCALEENTITY c4, 2, 2, 2
POSITIONENTITY c4, 0, 10, 0
ENTITYCOLOR c4, 0, 255, 0
cyl = CREATECYLINDER(20, 1)
POSITIONENTITY cyl, 0, -6, 0
SCALEENTITY cyl, 2, 2, 2
ENTITYCOLOR cyl, 170, 130, 30
RENDERWORLD
FLIP
WAITKEY
Запишем созданную программу под именем “fir.bb”.