Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_SPHERE_H__
00020 #define __CS_SPHERE_H__
00021
00029 #include "csextern.h"
00030
00031 #include "cstypes.h"
00032 #include "csgeom/math3d.h"
00033 #include "csgeom/vector3.h"
00034
00035 class csTransform;
00036
00040 class CS_CRYSTALSPACE_EXPORT csSphere
00041 {
00042 private:
00043 csVector3 center;
00044 float radius;
00045
00046 public:
00048 csSphere ()
00049 {
00050 center.Set (0, 0, 0);
00051 radius = 0;
00052 }
00053
00055 csSphere (const csVector3& center, float radius)
00056 {
00057 csSphere::center = center;
00058 csSphere::radius = radius;
00059 }
00060
00062 csSphere (const csSphere& s) { center = s.center; radius = s.radius; }
00063
00065 inline csVector3& GetCenter () { return center; }
00067 inline const csVector3& GetCenter () const { return center; }
00069 inline void SetCenter (const csVector3& c) { center = c; }
00071 inline float GetRadius () const { return radius; }
00073 inline void SetRadius (float r) { radius = r; }
00074
00076 void Union (const csVector3& ocenter, float oradius);
00077
00079 friend CS_CRYSTALSPACE_EXPORT csSphere operator+ (const csSphere& s1,
00080 const csSphere& s2);
00082 csSphere& operator+= (const csSphere& s)
00083 {
00084 Union (s.center, s.radius);
00085 return *this;
00086 }
00087
00089 bool TestIntersect (const csSphere& sphere) const
00090 {
00091 float sqDist = csSquaredDist::PointPoint (center, sphere.center);
00092 return (sqDist - (csSquare (radius + sphere.radius))) < 0;
00093 }
00094 };
00095
00099 class CS_CRYSTALSPACE_EXPORT csEllipsoid
00100 {
00101 private:
00102 csVector3 center;
00103 csVector3 radius;
00104
00105 public:
00107 csEllipsoid ()
00108 {
00109 center.Set (0, 0, 0);
00110 radius.Set (0, 0, 0);
00111 }
00112
00114 csEllipsoid (const csVector3& center, const csVector3& radius)
00115 {
00116 csEllipsoid::center = center;
00117 csEllipsoid::radius = radius;
00118 }
00119
00121 csEllipsoid (const csEllipsoid& s) { center = s.center; radius = s.radius; }
00122
00124 inline csVector3& GetCenter () { return center; }
00126 inline const csVector3& GetCenter () const { return center; }
00128 inline void SetCenter (const csVector3& c) { center = c; }
00130 inline csVector3& GetRadius () { return radius; }
00132 inline const csVector3& GetRadius () const { return radius; }
00134 inline void SetRadius (const csVector3& r) { radius = r; }
00135 };
00136
00139 #endif // __CS_SPHERE_H__
00140