Функция area вычисляет площадь многоугольника: double area ( CArrRef<Vector2d> vert ); Знак площади зависит от направления обхода вершин. Для обхода против часовой стрелки площадь положительна. Функция perimeter вычисляет периметр многоугольника, который всегда неотрицателен: double perimeter ( CArrRef<Vector2d> vert ); Функция isConvex проверяет многоугольник на выпуклость: bool isConvex ( CArrRef<Vector2d> vert ); Функция loopNumber подсчитывает количество оборотов совершаемое при обходе контура: int loopNumber ( CArrRef<Vector2d> vert ); Это число будет положительным, если обход контура совершается против часовой стрелки и отрицательным, если по часовой стрелке. Если количество оборотов не равно 1 - значит на контуре есть петли. Обратное не всегда верно, т.к. петли могут обороты и добавлять, и убавлять. Функции simplify упрощают многоугольники. Полученный многоугольник res состоит из вершин исходного многоугольника poly и отличается от него не более, чем на eps. Если параметр closed = false, то входной массив вершин считается незамкнутой ломаной. В этом случае первая и последняя точки будут сохранены: DynArrRef< nat > & simplify ( CArrRef<Vector2d> poly, double eps, bool closed, DynArrRef< nat > & res ); DynArrRef<Vector2d> & simplify ( CArrRef<Vector2d> poly, double eps, bool closed, DynArrRef<Vector2d> & res ); Первый параметр у всех функций - это ссылка на массив вершин многоугольника. Описание класса Vector2d находится здесь.
|