// класс Shapes и сопутствующие классы
//тототтш Material class №№QQmm
class Material{
public:
Color3 ambient, diffuse, specular, emissive:
int numParams: // for textures // для текстур
float params[10]: // for textures 11 для текстур
int textureType: // 0 for none, neg for solids, pos for images // 0. если нет. отрицательное для объемных. // положительное для изображений
float specularExponent. reflectivity, transparency. speedOfLight:
float specularFraction. surfaceRoughness:
void setDefaultO;
void set(Material& m):
}:
// end of Material
// конец класса Material
ИШШтштШШ GeomObj class тШФШШШ
class GeomObj{ public:
//IntRect scrnExtnt: GeomObj * next: GeomObjО: next(NULL){} virtual void loadStuff(){} virtual void drawOpenGL(){} virtual void tellMaterlalsGLO{}
//emmmmmm Boolean mmmmtmm
class Boolean: public GeomObj{ public:
GeomObj *left. *right:
Boolean():left(NULL),right(NULL){}
virtual void drawOpenGLO
{
// just draw its children // теперь рисуем его потомков
i f(1eft)1eft-[greaterIdrawOpenGL():
if(right)right-[greater]drawOpenGL():
}
ВЗ. Класс SCENE и сопутствующие классы
//те&тттшт итопвооі тттетш
class UnlonBool : public Boolean{ public:
UnionBool(){Boolean();} // constructor // конструктор }:
//mmomtmomm IntersectionBool mQ№№№№
class IntersectionBool : public Boolean{
public:
Intersecti onBool(){Boolean():}
}:
//ommmmm&m DifferenceBooi emmmmm
class DifferenceBooi : public Boolean{ public:
Di fferenceBool(){Boolean():}
}:
//om&mmmm shape mmmmmmm
class Shape: public GeomObj{ public:
Material mtrl:
Affine4 transf.invTransf: // virtual СоїогЗ texture(HitInfo& h. int whichTexture):
Shape(){mtrl.textureType - 0: mtrl.numParams - 0:}
void setMaterial(Materials mt){mtrl.set(mt):}
void tellMaterialsGLO:
virtual void drawOpenGLOO
}:
// end: Shape class // конец класса Shape
//@$@$@$@$@$@$@$@$@ Cube class $@$@$&@$@$@$@$@$@$@ class Cube: public Shape{ public: Cube(){}
void drawOpenGLO {
tel 1 Materi alsGLO: gl PushMatri x():
glMultMatrixf(transf.m): // load affine // загружаем аффинное
glEnable(GL_NORMALIZE):