Делаю проверку условия Делоне так:
(как в статье Скворцова А.В.)
float x0,y0,x1,y1,x2,y2,x3,y3,ca,cb;
ca=(x0-x1)*(x0-x3)+(y0-y1)*(y0-y3);
cb=(x2-x1)*(x2-x3)+(y2-y1)*(y2-y3);
if(ca<0&&cb<0)
return false;//не выполняется
if(ca>=0&&cb>=0)
return true;//выполняется
if(((x0-x1)*(y0-y3)-(x0-x3)*(y0-y1))*cb+((x2-x1)*(y2-y3)-(x2-x3)*(y2-y1))*ca>=0)
return true;
return false;
Причем все треугольники в триангуляции у меня отрицательно-направленные (обход вершин делается по ч.с.). Соответственно (x1,y1)-(x2,y2)-(x3,y3) — обход по ч.с. и (x0,y0) — точка смежного треугольника для проверки.
Данная процедура не работает, непойму в чем может быть подвох проверки!!!
Почему-то из всех опробованных методов работает только тупая проверка попадания в окружность...
Может необходимо еще какое-то условие, особо не оговаривающееся в статьях???
Здравствуйте, 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 Недавно вот поставили задачу перейти от построения триангуляции Делоне к построению триангуляции Делоне с ограничениями (чтобы ребра триангуляции не пересекали отрезки горизонталей и границ водных поверхностей), так что головная боль снова ко мне вернулась

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