Re[4]: Определить лежит ли точка на дуге заданной тремя точками
От: cures Россия cures.narod.ru
Дата: 23.10.14 12:22
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>если вычисления делать с трехмерными координатами, то в общем-то можно просто рассчитать точку пересечения срединных перпендикуляров, она автоматически получится принадлежащей плоскости этой дуги.

LS>однако искать точку пересечения двух прямых в трехмерном пространстве это та еще морока.

Зачем прямых? Срединные перпендикуляры в трёхмерном пространстве — это плоскости, плюс исходная плоскость, получается линейная система из трёх уравнений.

LS>скорее всего автору топика это нужно для расчетов в программе, а там будут практически неизбежны неточности вычислений.


Про это ничего не сказано, если исходные координаты целочисленные, то всё считается в целых числах (возможно, длинных), а если исходные в плавучке, то можно считать расстояние от целевой точки до окружности и определяться с критериями допуска.

LS>и вычислив эти срединные перпендикуляры может оказаться, что они не пересекаются вообще — из-за неточности операций с плавающей точкой.

LS>это нужно будет как-то учитывать при расчетах.

Если плоскости не пересекутся, то они параллельны, тогда исходные 3 точки не определяют окружность, и задача некорректна. Но тогда и Вашим методом уравнение не построится
Погрешности надо учитывать, конечно.

LS>в этом отношении перевод всего в координаты на плоскости даст более стабильный результат — срединные перпендикуляры в плоскости точно пересекутся.


Тоже не факт Из-за погрешностей от замены координат, если исходная дуга — почти прямая, то прямые могут либо вообще не пересечься, либо пересечься в произвольной точке, очень далёкой от центра окружности. Как с этим бороться — непонятно, нужно чёткое ТЗ.

C>> сравниваем расстояние до этого центра от проверяемой точки и от одной из искомых. Если равны — то точка лежит и на сфере и на плоскости, то есть на нужной окружности, если не равны — не лежит.


LS>к такому решению нужно еще придумать какой-то прием, который позволит проверить принадлежность именно дуге, а не только окружности.

LS>очевидный путь — это сравнение угловых координат точек, а для этого нужно вычислять центр.

Про дугу не заметил, да. Но там не сказано, что дуга должна быть между точками, да и что значит между — ещё надо определять, ТС этого не сделал, и, наверное, пока об этом не думал. Можно попробовать через сонаправленность векторных произведений, если действительно нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.