Go to the documentation of this file.00001
00002 #ifndef vgl_ellipsoid_3d_h_
00003 #define vgl_ellipsoid_3d_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <vgl/vgl_point_3d.h>
00026 #include <vgl/algo/vgl_rotation_3d.h>
00027 #include <vcl_iosfwd.h>
00028
00029 template <class T>
00030 class vgl_ellipsoid_3d
00031 {
00032 vgl_point_3d<T> center_;
00033 T x_halflength_;
00034 T y_halflength_;
00035 T z_halflength_;
00036 vgl_rotation_3d<T> orientation_;
00037
00038 public:
00039
00040 vgl_ellipsoid_3d() {}
00041
00042
00043 vgl_ellipsoid_3d(vgl_point_3d<T> const& cntr,
00044 T x_halflen,
00045 T y_halflen,
00046 T z_halflen,
00047 vgl_rotation_3d<T> const& orient = vgl_rotation_3d<T>())
00048 : center_(cntr), x_halflength_(x_halflen), y_halflength_(y_halflen), z_halflength_(z_halflen), orientation_(orient) {}
00049
00050
00051 vgl_point_3d<T> center() const { return center_; }
00052
00053 T x_halflength() const { return x_halflength_; }
00054
00055 T y_halflength() const { return y_halflength_; }
00056
00057 T z_halflength() const { return z_halflength_; }
00058
00059 vgl_rotation_3d<T> orientation() const { return orientation_; }
00060
00061
00062 void set_center(vgl_point_3d<T> const& cntr) { center_ = cntr; }
00063
00064 void set_orientation(vgl_rotation_3d<T> orient) { orientation_ = orient; }
00065
00066 void set_halflengths(T x, T y, T z) { x_halflength_ = x; y_halflength_ = y; z_halflength_ = z; }
00067
00068
00069 bool operator==(vgl_ellipsoid_3d<T> const& e) const;
00070
00071
00072 vcl_ostream& print(vcl_ostream& s) const;
00073 };
00074
00075
00076 template <class T>
00077 vcl_ostream& operator<<(vcl_ostream& os, vgl_ellipsoid_3d<T> const& e) { e.print(os); return os; }
00078
00079 #define VGL_ELLIPSOID_3D_INSTANTIATE(T) extern "please include vgl/vgl_ellipsoid_3d.txx first"
00080
00081 #endif // vgl_ellipsoid_3d_h_