Пример #1
0
    Bounds get(Dir dir, bool force2d = false) const
    {
        if (force2d) dir = toDir(toIntegral(dir, true));

        switch (dir)
        {
            case Dir::swd: return getSwd(force2d); break;
            case Dir::sed: return getSed(force2d); break;
            case Dir::nwd: return getNwd(force2d); break;
            case Dir::ned: return getNed(force2d); break;
            case Dir::swu: return getSwu(); break;
            case Dir::seu: return getSeu(); break;
            case Dir::nwu: return getNwu(); break;
            case Dir::neu: return getNeu(); break;
        }

        throw std::runtime_error(
                "Invalid Dir to Bounds::get: " +
                std::to_string(toIntegral(dir)));
    }
Пример #2
0
    // Call this if allDirections() == true.
    QueryChunkState getClimb(Dir dir) const
    {
        QueryChunkState result(*this);
        ++result.m_depth;
        result.m_bounds.go(dir, m_structure.tubular());

        assert(result.m_depth <= m_structure.sparseDepthBegin());

        result.m_chunkId <<= m_structure.dimensions();
        ++result.m_chunkId.data().front();
        result.m_chunkId += toIntegral(dir) * m_pointsPerChunk;

        return result;
    }
Пример #3
0
    void go(Dir dir, bool force2d = false)
    {
        if (force2d) dir = toDir(toIntegral(dir, true));

        switch (dir)
        {
            case Dir::swd: goSwd(force2d); break;
            case Dir::sed: goSed(force2d); break;
            case Dir::nwd: goNwd(force2d); break;
            case Dir::ned: goNed(force2d); break;
            case Dir::swu: goSwu(); break;
            case Dir::seu: goSeu(); break;
            case Dir::nwu: goNwu(); break;
            case Dir::neu: goNeu(); break;
        }
    }
Пример #4
0
Файл: dir.hpp Проект: PDAL/PDAL
inline bool isDown(Dir dir) { return toIntegral(dir) < 4; }      // 0, 1, 2, 3
Пример #5
0
Файл: dir.hpp Проект: PDAL/PDAL
inline bool isWest(Dir dir) { return toIntegral(dir) % 2 == 0; } // 0, 2, 4, 6
Пример #6
0
Файл: dir.hpp Проект: PDAL/PDAL
inline bool isSouth(Dir dir) { return toIntegral(dir) % 4 < 2; } // 0, 1, 4, 5