![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Многоугольник и окружность [D7, XP]
MasteR2 © (2006-05-14 11:51:00)Может кто сталкивался, подскажите. Задание такое: дан многоугольник(необязательно выпуклый) координатами своих вершин, построить описанную вокруг него окружность.
Проблема в вычислении радиуса(диаметра) этой окружности и размещении её вокруг многоугольника. Многоугольник строю через Polygon, а окружность через Shape.
MasteR2 (2006-05-15 06:49:00) [1]
> Eraser
Не-не, это не так
Eraser (2006-05-15 00:48:00) [2]
> MasteR2 © (14.05.06 21:07) [20]
а что не понятного то? Y - середина "габаритного" прямоугольника.
MasteR2 (2006-05-14 21:07:00) [3]Спасибо! Остался единственный тупик - найти Y. Где (X,Y) - центр окружности, центр самой длинной линии многоугольника. X находится через габаритный прямоугольник
antonn (2006-05-14 19:43:00) [4]не, не так:
canvas.ellipce(х-radiusX,у-radiusY,х+radiusX,у+radiusY);
:)
MasteR2 (2006-05-14 19:16:00) [5]Слушайте, а в Delphi можно построить окружность типа Паскаля?
MoveTo(X,Y);
Circle(radiusX ,radiusY);
antonn (2006-05-14 19:05:00) [6]минимально возможный радиус, как я понял.
TUser (2006-05-14 18:25:00) [7]Если окружность должна включать все вершины - то надо рассмотреть n-2 треугольников. Радиусы и центры описанных окружностей должны совпадать.
Рамиль (2006-05-14 17:36:00) [8]
> но описанная окружность вроде должна включать все вершины
Тогда задача не имеет решение в общем случае
Eraser (2006-05-14 17:33:00) [9]
> Desdechado © (14.05.06 17:28) [13]
по ТЗ вроде нет.
Desdechado (2006-05-14 17:28:00) [10]я мож чего не понимаю, но описанная окружность вроде должна включать все вершины
MasteR2 (2006-05-14 17:07:00) [11]Спасибо, Eraser, щас обмозгуем...
Eraser (2006-05-14 16:42:00) [12]
> Eraser © (14.05.06 16:28) [10]
> 4. Полученый Rect полностью характерезует эллипс, который
> надо построить.
> 5. Строим собственно эллипс, CreateEllipticRgnIndirect.
уточнение: строим эллипс не по полученому Rect, а по преобразованному - с длиной стороны равной диагонали полученного ректа.
Eraser (2006-05-14 16:28:00) [13]
> MasteR2 © (14.05.06 11:51)
Я бы делал примерно так:
1. Посторил по заданным точкам многоугольный регион, CreatePolygonRgn.
2. Получил бы минимальный прямоугольник, который в который поместился бы данный регион, GetRgnBox.
4. Полученый Rect полностью характерезует эллипс, который надо построить.
5. Строим собственно эллипс, CreateEllipticRgnIndirect.
MasteR2 (2006-05-14 16:21:00) [14]Уже разобрался. Но со своей задачей так и не могу никак справиться:(
EvS (2006-05-14 15:57:00) [15]Ellipse(x1,y1,x2,y2:Integer);
x1,y1-координаты левого верхнего угла,
x2,y2-координаты нижнего правого угла
MasteR2 (2006-05-14 15:52:00) [16]Кстати, в Ellipse какие углы прямоугольника пишутся?
MasteR2 (2006-05-14 15:26:00) [17]PaintBox1.Canvas.Ellipse(trunc(MaxX)+299+7,trunc(MinY)+299-12,trunc(MinX)+299+7,trunc(MinY)+299-12);
вот так и пробую
EvS (2006-05-14 15:22:00) [18]Как пробуешь-то?
MasteR2 (2006-05-14 15:20:00) [19]Да, тоже жопа! Пробую, пробую - по нолям!
Жуков Олег (2006-05-14 14:53:00) [20]Canvas.Ellipse(....)?