00001
00002
00003 #ifndef __RECTANGLE_H
00004 #define __RECTANGLE_H
00005
00006 #include <esg/geometry/Polygon.h>
00007
00008 namespace esg {
00009
00014 class Rectangle : public Polygon {
00015 protected:
00016 double _width;
00017 double _height;
00018 Vector3 _xDir;
00019 Vector3 _yDir;
00020
00021 protected:
00022 virtual void _duplicate_attributes (const Geometry&);
00023 virtual void _rotateX (float );
00024 virtual void _rotateY (float );
00025 virtual void _rotateZ (float );
00026 virtual void _rotate (float , const Vector3& );
00027 virtual void _rotate (const Matrix3&);
00028 virtual void _translate (float , float , float );
00029 virtual void _transform (const Matrix4&);
00030 virtual void _scale (float);
00031
00032 public:
00043 Rectangle (const Vector3& corner,
00044 const Vector3& u,
00045 const Vector3& v,
00046 const Vector2 uva[4],
00047 bool oneside);
00048
00060 Rectangle (const Vector3& corner,
00061 const Vector3& u,
00062 const Vector3& v,
00063 const Vector2 uva[4],
00064 bool oneside,
00065 const Vector3& normal);
00066
00067 virtual void randomSample (int mask, PointEnv& pe, double* pdf);
00068 };
00069
00070 };
00071
00072 #endif // __RECTANGLE_H