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

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

Точка внутри замкнутого контура [D5, Win2k]


Ivan Voronov ©   (2003-10-15 14:11:00) 

Уважаемые коллеги!

Подскажите алгоритм нахождения точки внутри замкнутого контура, заданного отрезками и дугами.

Или подскажите прямое решение:
Нужно закрасить замкнутую область, заданную отрезками и дугами.

Заранее бгагодарен,
Иван.

Заранее спасибо,
Иван.


Ivan Voronov   (2003-10-15 15:35:00) [1]

2MBo:
>можно рисовать в Beginpath-EndPath, затем закрасить Pаth >непосредственно, или преобразовав его в регион

Спасибо,
попробую...


Nikolay M.   (2003-10-15 14:59:00) [2]


> Ivan Voronov (15.10.03 14:44) [5]
> >проверить каждую из точек на принадлежность области, если
> КАК???

Алгоритмы на то существуют разные. Поскольку область, как я понимаю, произвольна, т.е. не обязательно выпукла, тогда можно так: от данной точки проводишь отрезок к первой и второй вершинам, считаешь угол между ними, проводишь отрезок к 3-й вершине, считаешь угол между этим отрезком и отрезком до 2-й вершины и тд, всего N углов, где N - кол-во вершин. Если голова варит, значит сообразишь, чему должна быть равно сумма все углов, когда точка внутри контура и чему - когда снаружи. Естественно, дуги нужно заменить на последовательность отрезков.


BOA_KAA   (2003-10-15 14:54:00) [3]

http://algolist.manual.ru/maths/geom/datastruct.php

Там, кажется, было. Если нет, то см. Шикин, Боресков "Компьютерная графика. Полигональные модели."

Я бы дал реализацию, но пока еще она немного глючит :(


MBo   (2003-10-15 14:48:00) [4]

можно рисовать в Beginpath-EndPath, затем закрасить Pаth непосредственно, или преобразовав его в регион


Ivan Voronov   (2003-10-15 14:44:00) [5]

2Nikolay M.:
>проверить каждую из точек на принадлежность области, если
КАК???


Ivan Voronov   (2003-10-15 14:42:00) [6]

2Mbo:
Есть контур из отрезков и дуг.
я полагаю:
1. Найти точку внутри контура.
2. закрасить с помощью FloodFill.


Nikolay M.   (2003-10-15 14:40:00) [7]


> алгоритм нахождения точки внутри замкнутого контура

Вокруг одной из вершин нарисовать окружность, диаметр которой меньше составляющих отрезков и дуг. Разделить окружность точками на 4 части, проверить каждую из точек на принадлежность области, если ни одна не принадлежит, каждую четверть окружности разделить еще пополам и так до тех пор, пока на окружности не найдется точка внутри области.


MBo   (2003-10-15 14:16:00) [8]

кстати - задача алгоритм составить или просто закрасить? если второе - ExtFloodFill или TCanvas.FloodFill


MBo   (2003-10-15 14:14:00) [9]

поиск в инете по словам - "Закраска (замкнутых) областей"


Наверх

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