MCPcopy Create free account
hub / github.com/CesiumGS/cesium-native / positionToTile

Method positionToTile

CesiumGeometry/src/OctreeTilingScheme.cpp:37–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35}
36
37std::optional<OctreeTileID> OctreeTilingScheme::positionToTile(
38 const glm::dvec3& position,
39 uint32_t level) const noexcept {
40
41 if (!this->_box.contains(position)) {
42 return std::nullopt;
43 }
44
45 uint32_t xTiles = this->getNumberOfXTilesAtLevel(level);
46 uint32_t yTiles = this->getNumberOfYTilesAtLevel(level);
47 uint32_t zTiles = this->getNumberOfZTilesAtLevel(level);
48
49 double xTileSize = this->_box.lengthX / xTiles;
50 double yTileSize = this->_box.lengthY / yTiles;
51 double zTileSize = this->_box.lengthZ / zTiles;
52
53 uint32_t xTileCoordinate =
54 static_cast<uint32_t>((position.x - this->_box.minimumX) / xTileSize);
55 if (xTileCoordinate >= xTiles) {
56 xTileCoordinate = xTiles - 1;
57 }
58 uint32_t yTileCoordinate =
59 static_cast<uint32_t>((position.y - this->_box.minimumY) / yTileSize);
60 if (yTileCoordinate >= yTiles) {
61 yTileCoordinate = yTiles - 1;
62 }
63 uint32_t zTileCoordinate =
64 static_cast<uint32_t>((position.z - this->_box.minimumZ) / zTileSize);
65 if (zTileCoordinate >= zTiles) {
66 zTileCoordinate = zTiles - 1;
67 }
68
69 return OctreeTileID(level, xTileCoordinate, yTileCoordinate, zTileCoordinate);
70}
71
72AxisAlignedBox
73OctreeTilingScheme::tileToBox(const OctreeTileID& tileID) const noexcept {

Calls 5

OctreeTileIDFunction · 0.50
containsMethod · 0.45

Tested by

no test coverage detected