Класс Polygon3D

Одним из самых главных классов в рассматриваемом проекте является класс Polygon3D, реализующий абстракцию выпуклого многоугольника в трехмерном пространстве. При этом данный класс поддерживает задание цветов и текстурных координат в вершинах многоугольника и ряд основных операций над ним.

Такими операциями являются классификация многоугольника относительно плоскости и усеченной пирамиды видимости (viewing frustrum), определение того, является ли грань лицевой или нелицевой, отсечение по плоскости и усеченной пирамиде, нахождение пересечения многоугольника с заданными объектами, проверка принадлежности точки многоугольнику и различные преобразования многоугольника.

Ниже приводится описание класса Polygon3D.

in

ом.

class Polygon3D : public Object {
protected:
Plane * plane; // plane through this facet
int numVertices; // current # of vertices
int maxVertices; // storage allocated for
// maxVertices
int id;
Vector3D * vertices; // polygon vertices
Vector4D * colors; // color values ((RGBA) for
// every vertex Vector2D * uvMap; // texture coordinates
// (u,v,l)
Texture * texture; // texture of this polygon
Lightmap * lightMap; // it's light map
BoundingBox boundingBox; // polygon's bounding box
// (AABB)
Vector4D color;
Mapping * mapping; // mapping of 3D coords
// to texture coords

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

public:
Polygon3D ();
Polygon3D ( const Polygon3D& poly ); Polygon3D ( const char * theName, int n ) ; Polygon3D ( const char * theName, int n, Vector3D * v, Vector2D * uv );
-Polygon3D ();
virtual bool isOk () const;
virtual int init ();
virtual int compare ( const Object * obj ) const;
virtual long hash () const {
return id;
}
Polygon3D& operator = ( const Polygon3D& poly );
int getld () const {
return id;
}
void setld ( int newld ) {
id = newld;
}
const Plane * getPlane () const {
return plane;
}
void setPlane ( Plane * thePlane ) {

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