Вниз
Скачать: CL | DM;

Точка внутри замкнутого контура   Найти похожие ветки 

← →
Ivan Voronov   (2003-10-15 14:11) [0]

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

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

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

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

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


← →
MBo ©   (2003-10-15 14:14) [1]

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


← →
MBo ©   (2003-10-15 14:16) [2]

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


← →
Nikolay M. ©   (2003-10-15 14:40) [3]


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

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


← →
Ivan Voronov   (2003-10-15 14:42) [4]

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


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

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


← →
MBo ©   (2003-10-15 14:48) [6]

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


← →
BOA_KAA ©   (2003-10-15 14:54) [7]

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

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

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


← →
Nikolay M. ©   (2003-10-15 14:59) [8]


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

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


← →
Ivan Voronov   (2003-10-15 15:35) [9]

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

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



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
3-53359
Fom
2004-01-28 12:29
2004.02.17
Как в FB переименовать таблицу с данными?


8-53646
kvp
2003-10-20 12:52
2004.02.17
Повернуть элипс на произвольный угол


1-53471
Creator
2004-02-06 13:37
2004.02.17
Как зделать процес System ???


14-53771
Kerk
2004-01-27 14:25
2004.02.17
Merak Mail Server


3-53396
coder
2004-01-27 07:16
2004.02.17
DBGrid




   Наверх