namespace fcppt
{
namespace math
{
/**
\brief Contains #fcppt::math::box::object box::object  and helper functions, classes and types for it
*/
namespace box
{
}
}
}

/**
\defgroup fcpptmathbox fcppt.math.box
\ingroup fcpptmath
\brief A class representing axis-aligned rectangles, boxes, hypercubes, ...

<table id="toc">
<tr>
<td>

<ul>
	<li>\ref fcpptmathbox_overview</li>
	<li>\ref fcpptmathbox_constructors_and_getters</li>
	<li>\ref fcpptmathbox_headers</li>
</ul>

</td>
</tr>
</table>

\section fcpptmathbox_overview Overview

A box is defined by two n-dimensional points. For example, a rectangle has a
dimension of 2. The two points give a minimum bound and a non-inclusive maximum
bound. More precisely, let a box be given by <code>p = (x_1,...,x_n)</code> and
<code>q = (y_1,...,y_n)</code>. A point <code>r = (z_1,...,z_n)</code> is
inside the box if for all <code>1 <= i <= n</code> it holds that <code>x_i <=
z_i < y_i</code>. This representation makes it easy to specify empty boxes: For
example, a rectangle defined by <code>(1,2), (1,2)</code> is empty.

\section fcpptmathbox_constructors_and_getters Constructors and getters

A box can be constructed in two ways:
<ul>
<li>A minimum point and a non-inclusive maximum point:

\snippet math/box.cpp init_points

</li>
<li>A minimum point and a size:

\snippet math/box.cpp init_size

</li>
</ul>
There are getters and setters for both representations as well:

\snippet math/box.cpp getters

\section fcpptmathbox_headers Header files

<table>
<tr>
<th>Header file</th>
<th>Description</th>
</tr>
<tr>
<td><code>object_fwd.hpp</code></td>
<td>Contains #fcppt::math::box::object's declaration.</td>
</tr>
<tr>
<td><code>object_decl.hpp</code></td>
<td>Contains #fcppt::math::box::object's definition.</td>
</tr>
<tr>
<td><code>object_impl.hpp</code></td>
<td>Contains the definition of #fcppt::math::box::object's member functions.</td>
</tr>
<tr>
<td><code>object.hpp</code></td>
<td>Includes <code>object_fwd.hpp</code>, <code>object_decl.hpp</code> and <code>object_impl.hpp</code>.</td>
</tr>
<tr>
<td><code>comparison.hpp</code></td>
<td>Contains all comparison operators.</td>
</tr>
<tr>
<td><code>output.hpp</code></td>
<td>Contains <code>operator<<</code>.</td>
</tr>
</table>
*/
