Методы для классификации и отсечения относительно усеченной пирамиды являются оптимизированными версиями операций классификации и отсечения по плоскости.
Одним из способов задания текстурных координат (помимо явного задания их в каждой вершине) служит использование объекта класса Mapping. Данный объект задает закон соответствия текстурных координат точкам многоугольника. Здесь будет использоваться простейший аффинный закон.
К1
class Mapping {
private:
Vector3D uAxis; Vector3D vAxis;
Vector3D dir; // direction of projection
float uOffs; float vOffs;
float inv [2][2]; // matrix to unmap from 2D to ЗГ
Основные массы для рендерера. Работа с ресурсами
public:
Mapping ( const Vector3D& u, float uOffset,
const Vector3D& v, float vOffset );
Vector2D map ( const Vector3D& pos ) const {
return Vector2D ( uOffs + (pos & uAxis), vOffs + (pos & vAxis) );
}
Vector3D unmap ( const Vector2D& tex,
const Plane& plane ) const;
};
; Метод map служит для задания текстурных координат заданной точке пространства.
\ Метод иптар служит для определения точки на плоскости, соответствующей заданным текстурным координатам и является обращением метода
.тар. Заметим, что однозначное обращение этого преобразования невозможно, поэтому необходимо задать плоскость, на которой ищется соответствующая точка.
Введенный класс Polygon3D станет фактически одним из основных классов, на основе которых будет строится рендерер. Он инкапсулирует р себе основные операции, которые понадобятся нам в дальнейшем.
Данный класс корректно поддерживает создание и уничтожение многоугольников, их присваивание, не приводя к утечкам памяти. Класс сам управляет распределением памяти под вершины, текстурные координаты И цвета. Чтобы каждое добавление вершины не приводило к выделению И копированию памяти, память выделяется блоками по 8 элементов, и если уже отведенной памяти достаточно, то повторного выделения не происходит.
Класс Texture
^ Еще одним полезным классом, который мы будем активно использовать алее, является класс Texture, являющийся абстракцией произвольной текстуры, применяемой для наложения на грань.