diff --git a/fontes/geometry.h b/fontes/geometry.h
deleted file mode 100644
index 5205be47cab64d9b6e3d100b1b7acdda518d7375..0000000000000000000000000000000000000000
--- a/fontes/geometry.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#define aa first
-#define bb second
-#define px real()
-#define py imag()
-
-typedef complex<double> pt;
-typedef pair<pt, pt> seg;
-
-double dot(pt a, pt b) { return (conj(a) * b).px; }
-double cross(pt a, pt b) { return (conj(a) * b).py; }
-pt vec(pt a, pt b) { return b - a; }
-pt vec(seg s) { return s.bb - s.aa; }
-
-bool on_segment(seg s, pt p) {
-  return cross(s.aa - p, s.bb - p) == 0 && dot(s.aa - p, s.bb - p) <= 0;
-}
-
-int sgn(double v) { return (v > EPS) - (v < EPS); }
-
-int ord_ornt (seg s, pt c) {
-  return sgn(cross(vec(s), vec(s.bb, c)));
-}
-
-bool intersect_seg(seg s, seg t) {
-  int o1 = ord_ornt(s, t.aa), o2 = ord_ornt(s, t.bb);
-  int o3 = ord_ornt(t, s.aa), o4 = ord_ornt(t, s.bb);
-
-  return (
-    (o1 != o2 && o3 != o4) ||
-    (o1 == 0 && on_segment(s, t.aa)) ||
-    (o2 == 0 && on_segment(s, t.bb)) ||
-    (o3 == 0 && on_segment(t, s.aa)) ||
-    (o4 == 0 && on_segment(t, s.bb)));
-}
-
-// precondition is that they aren't collinear
-pt point_in_line_line(seg a, seg b) {
-    return a.aa + vec(a) * (cross(vec(a.aa, b.aa), vec(b)) / cross(vec(a), vec(b)));
-}
-
-pt point_in_seg(pt p, seg s) {
-  if (s.aa == s.bb) { return s.aa; }
-  double l = dot(vec(s.aa, p), vec(s)) / norm(vec(s));
-  if (l < 0.0) { return s.aa; }
-  if (l > 1.0) { return s.bb; }
-  return s.aa + l*vec(s);
-}
-
-double distance_seg_point(pt p, seg s) {
-  return abs(p - point_in_seg(p, s));
-}
-
-double distance_seg_seg(seg s, seg t) {
-  if (intersect_seg(s, t)) { return 0; }
-  double v1 = distance_seg_point(s.aa, t);
-  double v2 = distance_seg_point(s.bb, t);
-  double v3 = distance_seg_point(t.aa, s);
-  double v4 = distance_seg_point(t.bb, s);
-  return min({ v1, v2, v3, v4 });
-}
-
-bool is_inside_poly(vector<pt>& ps, pt p, bool strict) {
-  int n = ps.size();
-  if (n < 3) { return false; }
-  int count = 0;
-  for (int i = 0; i < n; i++) {
-    int j = (i+1)%n;
-    if (on_segment(seg(ps[i], ps[j]), p)) { return strict; }
-    count ^= ((p.py < ps[i].py) - (p.py < ps[j].py))
-        * ord_ornt(seg(ps[i], ps[j]), p) > 0;
-  }
-  return count;
-}
-
-double polygon_area(vector<pt>& ps) {
-  double area = cross(ps[ps.size()-1], ps[0]);
-  for (int i = 1; i < ps.size(); i++) {
-    area += cross(ps[i-1], ps[i]);
-  }
-  return area / 2.0;
-}