4#include <unordered_set>
6#include "software/geom/line.h"
7#include "software/geom/polygon.h"
8#include "software/geom/ray.h"
9#include "software/geom/segment.h"
29std::optional<Point> intersection(
const Point &a,
const Point &b,
const Point &c,
30 const Point &d,
double fixed_epsilon = FIXED_EPSILON,
31 int ulps_epsilon = ULPS_EPSILON_TEN);
45std::vector<Point> intersection(
const Segment &first,
const Segment &second);
56std::unordered_set<Point> intersection(
const Polygon &polygon,
const Segment &segment);
70std::vector<Point> intersection(
const Ray &ray,
const Segment &segment);
82std::optional<Point> intersection(
const Line &first,
const Line &second);
92std::unordered_set<Point> intersection(
const Polygon &polygon,
const Ray &ray);
103std::optional<Point> intersection(
const Ray &first,
const Ray &second);