![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Вычисление площади одноконтурного несамопересекающегося многоугольникаDelphi , Синтаксис , Математика
Автор: Виктор Щербаков { **** UBPFD *********** by delphibase.endimus.com **** >> 1.Для многоконтурных или самопересекающихся многоугольников функция вернет неверный результат. 2.Площадь всегда положительна (т.е. не зависит от направления обхода). Зависимости: нет Автор: Виктор Щербаков, shherbakov@yandex.ru, Нижний Новгород Copyright: Виктор Щербаков Дата: 18 апреля 2002 г. ***************************************************** } // Точка type TFloatPoint = record X, Y: Double; end; // Точки полигона type TPolygonPoints = array of TFloatPoint; // Сама функция function PolygonSquare(Poly: TPolygonPoints): Double; var I, J, HP: Integer; begin Result := 0; HP := High(Poly); for I := Low(Poly) to HP do begin if I = HP then J := 0 else J := I + 1; Result := Result + (Poly[I].X + Poly[J].X) * (Poly[I].Y - Poly[J].Y); end; Result := Abs(Result) / 2; end; Привет! Я переведу текст на русский язык: Это код Delphi, который рассчитывает площадь многоугольника. Функция Вот разбивка кода:
Где Обратите внимание, что этот код предполагает, что входной многоугольник не имеет самопересечений или дыр. Если многоугольник имеет несколько связанных компонентов или дыр, это код не будет работать корректно. Также комментарий вверху указывает, что функция вернет неправильные результаты для не самопересекающихся многоугольников с более чем одним контуром. Однако код сам по себе только обрабатывает одиночные контуры многоугольника. Альтернативным решением может быть использование более robust алгоритма отсечения полигона для обработки более сложных полигоноов. Или можно использовать библиотеку или фреймворк, который предоставляет встроенную функцию расчета площади полигона. Функция для вычисления площади одноконтурного несамопересекающегося многоугольника, представленная на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |