Тема: Как определить принадлежность точки к линии (проблемы с isOn)

Неоюходимо определить, находится ли указанная точка между двумя существующими точками. Испльзую

line1.set(p1, location);
if (line1.isOn(add_point)) {ла-ла}

Не работает. Есть подозрение, что виновата точность указания. Как ее установить? Пробовал

AcGeTol::setEqualPoint(0.1);

выдает ошибку. Заранее спасибо.

Re: Как определить принадлежность точки к линии (проблемы с isOn)

Думаю, что вопрос действительно упирается в точность вычислений. Во всяком случае, в VBA мне удалось решить аналогичную проблему, посмотрите тему:
"Как проверить принадлежность нескольких точек к одной плоскости?"

Re: Как определить принадлежность точки к линии (проблемы с isOn)

Проникся и написал свою функцию :)

bool alxPointIsOnLine (AcGePoint3d add_point, AcGePoint3d p1, AcGePoint3d p2, double toler)
{
bool alx_flag;
double l1, l2, l3;
l1 = p1.AcGePoint3d::distanceTo(add_point);
l2 = p2.AcGePoint3d::distanceTo(add_point);
l3 = p1.AcGePoint3d::distanceTo(p2);
if (abs (l1+l2-l3) < toler)
{alx_flag = TRUE;}
else {alx_flag = FALSE;}
return alx_flag;
}

Re: Как определить принадлежность точки к линии (проблемы с isOn)

> alex
setEqualPoint не статический метод, так что его нужно вызывать для конкретного объекта.

AcGeTol tolerance;
tolerance.setEqualPoint(0.1);
if (point.isOn(point, tolerance))
{
//точка лежит на кривой
}

Re: Как определить принадлежность точки к линии (проблемы с isOn)

> kvas
Конечно же имелось в виду следующее

AcGeTol tolerance;
tolerance.setEqualPoint(0.1);
if (line.isOn(point, tolerance))
{
//точка лежит на кривой
}

Re: Как определить принадлежность точки к линии (проблемы с isOn)

Большое спасибо за разьеснение. Теперь буду знать...