• Минимальное расстояние между точками одного множества: double closestPoints ( CArrRef<Vector2d> point, Set2<nat> & pp );Параметр pp содержит индексы ближайших точек. • Расстояние от точки до границы окружности: double getDistance ( const Circle2d & circle, const Vector2d & point ); • Расстояние от точки до границы эллипса: double getDistanceElp ( double a, double b, const Vector2d & p, Vector2d & r ); double getDistanceElp ( double a, double b, const Vector2d & p );Здесь a и b - это параметры эллипса заданного в виде ( x / a )2 + ( y / b )2 = 1, p - заданная точка, r - ближайшая точка на границе эллипса. • Расстояние от точки до границы многоугольника: bool distance ( CArrRef<Vector2d> vert, const Vector2d & point, double & dist, unsigned int & index, bool & isBone );Обход вершин многоугольника задан против часовой стрелки. Здесь vert - ссылка на массив вершин, point - заданная точка, dist - вычисленное расстояние, index - номер ближайшей вершины или ребра, isBone - индикатор того, что ближе - точка на ребре или вершина. Если к-во вершин равно нулю, то функция возвращает значение false и переменные dist, index и isBone не меняются.
Описание класса Vector2d находится здесь.
Исходники алгоритмов находятся в func2d.cpp Наверх |