! помещаем базовый куб в начало координат
emissive 0 10
! put a glowing ellpsoid at (2. 0. 0)
! помещаем светящийся эллипсоид в точку (2. 0. 0)
push translate 2 0 0 rotate 45 0 0 1 scale .5 .5 2 sphere pop
push translate -2 0 0 cone pop
land a cone at (-2. 0. 0)
! помещаем конус в точку (-2. 0. 0)
Логические (Булевы) объекты
SDL также поддерживает спецификацию логических объектов с помощью следующих ключевых слов:
union
! объединение intersection ! пересечение difference ! разность
Каждая из этих команд создает логический объект специального типа и помещает его в список объектов. В SDL-файле за каждым таким объектом должно следовать два объекта (каждый из которых может быть геометрическим либо логическим объектом), которые становятся левым и правым потомками созданного вначале логического объекта.
Ниже приводится SDL-код, описывающий сцену, в которой содержится два логических объекта. Первый из них является пересечением (intersection) куба с объединением (union) тетраэдра и бакибо-ла. Второй объект является разностью (difference) тетраэдра и пересечения плоскости с объединением тора и додекаэдра.
Д2. Макросы в SDL
1043
light 1 2 3 0.2 0.3 0.4
intersection
cube
! left child of intersection ! левый потомок пересечения union
! right child of intersection ! правый потомок пересечения . diffuse .2 .5 .7 tetrahedron ! left child of union ! левый потомок объединения rotate 180 3 4 5 buckyball ! right child of union ! правый потомок объединения difference ! another boolean ! другой логический объект tetrahedron intersection plane union torus dodecahedron
Команда
makePixmap <value> <fname>
определяет пиксельную карту, которая будет использоваться для нанесения текстуры. Первый ее аргумент является целым и используется для идентификации пиксельной карты; второй параметр - это имя BMP-файла, содержащего текстурное изображение. К примеру, следующий SDL-код
makePixmap 5 clouds.bmp makePixmap 2 stone.bmp texture 5
parameters 4 0 110 push scale 3 4 2 cube pop texture 2
parameters 3 .2 .8 2 sphere