Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Многоугольник и окружность [D7, WinXP]


MasteR2 ©   (2006-05-14 11:48:00) 

Может кто сталкивался, подскажите. Задание такое: дан многоугольник(необязательно выпуклый) координатами своих вершин, построить описанную вокруг него окружность.
Проблема в вычислении радиуса(диаметра) этой окружности и размещении её вокруг многоугольника. Многоугольник строю через Polygon, а окружность через Shape.


Dead Man   (2006-05-14 23:45:00) [1]

Можно, если написать процедуру Circle.


MasteR2   (2006-05-14 19:15:00) [2]

Слушайте, а в Delphi можно построить окружность типа Паскаля?
MoveTo(X,Y);
Circle(radiusX ,radiusY);


MasteR2   (2006-05-14 16:03:00) [3]

Верхний левый и нижний правый. Спасибо


MBo   (2006-05-14 15:52:00) [4]

>В Ellipse какие углы прямоугольника пишутся?
В справке написано


MasteR2   (2006-05-14 15:51:00) [5]

В Ellipse какие углы прямоугольника пишутся?


MBo   (2006-05-14 14:50:00) [6]

Если нет необходимости использовать графический объект, то, конечно, вместо Shape надо Ellipse рисовать


MasteR2   (2006-05-14 14:24:00) [7]

Допустим, диаметр найден. Как тогда мне Shape прилипить к многоугольнику?
Или вообще на Shape забить и использовать что-то другое? Только что?


MBo   (2006-05-14 14:08:00) [8]

Для нахождения минимальной описывающей набор точек окружности есть алгоритм "Miniball", однако он довольно нетривиальный, поэтому для небольшого числа точек можно обойтись переборным O(N^4) алгоритмом - перебираем все тройки, не лежашие на одной прямой, и проверяем, что остальные точки лежат внутри построенной на очередной тройке точек окружности


antonn   (2006-05-14 13:17:00) [9]

т.е. я находил границы прямоугольника, описывающего многоугольник, находил центр, выделял ближайшую и дальнуюю точку многоугольника относительно центра (расстояние до центра), брал среднее значение расстояний из этих двух точек, и сроил "новую точку центра", используя среднее расстояние к тем ближайшей и дальней точкам (т.е. равнобедренный треугольник получался). А дальше выводил окружность в "новой точке центра" и радиусом "среднего расстояния" :)


antonn   (2006-05-14 13:07:00) [10]

хы-хы, а то, как я когда то делал, не совсем описывание. Т.е. не минимального радиуса:)


MasteR2   (2006-05-14 12:57:00) [11]

Нашел. Ну а как Shape к этому многоугольнику прилепить?


MasteR2   (2006-05-14 12:12:00) [12]

Я об этом подумал, щас пробую


antonn   (2006-05-14 12:04:00) [13]

найти габариты многоугольника (крайние координаты), а дальше ничего сложного...


Наверх

Титульная страница Поиск, карта сайта Написать письмо