glm::mat4x4 FlyingCamera::getCameraMatrix(){ glm::vec3 translateVec(-q.getValue(xpos),-q.getValue(ypos),-q.getValue(zpos)); return orientation.getMatrix()*glm::translate(glm::mat4x4(1.0f),translateVec); }
optional<GeometryCollection> FeatureIndex::translateQueryGeometry( const GeometryCollection& queryGeometry, const std::array<float, 2>& translate, const style::TranslateAnchorType anchorType, const float bearing, const float pixelsToTileUnits) { if (translate[0] == 0 && translate[1] == 0) { return {}; } GeometryCoordinate translateVec(translate[0] * pixelsToTileUnits, translate[1] * pixelsToTileUnits); if (anchorType == style::TranslateAnchorType::Viewport) { translateVec = util::rotate(translateVec, -bearing); } GeometryCollection translated; for (const auto& ring : queryGeometry) { translated.emplace_back(); auto& translatedRing = translated.back(); for (const auto& p : ring) { translatedRing.push_back(p - translateVec); } } return translated; }