23 auto const& centroid()
const {
return center; }
25 bool contains(glm::tvec2<T> pt)
const
27 const auto d = pt - center;
28 return (d.x * d.x) / (radii.x * radii.x) + (d.y * d.y) / (radii.y * radii.y) <= T(1);
35 const auto a = std::max(radii.x, radii.y);
36 const auto b = std::min(radii.x, radii.y);
37 const auto h = ((a - b) * (a - b)) / ((a + b) * (a + b));
38 return glm::pi<T>() * (a + b) * (1 + ((3 * h) / (10 + sqrtf(4 - 3 * h))));
41 glm::tvec2<T> edge_point_alpha(T t)
const
43 throw "unimplemented";
46 T calculate_area()
const {
return glm::pi<T>() * radii.x * radii.y; }
47 glm::tvec2<T> edge_point(T t)
const {
return edge_point_alpha(t / edge_length()); }
48 trec2<T> bounding_box()
const {
return trec2<T>{center - radii, center + radii}; }
50 glm::tvec2<T> closest_point_to(glm::tvec2<T> pt)
const
53 throw "unimplemented";