public boolean intersects (BoundingBox b) {\r
if(!isValid())\r
return false;\r
+ \r
+ //test using SAT (separating axis theorem)\r
\r
- updateCorners();\r
+ float lx = Math.abs(this.cnt.x - b.cnt.x);\r
+ float sumx = (this.dim.x / 2.0f) + (b.dim.x / 2.0f); \r
+ \r
+ float ly = Math.abs(this.cnt.y - b.cnt.y);\r
+ float sumy = (this.dim.y / 2.0f) + (b.dim.y / 2.0f); \r
+ \r
+ float lz = Math.abs(this.cnt.z - b.cnt.z);\r
+ float sumz = (this.dim.z / 2.0f) + (b.dim.z / 2.0f); \r
+ \r
+ return (lx <= sumx && ly <= sumy && lz <= sumz); \r
\r
- return contains(crn[0]) || \r
- contains(crn[1]) ||\r
- contains(crn[2]) ||\r
- contains(crn[3]) ||\r
- contains(crn[4]) ||\r
- contains(crn[5]) ||\r
- contains(crn[6]) ||\r
- contains(crn[7]);\r
}\r
\r
/** Returns whether the given vector is contained in this bounding box.\r