Вычисление площади одноконтурного несамопересекающегося многоугольника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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |