Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.018 c
14-53709
Master_sx
2004-01-23 17:43
2004.02.17
Вопрос по Delphi


1-53526
denis24
2004-02-04 20:39
2004.02.17
цвет курсора в listbox


1-53578
Norfolk
2004-02-07 12:19
2004.02.17
Генератор случайных чисел


3-53370
iov
2004-01-19 12:40
2004.02.17
Параметры в Query


1-53638
bespasian
2004-02-06 17:18
2004.02.17
Выделить строку другим цветом в DBGrid.