Это задание выходит за рамки временного интервала урока, поэтому его лучше провести отдельно.
Нам потребуется более детальный чертеж для построения (вы, наверное, уже строили такой на уроках черчения) - чертеж объекта с трех сторон.
Как видим, стул состоит из параллелепипедов. Для того, чтобы построить параллелепипед, нужно масштабировать куб по осям с разными коэффициентами. Для правильного построения нужно определить размеры параллелепипеда и координаты его центра. Цвет каждого параллелепипеда зададим, как темно-коричневый (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
p = CREATECUBE()
SCALEENTITY p, 1, 6, 1
POSITIONENTITY p, 5, -8, 5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 1, 6, 1
POSITIONENTITY p, -5, -8, 5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 1, 6, 1
POSITIONENTITY p, 5, -8, -5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 1, 6, 1
POSITIONENTITY p, -5, -8, -5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 6, 1, 6
POSITIONENTITY p, 0, -1, 0
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 2, 7, 1
POSITIONENTITY p, 0, 7, 5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 1, 7, 1
POSITIONENTITY p, -5, 7, 5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 1, 7, 1
POSITIONENTITY p, 5, 7, 5
ENTITYCOLOR p, 160, 100, 40
p = CREATECUBE()
SCALEENTITY p, 6, 1, 1
POSITIONENTITY p, 0, 15, 5
ENTITYCOLOR p, 160, 100, 40
RENDERWORLD
FLIP
WAITKEY