44 #ifndef _INCLUDED_Field3D_CoordSys_H_
45 #define _INCLUDED_Field3D_CoordSys_H_
67 const FIELD3D_VEC3_T<T> &e2,
68 const FIELD3D_VEC3_T<T> &e3,
69 const FIELD3D_VEC3_T<T> &origin);
82 const FIELD3D_VEC3_T<T> &wsVoxelSize,
91 const FIELD3D_VEC3_T<T> &wsVoxelSize);
102 template <
typename T>
112 template <
typename T>
114 ceil(
const FIELD3D_VEC3_T<T> &v)
127 template <
typename T>
129 const FIELD3D_VEC3_T<T> &e2,
130 const FIELD3D_VEC3_T<T> &e3,
131 const FIELD3D_VEC3_T<T> &origin)
151 template <
typename T>
154 const FIELD3D_VEC3_T<T> &wsVoxelSize,
157 const FIELD3D_VEC3_T<T> voxelMin =
158 detail::floor<T>(wsBounds.min / wsVoxelSize) * wsVoxelSize;
159 const FIELD3D_VEC3_T<T> voxelMax =
160 detail::ceil<T>(wsBounds.max / wsVoxelSize) * wsVoxelSize;
163 extents.min =
V3i(detail::floor<T>(voxelMin / wsVoxelSize) +
V3f(0.5));
164 extents.max =
V3i(detail::floor<T>(voxelMax / wsVoxelSize) +
V3f(0.5));
167 const FIELD3D_BOX_T<FIELD3D_VEC3_T<T> > box(voxelMin, voxelMax);
174 template <
typename T>
178 const FIELD3D_VEC3_T<T> &wsVoxelSize)
186 template <
typename T>
191 FIELD3D_VEC3_T<T> e1(wsBounds.max.x - wsBounds.min.x, 0, 0);
192 FIELD3D_VEC3_T<T> e2(0, wsBounds.max.y - wsBounds.min.y, 0);
193 FIELD3D_VEC3_T<T> e3(0, 0, wsBounds.max.z - wsBounds.min.z);
194 FIELD3D_VEC3_T<T> origin(wsBounds.min);
204 #endif // Include guard