glm::vec2 Ray2DIntersectionPoint(const Ray2D & a, const Ray2D & b, bool & exists)
{
    return Ray2DIntersectionPoint(a.origin(), a.direction(), b.origin(), b.direction(), exists);
}
float PointRay2DHalfspace(const glm::vec2 & point,
                          const Ray2D & ray)
{
    return PointRay2DHalfspace(point, ray.origin(), ray.direction());
}