2. Добавьте элемент FOGTHICKNESS всюду в списке перечислений TokenType. О Изменения в SDL-файле с расширением .срр.

1. В функции whichtokenO добавьте следующую строку: if (temp - "fogginess") return (FOGTHICKNESS):

2. В функции getObjectO добавьте следующую строку:

case FOGTHICKNESS: fogThickness - getFloatO: break:

Вопрос о том, как использовать это новое поле, разумеется, остается за программистом. Так, при разработке трассировщика лучей программист может добавить к методу Scene: :shade() некоторый код, например:

if (fogThickness > 0) do something..;

Пример Д3.2. Определение нового типа объекта Допустим, что вы хотите добавить pie slice (ломтик пирога) к набору возможных объектов, появляющихся в сценах. Это будет часть тонкого кругового диска, лежащего в плоскости ху. Ломтик начинается с угла 0 (вдоль оси х) и продолжается против часовой стрелки (если смотреть из точки (0,0,1) в сторону начала координат) до угла sweep (развертка), измеряемого в градусах. Таким образом, если sweep равен 180, то круговой сектор равен половине круга в положительном полупространстве у, а если sweep

ДЗ. Расширение SDL

1045

равен 360, то круговой сектор составит полный круг. Расширим язык SDL так, чтобы распознавалось ключевое слово pieSlice с последующим параметром для угла sweep, например, так:

pieSlice 90

О Изменения в SDL-файле с расширением .h.

1. Определите класс PieSlice вместе с полем для хранения угла sweep с помощью следующего кода:

class PieSlice : public Shape { public:

float sweep: // и т. д. }:

2. Напишите код для соответствующих методов данного класса, таких как drawOpenGLO. О Изменения в SDL-файле с расширением .срр.

1. Добавьте следующую строку к функции whichtokenO: if (temp == "pieSlice") return (PIESLICE):

2. В функции getObjectO добавьте следующие строки:

case PIESLICE:
newShape = new PieSlice:
((PieSlice*)newShape) ->angle = getFloatO: break:

Литература На некоторые журналы и тексты так много ссылок, что в данной библиографии они приводятся в сокращенной форме.


⇐ Предыдущая| |Следующая ⇒