Horizon
geom_util.hpp
1#pragma once
2#include <string>
3#include "common/common.hpp"
4
5namespace horizon {
6
7template <typename T> std::pair<Coord<T>, Coord<T>> pad_bbox(std::pair<Coord<T>, Coord<T>> bb, T pad)
8{
9 bb.first.x -= pad;
10 bb.first.y -= pad;
11
12 bb.second.x += pad;
13 bb.second.y += pad;
14 return bb;
15}
16Coordd project_onto_perp_bisector(const Coordd &a, const Coordd &b, const Coordd &p);
17
18std::string coord_to_string(const Coordf &c, bool delta = false);
19std::string dim_to_string(int64_t x, bool with_sign = true);
20std::string angle_to_string(int angle, bool pos_only = true);
21int orientation_to_angle(Orientation o);
22int64_t round_multiple(int64_t x, int64_t mul);
23
24template <typename T> int sgn(T val)
25{
26 return (T(0) < val) - (val < T(0));
27}
28
29double angle_to_rad(int angle);
30int angle_from_rad(double rad);
31int wrap_angle(int angle);
32float c2pi(float x);
33} // namespace horizon