namespace dkh { template inline dk::Vector<2> get_diamond_coordinates (const dk::TileIterator& parIterator, const dk::Vector<2>& parSize) { typedef dk::Vector<2> vec; const auto abspos(parIterator.abs_position()); const auto from(dk::implem::get_from_from_iterator(parIterator)); const dk::CoordinateScalarType xoffs = abspos.y() % 2; return (abspos - from) * parSize + vec(xoffs * parSize.x() / 2, 0); } template inline dk::Vector<2> get_half_diamond_coordinates (const dk::TileIterator& parIterator, const dk::Vector<2>& parSize) { typedef dk::Vector<2> vec; return get_diamond_coordinates(parIterator, parSize / vec(1, 2)); } template inline dk::Vector get_square_coordinates (const dk::TileIterator& parIterator, const dk::Vector& parSize) { return (parIterator.abs_position() - dk::implem::get_from_from_iterator(parIterator)) * parSize; } //template //inline //dk::Vector get_hex_coordinates (const dk::TileIterator& parIterator, const dk::Vector& parSize) { //} } //namespace dkh