#include "mg_obstacles/permanent_obstacle.hpp" #include "mg_obstacles/sdf.hpp" namespace mg { PermanentObstacle::PermanentObstacle(const Json::Value& json) : pos(json.get("x", 1.0).asDouble(), json.get("y", 1.0).asDouble()), size(json.get("width", 0.0).asDouble(), json.get("height", 0.0).asDouble()) { } double PermanentObstacle::distance(glm::dvec2 position) const { return boxSdf(pos + 0.5 * glm::dvec2{ size.x, -size.y }, size * 0.5, position); } bool PermanentObstacle::contains(glm::dvec2 position, double radius) const { return inBoxSdf(pos + 0.5 * glm::dvec2{ size.x, -size.y }, size * 0.5, position, radius); } double PermanentObstacle::distanceBox(const glm::dvec2 position, const glm::dvec2 size, const glm::dmat2 rot_mat) const { return boxToBox(pos + 0.5 * glm::dvec2{ this->size.x, -this->size.y }, this->size, position, size, rot_mat); } }