00001 /* COPYRIGHT 00002 * 00003 * This file is part of the Visual Effects Engine - VEE 00004 * 00005 * Read the "VEE-LICENSE" file for the license. 00006 * 00007 * Authors & Copyright: 00008 * 00009 * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 00010 * Janne Kontkanen 2001-2004 00011 * 00012 * Additional copyrights: Tekes 2003-2004 00013 * 00014 * firstname.lastname@hut.fi 00015 * 00016 */ 00017 00018 #ifndef VEE_VOLUME_ELLIPSOID_H 00019 #define VEE_VOLUME_ELLIPSOID_H 00020 00021 #include <vee_volume.h> 00022 00023 #include <vee_clonable_pointer.h> 00024 #include <vee_matrix3.h> 00025 #include <vee_random.h> 00026 00027 00028 00034 class VEE_VolumeEllipsoid : public VEE_Volume 00035 { 00036 public: 00037 VEE_VolumeEllipsoid(); 00038 VEE_VolumeEllipsoid(const VEE_Vector3 & axes); 00039 virtual ~VEE_VolumeEllipsoid(); 00040 00041 virtual VEE_Vector3 newRandomPoint(); 00042 virtual VEE_Volume * clone() const; 00043 00044 virtual void getBoundingBox(VEE_BoundingBox *); 00045 00046 virtual float inside(const VEE_Vector3 &location); 00047 00048 /* VEE_Vector3 *centralLocation() { return &m_center; } 00049 VEE_Vector3 *location() { return &m_center; }*/ 00050 VEE_Vector3 *axes() { return &m_axes; } 00051 VEE_Matrix3 *rotation() { return &m_rotation; } 00052 // void setCenter(float x, float y, float z); 00053 // void move(const VEE_Vector3 &l) { m_center += l; } 00054 void setAxes(float a1, float a2, float a3); 00055 void setRotation(VEE_Matrix3 &rot) { m_rotation = rot; } 00056 void setRandom(VEE_Random *r) { m_random = r; } 00057 00058 00059 protected: 00060 00061 // VEE_Vector3 m_center; 00062 VEE_Vector3 m_axes; 00063 VEE_Matrix3 m_rotation; 00064 00065 VEE_ClonablePointer<VEE_Random> m_random; 00066 }; 00067 00068 00069 #endif