Vector3D getCenter () const;
bool isTransparent () const;
float getDistEstimate ( const Vector3D& dir,
const Vector3D& from ) const.
{
int mask = computeNearPointMask ( dir ) ,-
return (boundingBox.getVertex ( mask ) & dir) -
- (from & dir);
}
float getDistEstimate ( const Vector3D& dir,
float offset, int nearPointlndex )
{
return (boundingBox.getVertex(nearPointlndex) & dir) -
- offset;
}
void projectFromPointOntoPlane ( const Vector3D& org,
const Plane& plane ) ,-
float closestPoint2Boundary ( const Vector3D& p,
Vector3D& res ) const;
void realloc ( int newMaxVertices );
void computePlane ();
void buildBoundingBox () ; void clear () ;
Vector3D mapTextureToWorld ( const Vector2D& tex )
const;
// get range of texture coordinates void getTextureExtent ( Vector2D& texMin,
Vector2D& texMax ) const;
static MetaClass classlnstance;
};

Как видно из приведенного описания, объект класса Polygon3D содержит в себе массив вершин (vertices), массив значений цвета в вершинах (colors), текстурные координаты в вершинах (uvMap). Также с каждым многоугольником связана содержащая его плоскость (plane), ограничивающий прямоугольный параллелепипед (boundingBox), служащий для ускорения различных проверок, текстура (texture) и карта освещенности (lightmap). Также можно задать глобальный цвет для всего многоугольника (color), ко-

Основные классы для рендерера. Работа с ресурсами

торый будет модулировать значения цвета в вершинах и способ вычисления текстурных координат (mapping). Для всех этих величин представлены соответствующие спсобы доступа (set- и #ег-методы).

Метод init осуществляет начальную инициализацию многоугольника, а именно вычисляет плоскость, содержащую его.

Метод isFrontFacing определяет, является ли данный многоугольник лицевым по отношению к наблюдателю, расположенному в заданной точке. Можно использовать флаг PF_TWOSIDED для отключения проверки - многоугольник, у которого установлен этот флаг, всегда считается лицевым.


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