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
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00037 #ifndef FCL_OBBRSS_H
00038 #define FCL_OBBRSS_H
00039
00040
00041 #include "fcl/BV/OBB.h"
00042 #include "fcl/BV/RSS.h"
00043
00044 namespace fcl
00045 {
00046
00047
00049 class OBBRSS
00050 {
00051 public:
00052
00054 OBB obb;
00055
00057 RSS rss;
00058
00060 bool overlap(const OBBRSS& other) const
00061 {
00062 return obb.overlap(other.obb);
00063 }
00064
00066 bool overlap(const OBBRSS& other, OBBRSS& overlap_part) const
00067 {
00068 return overlap(other);
00069 }
00070
00072 inline bool contain(const Vec3f& p) const
00073 {
00074 return obb.contain(p);
00075 }
00076
00078 OBBRSS& operator += (const Vec3f& p)
00079 {
00080 obb += p;
00081 rss += p;
00082 return *this;
00083 }
00084
00086 OBBRSS& operator += (const OBBRSS& other)
00087 {
00088 *this = *this + other;
00089 return *this;
00090 }
00091
00093 OBBRSS operator + (const OBBRSS& other) const
00094 {
00095 OBBRSS result;
00096 result.obb = obb + other.obb;
00097 result.rss = rss + other.rss;
00098 return result;
00099 }
00100
00102 inline FCL_REAL width() const
00103 {
00104 return obb.width();
00105 }
00106
00108 inline FCL_REAL height() const
00109 {
00110 return obb.height();
00111 }
00112
00114 inline FCL_REAL depth() const
00115 {
00116 return obb.depth();
00117 }
00118
00120 inline FCL_REAL volume() const
00121 {
00122 return obb.volume();
00123 }
00124
00126 inline FCL_REAL size() const
00127 {
00128 return obb.size();
00129 }
00130
00132 inline const Vec3f& center() const
00133 {
00134 return obb.center();
00135 }
00136
00138 FCL_REAL distance(const OBBRSS& other, Vec3f* P = NULL, Vec3f* Q = NULL) const
00139 {
00140 return rss.distance(other.rss, P, Q);
00141 }
00142 };
00143
00145 OBBRSS translate(const OBBRSS& bv, const Vec3f& t);
00146
00148 bool overlap(const Matrix3f& R0, const Vec3f& T0, const OBBRSS& b1, const OBBRSS& b2);
00149
00151 FCL_REAL distance(const Matrix3f& R0, const Vec3f& T0, const OBBRSS& b1, const OBBRSS& b2, Vec3f* P = NULL, Vec3f* Q = NULL);
00152
00153 }
00154
00155
00156 #endif