Есть класс прямой
struct straight
{
vector point;
vector direction;
};
т.е. это по сути задание прямой в параметрической форме
(point+t*direction)
на самом деле, с математической точки зрения, если сюда добавить ограничения параметра t,
то получим возможность задавать прямую
(t in (-inf, +int)), луч
(t in [0, +int)), отрезок
(t in [0, 1] или t in [const1, const2])
неуверенность в том, что значения inf предполагается задавать как:
double pos_inf = numeric_limits<double>::max();
double neg_inf = -numeric_limits<double>::max(); //есть ли тут какие подводные камни?