В большинстве классов принцип инкапсуляции принят в ослабленном виде: большинство полей данных определены как publ ic, а не private, - для краткости, а также чтобы избежать необходимости определения большого числа функций аксессоров (accessor) и мутаторов (mutator).

Еще один прекрасный источник классов и утилит можно найти в серии «Жемчужины графики» («Graphics Gems»), онлайновое представление которого расположено в Интернете по адресу http:// www.acm.org/tog/GraphicsGems/index.html.

Классы, определенные в данном приложении, собраны в заголовочных файлах (. h) и в файлах исходного кода (.срр), которые также доступны на Интернет-сайте книги (см. введение). Совокупности описанных ниже классов.

1. Классы для двумерной графики. Эти классы обеспечивают определенную поддержку рисования двумерных рисунков и включают в себя IntPoint, Point2, Polyline, IntRect, Vector2, Canvas.

2. RGBpixmap. Классы (то есть mRGB и RGBpixmap) обеспечивают поддержку создания и рисования пиксельных карт (pix map), в том числе чтение изображения, записанного в формате BMP.

3. SDL. Классы поддерживают управление и рисование трехмерных сцен, в том числе сцен, описанных на языке SDL (см. приложение Д). Сюда включены следующие классы: Point3, Vector3, Со1огЗ, Light, Affine4, AffineStack, Material, GeomObj, Boolean, UnionBool, IntersectionBool, DifferenceBool, Shape, Cube, Sphere, TaperedCylinder, Square, Plane, Face, Mesh, Torus, Teapot, Scene.

4. Шум (Noise). В эту группу классов входит класс Noi se, предназначенный для создания трехмерного шума и турбулентности для текстуры твердого тела.

5. Классы трассировки луча (ray-tracing). Включают в себя: PointCluster, Spherelnfo, Cuboid, Ray, Hitinfo, Intersection.

В1. Классы для двумерной графики В1. Классы для двумерной графики

// graphics2d.h
// A collection of classes to support 2D graphics

// Набор классов для поддержки двумерной графики

#ifndef _GRAPHICS2D
#define _GRAPHICS2D
#include <string>
#include <iostream>

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