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

/**
\defgroup fcpptmathdim fcppt.math.dim
\ingroup fcpptmath
\brief A class representing static n-dimensional dimensions

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

<ul>
	<li>\ref fcpptmathdim_motivation</li>
	<li>\ref fcpptmathdim_converting_from_and_to_vectors</li>
	<li>\ref fcpptmathdim_headers</li>
</ul>

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

\section fcpptmathdim_motivation Motivation

Conceptually, a dimension is very similar to an #fcppt::math::vector::object. However, it is often useful to distinguish
the two on the type level. For example, there are operations that apply to
vectors (like the dot product) that make no sense in the context of a
dimension.  Conversely, there are operations like "take the area of the
dimension" that make no sense for vectors. Also, the lower-dimensional getters
for vector (<code>x(),y(),z(),w()</code>) have different names than the
lower-dimensional getters for dim (<code>w(),h(),d()</code>).

\section fcpptmathdim_converting_from_and_to_vectors Converting from and to vectors

To convert a dimension to a vector, use #fcppt::math::dim::to_vector:

\snippet math/dim.cpp conversion_to_vector

Conversely, use #fcppt::math::vector::to_dim to convert a vector to a dim:

\snippet math/dim.cpp conversion_from_vector

\section fcpptmathdim_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::dim::object's declaration.</td>
</tr>
<tr>
<td><code>object_decl.hpp</code></td>
<td>Contains #fcppt::math::dim::object's definition.</td>
</tr>
<tr>
<td><code>object_impl.hpp</code></td>
<td>Contains the definition of #fcppt::math::dim::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>arithmetic.hpp</code></td>
<td>Contains symmetric and scalar arithmetic operators.</td>
</tr>
<tr>
<td><code>comparison.hpp</code></td>
<td>Contains all comparison operators.</td>
</tr>
<tr>
<td><code>input.hpp</code></td>
<td>Contains <code>operator>></code>.</td>
</tr>
<tr>
<td><code>output.hpp</code></td>
<td>Contains <code>operator<<</code>.</td>
</tr>
</table>
*/
