![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Точка внутри замкнутого контура [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]
поиск в инете по словам - "Закраска (замкнутых) областей"