/** Transforms an AABB by the given matrix and returns it into the \p out parameter. */ void transformed(AABB& out, const mat4& mat) const { out.setNull(); if ( !isNull() ) { out.addPoint( mat * vec3(minCorner().x(), minCorner().y(), minCorner().z()) ); out.addPoint( mat * vec3(minCorner().x(), maxCorner().y(), minCorner().z()) ); out.addPoint( mat * vec3(maxCorner().x(), maxCorner().y(), minCorner().z()) ); out.addPoint( mat * vec3(maxCorner().x(), minCorner().y(), minCorner().z()) ); out.addPoint( mat * vec3(minCorner().x(), minCorner().y(), maxCorner().z()) ); out.addPoint( mat * vec3(minCorner().x(), maxCorner().y(), maxCorner().z()) ); out.addPoint( mat * vec3(maxCorner().x(), maxCorner().y(), maxCorner().z()) ); out.addPoint( mat * vec3(maxCorner().x(), minCorner().y(), maxCorner().z()) ); } }
void transformed(AABB& aabb, const mat4d& mat) const { aabb.setEmpty(); if ( !isEmpty() ) { aabb.addPoint( mat * vec3d(minCorner().x(), minCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), maxCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), maxCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), minCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), minCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), maxCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), maxCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), minCorner().y(), maxCorner().z()) ); } }
AABB KDTreeNodeRef::getAABB() const { AABB res; for (int i=0;i<3;i++){ res.addPoint(triangle[i]); } return res; }
AABB transformed(const mat4d& mat) const { AABB aabb; if ( !isEmpty() ) { aabb.addPoint( mat * vec3d(minCorner().x(), minCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), maxCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), maxCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), minCorner().y(), minCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), minCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(minCorner().x(), maxCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), maxCorner().y(), maxCorner().z()) ); aabb.addPoint( mat * vec3d(maxCorner().x(), minCorner().y(), maxCorner().z()) ); } return aabb; }