Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

Многоугольник и окружность   Найти похожие ветки 

 
MasteR2 ©   (2006-05-14 11:51) [0]

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


 
Жуков Олег   (2006-05-14 12:42) [1]

Не сталкивался, но думаю такой алгоритм возможен:
1. Найти самую длинную диагональ. Вершины её будут первыми двумя точками
2. Найти наиболее удалённую от одной из первых двух точек вершину. Это третья точка.
3. Найти точку, равноудалённую от трёх найденных. Это будет центр окружности.


 
MasteR2 ©   (2006-05-14 14:24) [2]

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


 
Жуков Олег   (2006-05-14 14:53) [3]

Canvas.Ellipse(....)?


 
MasteR2 ©   (2006-05-14 15:20) [4]

Да, тоже жопа! Пробую, пробую - по нолям!


 
EvS ©   (2006-05-14 15:22) [5]

Как пробуешь-то?


 
MasteR2 ©   (2006-05-14 15:26) [6]

PaintBox1.Canvas.Ellipse(trunc(MaxX)+299+7,trunc(MinY)+299-12,trunc(MinX)+299+7,trunc(MinY)+299-12);
вот так и пробую


 
MasteR2 ©   (2006-05-14 15:52) [7]

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


 
EvS ©   (2006-05-14 15:57) [8]

Ellipse(x1,y1,x2,y2:Integer);
x1,y1-координаты левого верхнего угла,
x2,y2-координаты нижнего правого угла


 
MasteR2 ©   (2006-05-14 16:21) [9]

Уже разобрался. Но со своей задачей так и не могу никак справиться:(


 
Eraser ©   (2006-05-14 16:28) [10]


> MasteR2 ©   (14.05.06 11:51)

Я бы делал примерно так:
1. Посторил по заданным точкам многоугольный регион, CreatePolygonRgn.
2. Получил бы минимальный прямоугольник, который в который поместился бы данный регион, GetRgnBox.
4. Полученый Rect полностью характерезует эллипс, который надо построить.
5. Строим собственно эллипс, CreateEllipticRgnIndirect.


 
Eraser ©   (2006-05-14 16:42) [11]


> Eraser ©   (14.05.06 16:28) [10]

> 4. Полученый Rect полностью характерезует эллипс, который
> надо построить.
> 5. Строим собственно эллипс, CreateEllipticRgnIndirect.

уточнение: строим эллипс не по полученому Rect, а по преобразованному - с длиной стороны равной диагонали полученного ректа.


 
MasteR2 ©   (2006-05-14 17:07) [12]

Спасибо, Eraser, щас обмозгуем...


 
Desdechado ©   (2006-05-14 17:28) [13]

я мож чего не понимаю, но описанная окружность вроде должна включать все вершины


 
Eraser ©   (2006-05-14 17:33) [14]


> Desdechado ©   (14.05.06 17:28) [13]

по ТЗ вроде нет.


 
Рамиль ©   (2006-05-14 17:36) [15]


> но описанная окружность вроде должна включать все вершины

Тогда задача не имеет решение в общем случае


 
TUser ©   (2006-05-14 18:25) [16]

Если окружность должна включать все вершины - то надо рассмотреть n-2 треугольников. Радиусы и центры описанных окружностей должны совпадать.


 
antonn ©   (2006-05-14 19:05) [17]

минимально возможный радиус, как я понял.


 
MasteR2 ©   (2006-05-14 19:16) [18]

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


 
antonn ©   (2006-05-14 19:43) [19]

не, не так:
canvas.ellipce(х-radiusX,у-radiusY,х+radiusX,у+radiusY);
:)


 
MasteR2 ©   (2006-05-14 21:07) [20]

Спасибо! Остался единственный тупик - найти Y. Где (X,Y) - центр окружности, центр самой длинной линии многоугольника. X находится через габаритный прямоугольник


 
Eraser ©   (2006-05-15 00:48) [21]


> MasteR2 ©   (14.05.06 21:07) [20]

а что не понятного то? Y - середина "габаритного" прямоугольника.


 
MasteR2 ©   (2006-05-15 06:49) [22]


> Eraser

Не-не, это не так



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
15-1145908110
Fedor
2006-04-24 23:48
2006.05.28
удаленная работа для Delphi программиста


15-1146657828
alxx
2006-05-03 16:03
2006.05.28
Нужен программист в СПб на неполный (удаленка) рабочий день


15-1146506042
БарЛог
2006-05-01 21:54
2006.05.28
Технический англо-русский словарь


15-1145595332
MBo
2006-04-21 08:55
2006.05.28
Пятничные задачки для программистов.


15-1146326262
Adil
2006-04-29 19:57
2006.05.28
Драйвера для ВебКвмеры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский