fabs((b.x_-a.x_)*(c.y_-a.y_)-(c.x_-a.x_)*(b.y_-a.y_)
- это перекрестное произведение.
Обратите внимание, что:
fabs(crossProduct( (b-a), (c-a) ) ) == length(b-a)*distance of c from the line (a,b)
Следовательно, равен нулю тогда и только тогда, когда только c лежит на линии (a, b), только если a, b различны.
Мне было бы интересно услышать комментарии или лучшие примеры того, почему это может быть "нестабильно". Я всегда думал, что это довольно крепко.