Здравствуйте, piAnd, Вы писали:
[]
Сталкивался с подобной проблемой. К сожалению, дело было не то чтобы давно, но и не настолько недавно, чтобы я помнил, в чем именно здесь загвоздка. Помню лишь, что пришлось заново выводить формулы. Разбираться снова в этом желания как-то нет (и так намучался я с этой триангуляцией, до сих пор покоя не дает

), поэтому просто приведу фрагмент кода (вроде как работает):
// Выполняем промежуточные вычисления.
const double dx1 = x1 - x0;
const double dx2 = x3 - x0;
const double dx3 = x1 - x2;
const double dx4 = x3 - x2;
const double dy1 = y1 - y0;
const double dy2 = y3 - y0;
const double dy3 = y1 - y2;
const double dy4 = y3 - y2;
const double sa = dx1 * dx2 + dy1 * dy2;
const double sb = dx3 * dx4 + dy3 * dy4;
// Проверяем условие Делоне.
if (sa >= 0.0 && sb >= 0.0)
return TRUE;
if (sa < 0.0 && sb < 0.0)
return FALSE;
return (((dx2 * dy1 - dx1 * dy2) * sb + sa * (dx3 * dy4 - dx4 * dy3)) >= 0.0);
PS Недавно вот поставили задачу перейти от построения триангуляции Делоне к построению триангуляции Делоне с ограничениями (чтобы ребра триангуляции не пересекали отрезки горизонталей и границ водных поверхностей), так что головная боль снова ко мне вернулась

"Жизнь проходит не так, как представлялось в детстве" © Остап Бендер